BuddyPress - Version 2.7.4

Version Description

See: https://codex.buddypress.org/releases/version-2-7-4/

Download this release

Release Info

Developer DJPaul
Plugin Icon 128x128 BuddyPress
Version 2.7.4
Comparing to
See all releases

Code changes from version 2.6.3 to 2.7.4

Files changed (301) hide show
  1. bp-activity/bp-activity-actions.php +1 -40
  2. bp-activity/bp-activity-akismet.php +23 -0
  3. bp-activity/bp-activity-cache.php +21 -0
  4. bp-activity/bp-activity-filters.php +15 -11
  5. bp-activity/bp-activity-functions.php +232 -52
  6. bp-activity/bp-activity-loader.php +1 -1
  7. bp-activity/bp-activity-notifications.php +23 -225
  8. bp-activity/bp-activity-screens.php +1 -1
  9. bp-activity/bp-activity-template.php +11 -11
  10. bp-activity/classes/class-bp-activity-activity.php +24 -2
  11. bp-activity/classes/class-bp-activity-component.php +11 -16
  12. bp-activity/classes/class-bp-activity-list-table.php +20 -2
  13. bp-activity/js/mentions.min.js +1 -1
  14. bp-blogs/bp-blogs-activity.php +1 -1
  15. bp-blogs/bp-blogs-filters.php +14 -0
  16. bp-blogs/bp-blogs-functions.php +20 -0
  17. bp-blogs/bp-blogs-loader.php +2 -0
  18. bp-blogs/bp-blogs-template.php +97 -22
  19. bp-blogs/classes/class-bp-blogs-blog.php +33 -10
  20. bp-blogs/classes/class-bp-blogs-component.php +6 -1
  21. bp-core/admin/bp-core-admin-components.php +1 -0
  22. bp-core/admin/bp-core-admin-functions.php +233 -0
  23. bp-core/admin/bp-core-admin-schema.php +13 -26
  24. bp-core/admin/bp-core-admin-slugs.php +11 -3
  25. bp-core/admin/bp-core-admin-tools.php +20 -29
  26. bp-core/admin/css/common-rtl.css +220 -79
  27. bp-core/admin/css/common-rtl.min.css +1 -1
  28. bp-core/admin/css/common.css +220 -79
  29. bp-core/admin/css/common.min.css +1 -1
  30. bp-core/admin/images/activity-embeds.png +0 -0
  31. bp-core/admin/images/default-themes.png +0 -0
  32. bp-core/admin/images/group-type-pop.png +0 -0
  33. bp-core/admin/images/new-nav-api.png +0 -0
  34. bp-core/admin/images/user-frontpage.png +0 -0
  35. bp-core/admin/js/dismissible-admin-notices.js +16 -0
  36. bp-core/admin/js/dismissible-admin-notices.min.js +1 -0
  37. bp-core/bp-core-actions.php +11 -4
  38. bp-core/bp-core-admin.php +27 -19
  39. bp-core/bp-core-attachments.php +8 -6
  40. bp-core/bp-core-avatars.php +24 -32
  41. bp-core/bp-core-buddybar.php +11 -11
  42. bp-core/bp-core-cache.php +107 -0
  43. bp-core/bp-core-caps.php +65 -20
  44. bp-core/bp-core-catchuri.php +71 -20
  45. bp-core/bp-core-classes.php +1 -0
  46. bp-core/bp-core-cssjs.php +145 -20
  47. bp-core/bp-core-customizer-email.php +3 -5
  48. bp-core/bp-core-dependency.php +0 -27
  49. bp-core/bp-core-filters.php +53 -43
  50. bp-core/bp-core-functions.php +405 -52
  51. bp-core/bp-core-loader.php +1 -3
  52. bp-core/bp-core-options.php +21 -61
  53. bp-core/bp-core-taxonomy.php +113 -5
  54. bp-core/bp-core-template-loader.php +5 -1
  55. bp-core/bp-core-template.php +77 -8
  56. bp-core/bp-core-theme-compatibility.php +11 -9
  57. bp-core/bp-core-update.php +109 -24
  58. bp-core/bp-core-wpabstraction.php +0 -7
  59. bp-core/classes/class-bp-admin.php +140 -97
  60. bp-core/classes/class-bp-attachment-avatar.php +1 -4
  61. bp-core/classes/class-bp-attachment.php +12 -12
  62. bp-core/classes/class-bp-button.php +231 -76
  63. bp-core/classes/class-bp-core-html-element.php +127 -0
  64. bp-core/classes/class-bp-core-nav.php +15 -15
  65. bp-core/classes/class-bp-core-oembed-extension.php +21 -15
  66. bp-core/classes/class-bp-core-user.php +17 -0
  67. bp-core/classes/class-bp-theme-compat.php +1 -1
  68. bp-core/classes/class-bp-user-query.php +11 -4
  69. bp-core/css/admin-bar-rtl.css +13 -0
  70. bp-core/css/admin-bar-rtl.min.css +1 -1
  71. bp-core/css/admin-bar.css +13 -0
  72. bp-core/css/admin-bar.min.css +1 -1
  73. bp-core/css/avatar-rtl.css +15 -1
  74. bp-core/css/avatar-rtl.min.css +1 -1
  75. bp-core/css/avatar.css +15 -1
  76. bp-core/css/avatar.min.css +1 -1
  77. bp-core/deprecated/2.7.php +26 -0
  78. bp-core/js/bp-plupload.min.js +1 -1
  79. bp-core/js/confirm.min.js +1 -1
  80. bp-core/js/jquery.atwho.min.js +0 -1
  81. bp-core/js/{jquery-cookie.js → vendor/jquery-cookie.js} +0 -0
  82. bp-core/js/{jquery-cookie.min.js → vendor/jquery-cookie.min.js} +1 -1
  83. bp-core/js/{jquery-scroll-to.js → vendor/jquery-scroll-to.js} +0 -0
  84. bp-core/js/{jquery-scroll-to.min.js → vendor/jquery-scroll-to.min.js} +1 -1
  85. bp-core/js/{jquery.atwho.js → vendor/jquery.atwho.js} +0 -0
  86. bp-core/js/vendor/jquery.atwho.min.js +1 -0
  87. bp-core/js/{jquery.atwho.txt → vendor/jquery.atwho.txt} +0 -0
  88. bp-core/js/{jquery.caret.js → vendor/jquery.caret.js} +0 -0
  89. bp-core/js/{jquery.caret.min.js → vendor/jquery.caret.min.js} +1 -1
  90. bp-core/js/{jquery.caret.txt → vendor/jquery.caret.txt} +0 -0
  91. bp-core/js/vendor/livestamp.js +129 -0
  92. bp-core/js/vendor/livestamp.min.js +1 -0
  93. bp-core/js/vendor/moment-js/locale/af.js +73 -0
  94. bp-core/js/vendor/moment-js/locale/af.min.js +1 -0
  95. bp-core/js/vendor/moment-js/locale/ar-ly.js +122 -0
  96. bp-core/js/vendor/moment-js/locale/ar-ly.min.js +1 -0
  97. bp-core/js/vendor/moment-js/locale/ar-ma.js +60 -0
  98. bp-core/js/vendor/moment-js/locale/ar-ma.min.js +1 -0
  99. bp-core/js/vendor/moment-js/locale/ar-sa.js +104 -0
  100. bp-core/js/vendor/moment-js/locale/ar-sa.min.js +1 -0
  101. bp-core/js/vendor/moment-js/locale/ar-tn.js +59 -0
  102. bp-core/js/vendor/moment-js/locale/ar-tn.min.js +1 -0
  103. bp-core/js/vendor/moment-js/locale/ar.js +137 -0
  104. bp-core/js/vendor/moment-js/locale/ar.min.js +1 -0
  105. bp-core/js/vendor/moment-js/locale/az.js +105 -0
  106. bp-core/js/vendor/moment-js/locale/az.min.js +1 -0
  107. bp-core/js/vendor/moment-js/locale/be.js +134 -0
  108. bp-core/js/vendor/moment-js/locale/be.min.js +1 -0
  109. bp-core/js/vendor/moment-js/locale/bg.js +90 -0
  110. bp-core/js/vendor/moment-js/locale/bg.min.js +1 -0
  111. bp-core/js/vendor/moment-js/locale/bn.js +119 -0
  112. bp-core/js/vendor/moment-js/locale/bn.min.js +1 -0
  113. bp-core/js/vendor/moment-js/locale/bo.js +119 -0
  114. bp-core/js/vendor/moment-js/locale/bo.min.js +1 -0
  115. bp-core/js/vendor/moment-js/locale/br.js +108 -0
  116. bp-core/js/vendor/moment-js/locale/br.min.js +1 -0
  117. bp-core/js/vendor/moment-js/locale/bs.js +143 -0
  118. bp-core/js/vendor/moment-js/locale/bs.min.js +1 -0
  119. bp-core/js/vendor/moment-js/locale/ca.js +81 -0
  120. bp-core/js/vendor/moment-js/locale/ca.min.js +1 -0
  121. bp-core/js/vendor/moment-js/locale/cs.js +172 -0
  122. bp-core/js/vendor/moment-js/locale/cs.min.js +1 -0
  123. bp-core/js/vendor/moment-js/locale/cv.js +63 -0
  124. bp-core/js/vendor/moment-js/locale/cv.min.js +1 -0
  125. bp-core/js/vendor/moment-js/locale/cy.js +81 -0
  126. bp-core/js/vendor/moment-js/locale/cy.min.js +1 -0
  127. bp-core/js/vendor/moment-js/locale/da.js +60 -0
  128. bp-core/js/vendor/moment-js/locale/da.min.js +1 -0
  129. bp-core/js/vendor/moment-js/locale/de-at.js +79 -0
  130. bp-core/js/vendor/moment-js/locale/de-at.min.js +1 -0
  131. bp-core/js/vendor/moment-js/locale/de.js +78 -0
  132. bp-core/js/vendor/moment-js/locale/de.min.js +1 -0
  133. bp-core/js/vendor/moment-js/locale/dv.js +99 -0
  134. bp-core/js/vendor/moment-js/locale/dv.min.js +1 -0
  135. bp-core/js/vendor/moment-js/locale/el.js +98 -0
  136. bp-core/js/vendor/moment-js/locale/el.min.js +1 -0
  137. bp-core/js/vendor/moment-js/locale/en-au.js +67 -0
  138. bp-core/js/vendor/moment-js/locale/en-au.min.js +1 -0
  139. bp-core/js/vendor/moment-js/locale/en-ca.js +63 -0
  140. bp-core/js/vendor/moment-js/locale/en-ca.min.js +1 -0
  141. bp-core/js/vendor/moment-js/locale/en-gb.js +67 -0
  142. bp-core/js/vendor/moment-js/locale/en-gb.min.js +1 -0
  143. bp-core/js/vendor/moment-js/locale/en-ie.js +67 -0
  144. bp-core/js/vendor/moment-js/locale/en-ie.min.js +1 -0
  145. bp-core/js/vendor/moment-js/locale/en-nz.js +67 -0
  146. bp-core/js/vendor/moment-js/locale/en-nz.min.js +1 -0
  147. bp-core/js/vendor/moment-js/locale/eo.js +73 -0
  148. bp-core/js/vendor/moment-js/locale/eo.min.js +1 -0
  149. bp-core/js/vendor/moment-js/locale/es-do.js +80 -0
  150. bp-core/js/vendor/moment-js/locale/es-do.min.js +1 -0
  151. bp-core/js/vendor/moment-js/locale/es.js +81 -0
  152. bp-core/js/vendor/moment-js/locale/es.min.js +1 -0
  153. bp-core/js/vendor/moment-js/locale/et.js +80 -0
  154. bp-core/js/vendor/moment-js/locale/et.min.js +1 -0
  155. bp-core/js/vendor/moment-js/locale/eu.js +66 -0
  156. bp-core/js/vendor/moment-js/locale/eu.min.js +1 -0
  157. bp-core/js/vendor/moment-js/locale/fa.js +106 -0
  158. bp-core/js/vendor/moment-js/locale/fa.min.js +1 -0
  159. bp-core/js/vendor/moment-js/locale/fi.js +107 -0
  160. bp-core/js/vendor/moment-js/locale/fi.min.js +1 -0
  161. bp-core/js/vendor/moment-js/locale/fo.js +60 -0
  162. bp-core/js/vendor/moment-js/locale/fo.min.js +1 -0
  163. bp-core/js/vendor/moment-js/locale/fr-ca.js +60 -0
  164. bp-core/js/vendor/moment-js/locale/fr-ca.min.js +1 -0
  165. bp-core/js/vendor/moment-js/locale/fr-ch.js +64 -0
  166. bp-core/js/vendor/moment-js/locale/fr-ch.min.js +1 -0
  167. bp-core/js/vendor/moment-js/locale/fr.js +64 -0
  168. bp-core/js/vendor/moment-js/locale/fr.min.js +1 -0
  169. bp-core/js/vendor/moment-js/locale/fy.js +73 -0
  170. bp-core/js/vendor/moment-js/locale/fy.min.js +1 -0
  171. bp-core/js/vendor/moment-js/locale/gd.js +76 -0
  172. bp-core/js/vendor/moment-js/locale/gd.min.js +1 -0
  173. bp-core/js/vendor/moment-js/locale/gl.js +77 -0
  174. bp-core/js/vendor/moment-js/locale/gl.min.js +1 -0
  175. bp-core/js/vendor/moment-js/locale/he.js +99 -0
  176. bp-core/js/vendor/moment-js/locale/he.min.js +1 -0
  177. bp-core/js/vendor/moment-js/locale/hi.js +124 -0
  178. bp-core/js/vendor/moment-js/locale/hi.min.js +1 -0
  179. bp-core/js/vendor/moment-js/locale/hr.js +145 -0
  180. bp-core/js/vendor/moment-js/locale/hr.min.js +1 -0
  181. bp-core/js/vendor/moment-js/locale/hu.js +109 -0
  182. bp-core/js/vendor/moment-js/locale/hu.min.js +1 -0
  183. bp-core/js/vendor/moment-js/locale/hy-am.js +95 -0
  184. bp-core/js/vendor/moment-js/locale/hy-am.min.js +1 -0
  185. bp-core/js/vendor/moment-js/locale/id.js +83 -0
  186. bp-core/js/vendor/moment-js/locale/id.min.js +1 -0
  187. bp-core/js/vendor/moment-js/locale/is.js +127 -0
  188. bp-core/js/vendor/moment-js/locale/is.min.js +1 -0
  189. bp-core/js/vendor/moment-js/locale/it.js +70 -0
  190. bp-core/js/vendor/moment-js/locale/it.min.js +1 -0
  191. bp-core/js/vendor/moment-js/locale/ja.js +76 -0
  192. bp-core/js/vendor/moment-js/locale/ja.min.js +1 -0
  193. bp-core/js/vendor/moment-js/locale/jv.js +83 -0
  194. bp-core/js/vendor/moment-js/locale/jv.min.js +1 -0
  195. bp-core/js/vendor/moment-js/locale/ka.js +89 -0
  196. bp-core/js/vendor/moment-js/locale/ka.min.js +1 -0
  197. bp-core/js/vendor/moment-js/locale/kk.js +87 -0
  198. bp-core/js/vendor/moment-js/locale/kk.min.js +1 -0
  199. bp-core/js/vendor/moment-js/locale/km.js +58 -0
  200. bp-core/js/vendor/moment-js/locale/km.min.js +1 -0
  201. bp-core/js/vendor/moment-js/locale/ko.js +65 -0
  202. bp-core/js/vendor/moment-js/locale/ko.min.js +1 -0
  203. bp-core/js/vendor/moment-js/locale/ky.js +88 -0
  204. bp-core/js/vendor/moment-js/locale/ky.min.js +1 -0
  205. bp-core/js/vendor/moment-js/locale/lb.js +137 -0
  206. bp-core/js/vendor/moment-js/locale/lb.min.js +1 -0
  207. bp-core/js/vendor/moment-js/locale/lo.js +70 -0
  208. bp-core/js/vendor/moment-js/locale/lo.min.js +1 -0
  209. bp-core/js/vendor/moment-js/locale/lt.js +117 -0
  210. bp-core/js/vendor/moment-js/locale/lt.min.js +1 -0
  211. bp-core/js/vendor/moment-js/locale/lv.js +97 -0
  212. bp-core/js/vendor/moment-js/locale/lv.min.js +1 -0
  213. bp-core/js/vendor/moment-js/locale/me.js +111 -0
  214. bp-core/js/vendor/moment-js/locale/me.min.js +1 -0
  215. bp-core/js/vendor/moment-js/locale/mi.js +64 -0
  216. bp-core/js/vendor/moment-js/locale/mi.min.js +1 -0
  217. bp-core/js/vendor/moment-js/locale/mk.js +90 -0
  218. bp-core/js/vendor/moment-js/locale/mk.min.js +1 -0
  219. bp-core/js/vendor/moment-js/locale/ml.js +81 -0
  220. bp-core/js/vendor/moment-js/locale/ml.min.js +1 -0
  221. bp-core/js/vendor/moment-js/locale/mr.js +159 -0
  222. bp-core/js/vendor/moment-js/locale/mr.min.js +1 -0
  223. bp-core/js/vendor/moment-js/locale/ms-my.js +83 -0
  224. bp-core/js/vendor/moment-js/locale/ms-my.min.js +1 -0
  225. bp-core/js/vendor/moment-js/locale/ms.js +82 -0
  226. bp-core/js/vendor/moment-js/locale/ms.min.js +1 -0
  227. bp-core/js/vendor/moment-js/locale/my.js +95 -0
  228. bp-core/js/vendor/moment-js/locale/my.min.js +1 -0
  229. bp-core/js/vendor/moment-js/locale/nb.js +63 -0
  230. bp-core/js/vendor/moment-js/locale/nb.min.js +1 -0
  231. bp-core/js/vendor/moment-js/locale/ne.js +123 -0
  232. bp-core/js/vendor/moment-js/locale/ne.min.js +1 -0
  233. bp-core/js/vendor/moment-js/locale/nl.js +86 -0
  234. bp-core/js/vendor/moment-js/locale/nl.min.js +1 -0
  235. bp-core/js/vendor/moment-js/locale/nn.js +60 -0
  236. bp-core/js/vendor/moment-js/locale/nn.min.js +1 -0
  237. bp-core/js/vendor/moment-js/locale/pa-in.js +124 -0
  238. bp-core/js/vendor/moment-js/locale/pa-in.min.js +1 -0
  239. bp-core/js/vendor/moment-js/locale/pl.js +105 -0
  240. bp-core/js/vendor/moment-js/locale/pl.min.js +1 -0
  241. bp-core/js/vendor/moment-js/locale/pt-br.js +61 -0
  242. bp-core/js/vendor/moment-js/locale/pt-br.min.js +1 -0
  243. bp-core/js/vendor/moment-js/locale/pt.js +65 -0
  244. bp-core/js/vendor/moment-js/locale/pt.min.js +1 -0
  245. bp-core/js/vendor/moment-js/locale/ro.js +75 -0
  246. bp-core/js/vendor/moment-js/locale/ro.min.js +1 -0
  247. bp-core/js/vendor/moment-js/locale/ru.js +183 -0
  248. bp-core/js/vendor/moment-js/locale/ru.min.js +1 -0
  249. bp-core/js/vendor/moment-js/locale/se.js +61 -0
  250. bp-core/js/vendor/moment-js/locale/se.min.js +1 -0
  251. bp-core/js/vendor/moment-js/locale/si.js +71 -0
  252. bp-core/js/vendor/moment-js/locale/si.min.js +1 -0
  253. bp-core/js/vendor/moment-js/locale/sk.js +150 -0
  254. bp-core/js/vendor/moment-js/locale/sk.min.js +1 -0
  255. bp-core/js/vendor/moment-js/locale/sl.js +162 -0
  256. bp-core/js/vendor/moment-js/locale/sl.min.js +1 -0
  257. bp-core/js/vendor/moment-js/locale/sq.js +70 -0
  258. bp-core/js/vendor/moment-js/locale/sq.min.js +1 -0
  259. bp-core/js/vendor/moment-js/locale/sr-cyrl.js +110 -0
  260. bp-core/js/vendor/moment-js/locale/sr-cyrl.min.js +1 -0
  261. bp-core/js/vendor/moment-js/locale/sr.js +110 -0
  262. bp-core/js/vendor/moment-js/locale/sr.min.js +1 -0
  263. bp-core/js/vendor/moment-js/locale/ss.js +89 -0
  264. bp-core/js/vendor/moment-js/locale/ss.min.js +1 -0
  265. bp-core/js/vendor/moment-js/locale/sv.js +69 -0
  266. bp-core/js/vendor/moment-js/locale/sv.min.js +1 -0
  267. bp-core/js/vendor/moment-js/locale/sw.js +59 -0
  268. bp-core/js/vendor/moment-js/locale/sw.min.js +1 -0
  269. bp-core/js/vendor/moment-js/locale/ta.js +129 -0
  270. bp-core/js/vendor/moment-js/locale/ta.min.js +1 -0
  271. bp-core/js/vendor/moment-js/locale/te.js +89 -0
  272. bp-core/js/vendor/moment-js/locale/te.min.js +1 -0
  273. bp-core/js/vendor/moment-js/locale/th.js +67 -0
  274. bp-core/js/vendor/moment-js/locale/th.min.js +1 -0
  275. bp-core/js/vendor/moment-js/locale/tl-ph.js +62 -0
  276. bp-core/js/vendor/moment-js/locale/tl-ph.min.js +1 -0
  277. bp-core/js/vendor/moment-js/locale/tlh.js +120 -0
  278. bp-core/js/vendor/moment-js/locale/tlh.min.js +1 -0
  279. bp-core/js/vendor/moment-js/locale/tr.js +90 -0
  280. bp-core/js/vendor/moment-js/locale/tr.min.js +1 -0
  281. bp-core/js/vendor/moment-js/locale/tzl.js +91 -0
  282. bp-core/js/vendor/moment-js/locale/tzl.min.js +1 -0
  283. bp-core/js/vendor/moment-js/locale/tzm-latn.js +58 -0
  284. bp-core/js/vendor/moment-js/locale/tzm-latn.min.js +1 -0
  285. bp-core/js/vendor/moment-js/locale/tzm.js +58 -0
  286. bp-core/js/vendor/moment-js/locale/tzm.min.js +1 -0
  287. bp-core/js/vendor/moment-js/locale/uk.js +146 -0
  288. bp-core/js/vendor/moment-js/locale/uk.min.js +1 -0
  289. bp-core/js/vendor/moment-js/locale/uz.js +58 -0
  290. bp-core/js/vendor/moment-js/locale/uz.min.js +1 -0
  291. bp-core/js/vendor/moment-js/locale/vi.js +79 -0
  292. bp-core/js/vendor/moment-js/locale/vi.min.js +1 -0
  293. bp-core/js/vendor/moment-js/locale/x-pseudo.js +68 -0
  294. bp-core/js/vendor/moment-js/locale/x-pseudo.min.js +1 -0
  295. bp-core/js/vendor/moment-js/locale/zh-cn.js +127 -0
  296. bp-core/js/vendor/moment-js/locale/zh-cn.min.js +1 -0
  297. bp-core/js/vendor/moment-js/locale/zh-hk.js +105 -0
  298. bp-core/js/vendor/moment-js/locale/zh-hk.min.js +1 -0
  299. bp-core/js/vendor/moment-js/locale/zh-tw.js +104 -0
  300. bp-core/js/vendor/moment-js/locale/zh-tw.min.js +1 -0
  301. bp-core/js/vendor/moment-js/moment.js +269 -0
bp-activity/bp-activity-actions.php CHANGED
@@ -71,7 +71,7 @@ function bp_activity_action_permalink_router() {
71
  } else {
72
 
73
  // Set redirect to group activity stream.
74
- if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) {
75
  $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/';
76
  }
77
  }
@@ -604,45 +604,6 @@ function bp_activity_action_favorites_feed() {
604
  }
605
  add_action( 'bp_actions', 'bp_activity_action_favorites_feed' );
606
 
607
- /**
608
- * Loads Akismet filtering for activity.
609
- *
610
- * @since 1.6.0
611
- * @since 2.3.0 We only support Akismet 3+.
612
- */
613
- function bp_activity_setup_akismet() {
614
- $bp = buddypress();
615
-
616
- // Bail if Akismet is not active.
617
- if ( ! defined( 'AKISMET_VERSION' ) ) {
618
- return;
619
- }
620
-
621
- // Bail if older version of Akismet.
622
- if ( ! class_exists( 'Akismet' ) ) {
623
- return;
624
- }
625
-
626
- // Bail if no Akismet key is set.
627
- if ( ! bp_get_option( 'wordpress_api_key' ) && ! defined( 'WPCOM_API_KEY' ) ) {
628
- return;
629
- }
630
-
631
- /**
632
- * Filters if BuddyPress Activity Akismet support has been disabled by another plugin.
633
- *
634
- * @since 1.6.0
635
- *
636
- * @param bool $value Return value of bp_is_akismet_active boolean function.
637
- */
638
- if ( ! apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
639
- return;
640
- }
641
-
642
- // Instantiate Akismet for BuddyPress.
643
- $bp->activity->akismet = new BP_Akismet();
644
- }
645
-
646
  /**
647
  * AJAX endpoint for Suggestions API lookups.
648
  *
71
  } else {
72
 
73
  // Set redirect to group activity stream.
74
+ if ( $group = groups_get_group( $activity->item_id ) ) {
75
  $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/';
76
  }
77
  }
604
  }
605
  add_action( 'bp_actions', 'bp_activity_action_favorites_feed' );
606
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  /**
608
  * AJAX endpoint for Suggestions API lookups.
609
  *
bp-activity/bp-activity-akismet.php CHANGED
@@ -14,6 +14,29 @@ if ( ! buddypress()->do_autoload ) {
14
  require dirname( __FILE__ ) . '/classes/class-bp-akismet.php';
15
  }
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  /**
18
  * Delete old spam activity meta data.
19
  *
14
  require dirname( __FILE__ ) . '/classes/class-bp-akismet.php';
15
  }
16
 
17
+ /**
18
+ * Loads Akismet filtering for activity.
19
+ *
20
+ * @since 1.6.0
21
+ * @since 2.3.0 We only support Akismet 3+.
22
+ */
23
+ function bp_activity_setup_akismet() {
24
+ /**
25
+ * Filters if BuddyPress Activity Akismet support has been disabled by another plugin.
26
+ *
27
+ * @since 1.6.0
28
+ *
29
+ * @param bool $value Return value of bp_is_akismet_active boolean function.
30
+ */
31
+ if ( ! apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
32
+ return;
33
+ }
34
+
35
+ // Instantiate Akismet for BuddyPress.
36
+ buddypress()->activity->akismet = new BP_Akismet();
37
+ }
38
+ add_action( 'bp_activity_setup_globals', 'bp_activity_setup_akismet' );
39
+
40
  /**
41
  * Delete old spam activity meta data.
42
  *
bp-activity/bp-activity-cache.php CHANGED
@@ -63,3 +63,24 @@ function bp_activity_clear_cache_for_deleted_activity( $deleted_ids ) {
63
  }
64
  }
65
  add_action( 'bp_activity_deleted_activities', 'bp_activity_clear_cache_for_deleted_activity' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
64
  }
65
  add_action( 'bp_activity_deleted_activities', 'bp_activity_clear_cache_for_deleted_activity' );
66
+
67
+ /**
68
+ * Reset cache incrementor for the Activity component.
69
+ *
70
+ * Called whenever an activity item is created, updated, or deleted, this
71
+ * function effectively invalidates all cached results of activity queries.
72
+ *
73
+ * @since 2.7.0
74
+ *
75
+ * @return bool True on success, false on failure.
76
+ */
77
+ function bp_activity_reset_cache_incrementor() {
78
+ $without_last_activity = bp_core_reset_incrementor( 'bp_activity' );
79
+ $with_last_activity = bp_core_reset_incrementor( 'bp_activity_with_last_activity' );
80
+ return $without_last_activity && $with_last_activity;
81
+ }
82
+ add_action( 'bp_activity_delete', 'bp_activity_reset_cache_incrementor' );
83
+ add_action( 'bp_activity_add', 'bp_activity_reset_cache_incrementor' );
84
+ add_action( 'added_activity_meta', 'bp_activity_reset_cache_incrementor' );
85
+ add_action( 'updated_activity_meta', 'bp_activity_reset_cache_incrementor' );
86
+ add_action( 'deleted_activity_meta', 'bp_activity_reset_cache_incrementor' );
bp-activity/bp-activity-filters.php CHANGED
@@ -207,13 +207,15 @@ function bp_activity_filter_kses( $content ) {
207
  global $allowedtags;
208
 
209
  $activity_allowedtags = $allowedtags;
210
- $activity_allowedtags['a']['class'] = array();
211
- $activity_allowedtags['a']['id'] = array();
212
- $activity_allowedtags['a']['rel'] = array();
213
- $activity_allowedtags['a']['title'] = array();
214
- $activity_allowedtags['b'] = array();
215
- $activity_allowedtags['code'] = array();
216
- $activity_allowedtags['i'] = array();
 
 
217
  $activity_allowedtags['img'] = array();
218
  $activity_allowedtags['img']['src'] = array();
219
  $activity_allowedtags['img']['alt'] = array();
@@ -222,8 +224,10 @@ function bp_activity_filter_kses( $content ) {
222
  $activity_allowedtags['img']['class'] = array();
223
  $activity_allowedtags['img']['id'] = array();
224
  $activity_allowedtags['img']['title'] = array();
225
- $activity_allowedtags['span'] = array();
226
- $activity_allowedtags['span']['class'] = array();
 
 
227
 
228
 
229
  /**
@@ -278,7 +282,7 @@ function bp_activity_at_name_filter( $content, $activity_id = 0 ) {
278
 
279
  // Linkify the mentions with the username.
280
  foreach ( (array) $usernames as $user_id => $username ) {
281
- $content = preg_replace( '/(@' . $username . '\b)/', "<a href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $content );
282
  }
283
 
284
  // Put everything back.
@@ -319,7 +323,7 @@ function bp_activity_at_name_filter_updates( $activity ) {
319
  if ( ! empty( $usernames ) ) {
320
  // Replace @mention text with userlinks.
321
  foreach( (array) $usernames as $user_id => $username ) {
322
- $activity->content = preg_replace( '/(@' . $username . '\b)/', "<a href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $activity->content );
323
  }
324
 
325
  // Add our hook to send @mention emails after the activity item is saved.
207
  global $allowedtags;
208
 
209
  $activity_allowedtags = $allowedtags;
210
+ $activity_allowedtags['a']['class'] = array();
211
+ $activity_allowedtags['a']['id'] = array();
212
+ $activity_allowedtags['a']['rel'] = array();
213
+ $activity_allowedtags['a']['title'] = array();
214
+
215
+ $activity_allowedtags['b'] = array();
216
+ $activity_allowedtags['code'] = array();
217
+ $activity_allowedtags['i'] = array();
218
+
219
  $activity_allowedtags['img'] = array();
220
  $activity_allowedtags['img']['src'] = array();
221
  $activity_allowedtags['img']['alt'] = array();
224
  $activity_allowedtags['img']['class'] = array();
225
  $activity_allowedtags['img']['id'] = array();
226
  $activity_allowedtags['img']['title'] = array();
227
+
228
+ $activity_allowedtags['span'] = array();
229
+ $activity_allowedtags['span']['class'] = array();
230
+ $activity_allowedtags['span']['data-livestamp'] = array();
231
 
232
 
233
  /**
282
 
283
  // Linkify the mentions with the username.
284
  foreach ( (array) $usernames as $user_id => $username ) {
285
+ $content = preg_replace( '/(@' . $username . '\b)/', "<a class='bp-suggestions-mention' href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $content );
286
  }
287
 
288
  // Put everything back.
323
  if ( ! empty( $usernames ) ) {
324
  // Replace @mention text with userlinks.
325
  foreach( (array) $usernames as $user_id => $username ) {
326
+ $activity->content = preg_replace( '/(@' . $username . '\b)/', "<a class='bp-suggestions-mention' href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $activity->content );
327
  }
328
 
329
  // Add our hook to send @mention emails after the activity item is saved.
bp-activity/bp-activity-functions.php CHANGED
@@ -1663,56 +1663,28 @@ function bp_activity_get( $args = '' ) {
1663
  * );
1664
  */
1665
  'filter' => array()
1666
- ) );
1667
-
1668
- // Attempt to return a cached copy of the first page of sitewide activity.
1669
- if ( ( 1 === (int) $r['page'] ) && empty( $r['max'] ) && ( 'all' === $r['fields'] ) && empty( $r['search_terms'] ) && empty( $r['meta_query'] ) && empty( $r['date_query'] ) && empty( $r['filter_query'] ) && empty( $r['filter'] ) && empty( $r['scope'] )&& empty( $r['exclude'] ) && empty( $r['in'] ) && ( 'DESC' === $r['sort'] ) && empty( $r['exclude'] ) && ( 'ham_only' === $r['spam'] ) ) {
1670
-
1671
- $activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' );
1672
- if ( false === $activity ) {
1673
-
1674
- $activity = BP_Activity_Activity::get( array(
1675
- 'page' => $r['page'],
1676
- 'per_page' => $r['per_page'],
1677
- 'max' => $r['max'],
1678
- 'fields' => $r['fields'],
1679
- 'sort' => $r['sort'],
1680
- 'search_terms' => $r['search_terms'],
1681
- 'meta_query' => $r['meta_query'],
1682
- 'date_query' => $r['date_query'],
1683
- 'filter_query' => $r['filter_query'],
1684
- 'filter' => $r['filter'],
1685
- 'scope' => $r['scope'],
1686
- 'display_comments' => $r['display_comments'],
1687
- 'show_hidden' => $r['show_hidden'],
1688
- 'spam' => $r['spam'],
1689
- 'update_meta_cache' => $r['update_meta_cache'],
1690
- 'count_total' => $r['count_total'],
1691
- ) );
1692
-
1693
- wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' );
1694
- }
1695
 
1696
- } else {
1697
- $activity = BP_Activity_Activity::get( array(
1698
- 'page' => $r['page'],
1699
- 'per_page' => $r['per_page'],
1700
- 'max' => $r['max'],
1701
- 'sort' => $r['sort'],
1702
- 'search_terms' => $r['search_terms'],
1703
- 'meta_query' => $r['meta_query'],
1704
- 'date_query' => $r['date_query'],
1705
- 'filter_query' => $r['filter_query'],
1706
- 'filter' => $r['filter'],
1707
- 'scope' => $r['scope'],
1708
- 'display_comments' => $r['display_comments'],
1709
- 'show_hidden' => $r['show_hidden'],
1710
- 'exclude' => $r['exclude'],
1711
- 'in' => $r['in'],
1712
- 'spam' => $r['spam'],
1713
- 'count_total' => $r['count_total'],
1714
- ) );
1715
- }
1716
 
1717
  /**
1718
  * Filters the requested activity item(s).
@@ -1898,10 +1870,13 @@ function bp_activity_add( $args = '' ) {
1898
  * @since 1.2.0
1899
  *
1900
  * @param array|string $args {
1901
- * @type string $content The content of the activity update.
1902
- * @type int $user_id Optional. Defaults to the logged-in user.
 
 
1903
  * }
1904
- * @return int $activity_id The activity id.
 
1905
  */
1906
  function bp_activity_post_update( $args = '' ) {
1907
 
@@ -3417,6 +3392,211 @@ function bp_activity_mark_as_ham( &$activity, $source = 'by_a_person' ) {
3417
  do_action( 'bp_activity_mark_as_ham', $activity, $source );
3418
  }
3419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3420
 
3421
  /** Embeds *******************************************************************/
3422
 
1663
  * );
1664
  */
1665
  'filter' => array()
1666
+ ), 'activity_get' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1667
 
1668
+ $activity = BP_Activity_Activity::get( array(
1669
+ 'page' => $r['page'],
1670
+ 'per_page' => $r['per_page'],
1671
+ 'max' => $r['max'],
1672
+ 'sort' => $r['sort'],
1673
+ 'search_terms' => $r['search_terms'],
1674
+ 'meta_query' => $r['meta_query'],
1675
+ 'date_query' => $r['date_query'],
1676
+ 'filter_query' => $r['filter_query'],
1677
+ 'filter' => $r['filter'],
1678
+ 'scope' => $r['scope'],
1679
+ 'display_comments' => $r['display_comments'],
1680
+ 'show_hidden' => $r['show_hidden'],
1681
+ 'exclude' => $r['exclude'],
1682
+ 'in' => $r['in'],
1683
+ 'spam' => $r['spam'],
1684
+ 'update_meta_cache' => $r['update_meta_cache'],
1685
+ 'count_total' => $r['count_total'],
1686
+ 'fields' => $r['fields'],
1687
+ ) );
1688
 
1689
  /**
1690
  * Filters the requested activity item(s).
1870
  * @since 1.2.0
1871
  *
1872
  * @param array|string $args {
1873
+ * @type string $content The content of the activity update.
1874
+ * @type int $user_id Optional. Defaults to the logged-in user.
1875
+ * @type string $error_type Optional. Error type to return. Either 'bool' or 'wp_error'. Defaults to
1876
+ * 'bool' for boolean. 'wp_error' will return a WP_Error object.
1877
  * }
1878
+ * @return int|bool|WP_Error $activity_id The activity id on success. On failure, either boolean false or WP_Error
1879
+ * object depending on the 'error_type' $args parameter.
1880
  */
1881
  function bp_activity_post_update( $args = '' ) {
1882
 
3392
  do_action( 'bp_activity_mark_as_ham', $activity, $source );
3393
  }
3394
 
3395
+ /* Emails *********************************************************************/
3396
+
3397
+ /**
3398
+ * Send email and BP notifications when a user is mentioned in an update.
3399
+ *
3400
+ * @since 1.2.0
3401
+ *
3402
+ * @param int $activity_id The ID of the activity update.
3403
+ * @param int $receiver_user_id The ID of the user who is receiving the update.
3404
+ */
3405
+ function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) {
3406
+ $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' );
3407
+
3408
+ // Don't leave multiple notifications for the same activity item.
3409
+ foreach( $notifications as $notification ) {
3410
+ if ( $activity_id == $notification->item_id ) {
3411
+ return;
3412
+ }
3413
+ }
3414
+
3415
+ $activity = new BP_Activity_Activity( $activity_id );
3416
+ $email_type = 'activity-at-message';
3417
+ $group_name = '';
3418
+ $message_link = bp_activity_get_permalink( $activity_id );
3419
+ $poster_name = bp_core_get_user_displayname( $activity->user_id );
3420
+
3421
+ remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3422
+ remove_filter( 'bp_get_activity_content_body', 'wpautop' );
3423
+ remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3424
+
3425
+ /** This filter is documented in bp-activity/bp-activity-template.php */
3426
+ $content = apply_filters( 'bp_get_activity_content_body', $activity->content );
3427
+
3428
+ add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3429
+ add_filter( 'bp_get_activity_content_body', 'wpautop' );
3430
+ add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3431
+
3432
+ // Now email the user with the contents of the message (if they have enabled email notifications).
3433
+ if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) {
3434
+ if ( bp_is_active( 'groups' ) && bp_is_group() ) {
3435
+ $email_type = 'groups-at-message';
3436
+ $group_name = bp_get_current_group_name();
3437
+ }
3438
+
3439
+ $unsubscribe_args = array(
3440
+ 'user_id' => $receiver_user_id,
3441
+ 'notification_type' => $email_type,
3442
+ );
3443
+
3444
+ $args = array(
3445
+ 'tokens' => array(
3446
+ 'activity' => $activity,
3447
+ 'usermessage' => wp_strip_all_tags( $content ),
3448
+ 'group.name' => $group_name,
3449
+ 'mentioned.url' => $message_link,
3450
+ 'poster.name' => $poster_name,
3451
+ 'receiver-user.id' => $receiver_user_id,
3452
+ 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3453
+ ),
3454
+ );
3455
+
3456
+ bp_send_email( $email_type, $receiver_user_id, $args );
3457
+ }
3458
+
3459
+ /**
3460
+ * Fires after the sending of an @mention email notification.
3461
+ *
3462
+ * @since 1.5.0
3463
+ * @since 2.5.0 $subject, $message, $content arguments unset and deprecated.
3464
+ *
3465
+ * @param BP_Activity_Activity $activity Activity Item object.
3466
+ * @param string $deprecated Removed in 2.5; now an empty string.
3467
+ * @param string $deprecated Removed in 2.5; now an empty string.
3468
+ * @param string $deprecated Removed in 2.5; now an empty string.
3469
+ * @param int $receiver_user_id The ID of the user who is receiving the update.
3470
+ */
3471
+ do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id );
3472
+ }
3473
+
3474
+ /**
3475
+ * Send email and BP notifications when an activity item receives a comment.
3476
+ *
3477
+ * @since 1.2.0
3478
+ * @since 2.5.0 Updated to use new email APIs.
3479
+ *
3480
+ * @param int $comment_id The comment id.
3481
+ * @param int $commenter_id The ID of the user who posted the comment.
3482
+ * @param array $params {@link bp_activity_new_comment()}.
3483
+ */
3484
+ function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) {
3485
+ $original_activity = new BP_Activity_Activity( $params['activity_id'] );
3486
+ $poster_name = bp_core_get_user_displayname( $commenter_id );
3487
+ $thread_link = bp_activity_get_permalink( $params['activity_id'] );
3488
+
3489
+ remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3490
+ remove_filter( 'bp_get_activity_content_body', 'wpautop' );
3491
+ remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3492
+
3493
+ /** This filter is documented in bp-activity/bp-activity-template.php */
3494
+ $content = apply_filters( 'bp_get_activity_content_body', $params['content'] );
3495
+
3496
+ add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3497
+ add_filter( 'bp_get_activity_content_body', 'wpautop' );
3498
+ add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3499
+
3500
+ if ( $original_activity->user_id != $commenter_id ) {
3501
+
3502
+ // Send an email if the user hasn't opted-out.
3503
+ if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
3504
+
3505
+ $unsubscribe_args = array(
3506
+ 'user_id' => $original_activity->user_id,
3507
+ 'notification_type' => 'activity-comment',
3508
+ );
3509
+
3510
+ $args = array(
3511
+ 'tokens' => array(
3512
+ 'comment.id' => $comment_id,
3513
+ 'commenter.id' => $commenter_id,
3514
+ 'usermessage' => wp_strip_all_tags( $content ),
3515
+ 'original_activity.user_id' => $original_activity->user_id,
3516
+ 'poster.name' => $poster_name,
3517
+ 'thread.url' => esc_url( $thread_link ),
3518
+ 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3519
+ ),
3520
+ );
3521
+
3522
+ bp_send_email( 'activity-comment', $original_activity->user_id, $args );
3523
+ }
3524
+
3525
+ /**
3526
+ * Fires at the point that notifications should be sent for activity comments.
3527
+ *
3528
+ * @since 2.6.0
3529
+ *
3530
+ * @param BP_Activity_Activity $original_activity The original activity.
3531
+ * @param int $comment_id ID for the newly received comment.
3532
+ * @param int $commenter_id ID of the user who made the comment.
3533
+ * @param array $params Arguments used with the original activity comment.
3534
+ */
3535
+ do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );
3536
+ }
3537
+
3538
+
3539
+ /*
3540
+ * If this is a reply to another comment, send an email notification to the
3541
+ * author of the immediate parent comment.
3542
+ */
3543
+ if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) {
3544
+ return;
3545
+ }
3546
+
3547
+ $parent_comment = new BP_Activity_Activity( $params['parent_id'] );
3548
+
3549
+ if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {
3550
+
3551
+ // Send an email if the user hasn't opted-out.
3552
+ if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
3553
+
3554
+ $unsubscribe_args = array(
3555
+ 'user_id' => $parent_comment->user_id,
3556
+ 'notification_type' => 'activity-comment-author',
3557
+ );
3558
+
3559
+ $args = array(
3560
+ 'tokens' => array(
3561
+ 'comment.id' => $comment_id,
3562
+ 'commenter.id' => $commenter_id,
3563
+ 'usermessage' => wp_strip_all_tags( $content ),
3564
+ 'parent-comment-user.id' => $parent_comment->user_id,
3565
+ 'poster.name' => $poster_name,
3566
+ 'thread.url' => esc_url( $thread_link ),
3567
+ 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3568
+ ),
3569
+ );
3570
+
3571
+ bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
3572
+ }
3573
+
3574
+ /**
3575
+ * Fires at the point that notifications should be sent for comments on activity replies.
3576
+ *
3577
+ * @since 2.6.0
3578
+ *
3579
+ * @param BP_Activity_Activity $parent_comment The parent activity.
3580
+ * @param int $comment_id ID for the newly received comment.
3581
+ * @param int $commenter_id ID of the user who made the comment.
3582
+ * @param array $params Arguments used with the original activity comment.
3583
+ */
3584
+ do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );
3585
+ }
3586
+ }
3587
+
3588
+ /**
3589
+ * Helper method to map action arguments to function parameters.
3590
+ *
3591
+ * @since 1.9.0
3592
+ *
3593
+ * @param int $comment_id ID of the comment being notified about.
3594
+ * @param array $params Parameters to use with notification.
3595
+ */
3596
+ function bp_activity_new_comment_notification_helper( $comment_id, $params ) {
3597
+ bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params );
3598
+ }
3599
+ add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 );
3600
 
3601
  /** Embeds *******************************************************************/
3602
 
bp-activity/bp-activity-loader.php CHANGED
@@ -17,7 +17,7 @@ if ( ! buddypress()->do_autoload ) {
17
  }
18
 
19
  /**
20
- * Bootstrap the Activity component.
21
  *
22
  * @since 1.6.0
23
  */
17
  }
18
 
19
  /**
20
+ * Set up the bp-activity component.
21
  *
22
  * @since 1.6.0
23
  */
bp-activity/bp-activity-notifications.php CHANGED
@@ -10,194 +10,6 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
- /* Emails *********************************************************************/
14
-
15
- /**
16
- * Send email and BP notifications when a user is mentioned in an update.
17
- *
18
- * @since 1.2.0
19
- *
20
- * @param int $activity_id The ID of the activity update.
21
- * @param int $receiver_user_id The ID of the user who is receiving the update.
22
- */
23
- function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) {
24
- $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' );
25
-
26
- // Don't leave multiple notifications for the same activity item.
27
- foreach( $notifications as $notification ) {
28
- if ( $activity_id == $notification->item_id ) {
29
- return;
30
- }
31
- }
32
-
33
- $activity = new BP_Activity_Activity( $activity_id );
34
- $email_type = 'activity-at-message';
35
- $group_name = '';
36
- $message_link = bp_activity_get_permalink( $activity_id );
37
- $poster_name = bp_core_get_user_displayname( $activity->user_id );
38
-
39
- remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
40
- remove_filter( 'bp_get_activity_content_body', 'wpautop' );
41
- remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
42
-
43
- /** This filter is documented in bp-activity/bp-activity-template.php */
44
- $content = apply_filters( 'bp_get_activity_content_body', $activity->content );
45
-
46
- add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
47
- add_filter( 'bp_get_activity_content_body', 'wpautop' );
48
- add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
49
-
50
- // Now email the user with the contents of the message (if they have enabled email notifications).
51
- if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) {
52
- if ( bp_is_active( 'groups' ) && bp_is_group() ) {
53
- $email_type = 'groups-at-message';
54
- $group_name = bp_get_current_group_name();
55
- }
56
-
57
- $args = array(
58
- 'tokens' => array(
59
- 'activity' => $activity,
60
- 'usermessage' => wp_strip_all_tags( $content ),
61
- 'group.name' => $group_name,
62
- 'mentioned.url' => $message_link,
63
- 'poster.name' => $poster_name,
64
- 'receiver-user.id' => $receiver_user_id,
65
- ),
66
- );
67
-
68
- bp_send_email( $email_type, $receiver_user_id, $args );
69
- }
70
-
71
- /**
72
- * Fires after the sending of an @mention email notification.
73
- *
74
- * @since 1.5.0
75
- * @since 2.5.0 $subject, $message, $content arguments unset and deprecated.
76
- *
77
- * @param BP_Activity_Activity $activity Activity Item object.
78
- * @param string $deprecated Removed in 2.5; now an empty string.
79
- * @param string $deprecated Removed in 2.5; now an empty string.
80
- * @param string $deprecated Removed in 2.5; now an empty string.
81
- * @param int $receiver_user_id The ID of the user who is receiving the update.
82
- */
83
- do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id );
84
- }
85
-
86
- /**
87
- * Send email and BP notifications when an activity item receives a comment.
88
- *
89
- * @since 1.2.0
90
- * @since 2.5.0 Updated to use new email APIs.
91
- *
92
- * @param int $comment_id The comment id.
93
- * @param int $commenter_id The ID of the user who posted the comment.
94
- * @param array $params {@link bp_activity_new_comment()}.
95
- */
96
- function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) {
97
- $original_activity = new BP_Activity_Activity( $params['activity_id'] );
98
- $poster_name = bp_core_get_user_displayname( $commenter_id );
99
- $thread_link = bp_activity_get_permalink( $params['activity_id'] );
100
-
101
- remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
102
- remove_filter( 'bp_get_activity_content_body', 'wpautop' );
103
- remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
104
-
105
- /** This filter is documented in bp-activity/bp-activity-template.php */
106
- $content = apply_filters( 'bp_get_activity_content_body', $params['content'] );
107
-
108
- add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
109
- add_filter( 'bp_get_activity_content_body', 'wpautop' );
110
- add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
111
-
112
- if ( $original_activity->user_id != $commenter_id ) {
113
-
114
- // Send an email if the user hasn't opted-out.
115
- if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
116
- $args = array(
117
- 'tokens' => array(
118
- 'comment.id' => $comment_id,
119
- 'commenter.id' => $commenter_id,
120
- 'usermessage' => wp_strip_all_tags( $content ),
121
- 'original_activity.user_id' => $original_activity->user_id,
122
- 'poster.name' => $poster_name,
123
- 'thread.url' => esc_url( $thread_link ),
124
- ),
125
- );
126
-
127
- bp_send_email( 'activity-comment', $original_activity->user_id, $args );
128
- }
129
-
130
- /**
131
- * Fires at the point that notifications should be sent for activity comments.
132
- *
133
- * @since 2.6.0
134
- *
135
- * @param BP_Activity_Activity $original_activity The original activity.
136
- * @param int $comment_id ID for the newly received comment.
137
- * @param int $commenter_id ID of the user who made the comment.
138
- * @param array $params Arguments used with the original activity comment.
139
- */
140
- do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );
141
- }
142
-
143
-
144
- /*
145
- * If this is a reply to another comment, send an email notification to the
146
- * author of the immediate parent comment.
147
- */
148
- if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) {
149
- return;
150
- }
151
-
152
- $parent_comment = new BP_Activity_Activity( $params['parent_id'] );
153
-
154
- if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {
155
-
156
- // Send an email if the user hasn't opted-out.
157
- if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
158
- $args = array(
159
- 'tokens' => array(
160
- 'comment.id' => $comment_id,
161
- 'commenter.id' => $commenter_id,
162
- 'usermessage' => wp_strip_all_tags( $content ),
163
- 'parent-comment-user.id' => $parent_comment->user_id,
164
- 'poster.name' => $poster_name,
165
- 'thread.url' => esc_url( $thread_link ),
166
- ),
167
- );
168
-
169
- bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
170
- }
171
-
172
- /**
173
- * Fires at the point that notifications should be sent for comments on activity replies.
174
- *
175
- * @since 2.6.0
176
- *
177
- * @param BP_Activity_Activity $parent_comment The parent activity.
178
- * @param int $comment_id ID for the newly received comment.
179
- * @param int $commenter_id ID of the user who made the comment.
180
- * @param array $params Arguments used with the original activity comment.
181
- */
182
- do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );
183
- }
184
- }
185
-
186
- /**
187
- * Helper method to map action arguments to function parameters.
188
- *
189
- * @since 1.9.0
190
- *
191
- * @param int $comment_id ID of the comment being notified about.
192
- * @param array $params Parameters to use with notification.
193
- */
194
- function bp_activity_new_comment_notification_helper( $comment_id, $params ) {
195
- bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params );
196
- }
197
- add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 );
198
-
199
- /** Notifications *************************************************************/
200
-
201
  /**
202
  * Format notifications related to activity.
203
  *
@@ -339,8 +151,7 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
339
  * @param int $receiver_user_id ID of user receiving notification.
340
  */
341
  function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) {
342
- if ( bp_is_active( 'notifications' ) ) {
343
- bp_notifications_add_notification( array(
344
  'user_id' => $receiver_user_id,
345
  'item_id' => $activity->id,
346
  'secondary_item_id' => $activity->user_id,
@@ -348,8 +159,7 @@ function bp_activity_at_mention_add_notification( $activity, $subject, $message,
348
  'component_action' => 'new_at_mention',
349
  'date_notified' => bp_core_current_time(),
350
  'is_new' => 1,
351
- ) );
352
- }
353
  }
354
  add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );
355
 
@@ -363,17 +173,15 @@ add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notifi
363
  * @param int $commenter_id ID of the user who made the comment.
364
  */
365
  function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) {
366
- if ( bp_is_active( 'notifications' ) ) {
367
- bp_notifications_add_notification( array(
368
- 'user_id' => $activity->user_id,
369
- 'item_id' => $comment_id,
370
- 'secondary_item_id' => $commenter_id,
371
- 'component_name' => buddypress()->activity->id,
372
- 'component_action' => 'update_reply',
373
- 'date_notified' => bp_core_current_time(),
374
- 'is_new' => 1,
375
- ) );
376
- }
377
  }
378
  add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 );
379
 
@@ -387,17 +195,15 @@ add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update
387
  * @param int $commenter_id ID of the user who made the comment.
388
  */
389
  function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) {
390
- if ( bp_is_active( 'notifications' ) ) {
391
- bp_notifications_add_notification( array(
392
- 'user_id' => $activity_comment->user_id,
393
- 'item_id' => $comment_id,
394
- 'secondary_item_id' => $commenter_id,
395
- 'component_name' => buddypress()->activity->id,
396
- 'component_action' => 'comment_reply',
397
- 'date_notified' => bp_core_current_time(),
398
- 'is_new' => 1,
399
- ) );
400
- }
401
  }
402
  add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 );
403
 
@@ -410,10 +216,6 @@ add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment
410
  * @param int $user_id The id of the user whose notifications are marked as read.
411
  */
412
  function bp_activity_remove_screen_notifications( $user_id = 0 ) {
413
- if ( ! bp_is_active( 'notifications' ) ) {
414
- return;
415
- }
416
-
417
  // Only mark read if the current user is looking at his own mentions.
418
  if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) {
419
  return;
@@ -431,10 +233,6 @@ add_action( 'bp_activity_clear_new_mentions', 'bp_activity_remove_screen_notific
431
  * @param BP_Activity_Activity $activity Activity object.
432
  */
433
  function bp_activity_remove_screen_notifications_single_activity_permalink( $activity ) {
434
- if ( ! bp_is_active( 'notifications' ) ) {
435
- return;
436
- }
437
-
438
  if ( ! is_user_logged_in() ) {
439
  return;
440
  }
@@ -453,7 +251,7 @@ add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_
453
  * @since 2.6.0
454
  */
455
  function bp_activity_remove_screen_notifications_for_non_mentions() {
456
- if ( false === bp_is_active( 'notifications' ) || false === is_singular() || false === is_user_logged_in() || empty( $_GET['nid'] ) ) {
457
  return;
458
  }
459
 
@@ -480,7 +278,7 @@ add_action( 'bp_screens', 'bp_activity_remove_screen_notifications_for_non_menti
480
  function bp_activity_at_mention_delete_notification( $activity_ids_deleted = array() ) {
481
  // Let's delete all without checking if content contains any mentions
482
  // to avoid a query to get the activity.
483
- if ( bp_is_active( 'notifications' ) && ! empty( $activity_ids_deleted ) ) {
484
  foreach ( $activity_ids_deleted as $activity_id ) {
485
  bp_notifications_delete_all_notifications_by_type( $activity_id, buddypress()->activity->id );
486
  }
@@ -502,7 +300,7 @@ add_action( 'bp_activity_deleted_activities', 'bp_activity_at_mention_delete_not
502
  */
503
  function bp_activity_add_notification_for_synced_blog_comment( $activity_id, $post_type_comment, $activity_args, $activity_post_object ) {
504
  // If activity comments are disabled for WP posts, stop now!
505
- if ( bp_disable_blogforum_comments() || empty( $activity_id ) || false === bp_is_active( 'notifications' ) ) {
506
  return;
507
  }
508
 
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Format notifications related to activity.
15
  *
151
  * @param int $receiver_user_id ID of user receiving notification.
152
  */
153
  function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) {
154
+ bp_notifications_add_notification( array(
 
155
  'user_id' => $receiver_user_id,
156
  'item_id' => $activity->id,
157
  'secondary_item_id' => $activity->user_id,
159
  'component_action' => 'new_at_mention',
160
  'date_notified' => bp_core_current_time(),
161
  'is_new' => 1,
162
+ ) );
 
163
  }
164
  add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );
165
 
173
  * @param int $commenter_id ID of the user who made the comment.
174
  */
175
  function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) {
176
+ bp_notifications_add_notification( array(
177
+ 'user_id' => $activity->user_id,
178
+ 'item_id' => $comment_id,
179
+ 'secondary_item_id' => $commenter_id,
180
+ 'component_name' => buddypress()->activity->id,
181
+ 'component_action' => 'update_reply',
182
+ 'date_notified' => bp_core_current_time(),
183
+ 'is_new' => 1,
184
+ ) );
 
 
185
  }
186
  add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 );
187
 
195
  * @param int $commenter_id ID of the user who made the comment.
196
  */
197
  function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) {
198
+ bp_notifications_add_notification( array(
199
+ 'user_id' => $activity_comment->user_id,
200
+ 'item_id' => $comment_id,
201
+ 'secondary_item_id' => $commenter_id,
202
+ 'component_name' => buddypress()->activity->id,
203
+ 'component_action' => 'comment_reply',
204
+ 'date_notified' => bp_core_current_time(),
205
+ 'is_new' => 1,
206
+ ) );
 
 
207
  }
208
  add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 );
209
 
216
  * @param int $user_id The id of the user whose notifications are marked as read.
217
  */
218
  function bp_activity_remove_screen_notifications( $user_id = 0 ) {
 
 
 
 
219
  // Only mark read if the current user is looking at his own mentions.
220
  if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) {
221
  return;
233
  * @param BP_Activity_Activity $activity Activity object.
234
  */
235
  function bp_activity_remove_screen_notifications_single_activity_permalink( $activity ) {
 
 
 
 
236
  if ( ! is_user_logged_in() ) {
237
  return;
238
  }
251
  * @since 2.6.0
252
  */
253
  function bp_activity_remove_screen_notifications_for_non_mentions() {
254
+ if ( false === is_singular() || false === is_user_logged_in() || empty( $_GET['nid'] ) ) {
255
  return;
256
  }
257
 
278
  function bp_activity_at_mention_delete_notification( $activity_ids_deleted = array() ) {
279
  // Let's delete all without checking if content contains any mentions
280
  // to avoid a query to get the activity.
281
+ if ( ! empty( $activity_ids_deleted ) ) {
282
  foreach ( $activity_ids_deleted as $activity_id ) {
283
  bp_notifications_delete_all_notifications_by_type( $activity_id, buddypress()->activity->id );
284
  }
300
  */
301
  function bp_activity_add_notification_for_synced_blog_comment( $activity_id, $post_type_comment, $activity_args, $activity_post_object ) {
302
  // If activity comments are disabled for WP posts, stop now!
303
+ if ( bp_disable_blogforum_comments() || empty( $activity_id ) ) {
304
  return;
305
  }
306
 
bp-activity/bp-activity-screens.php CHANGED
@@ -236,7 +236,7 @@ function bp_activity_screen_single_activity_permalink() {
236
 
237
  // Check to see if the group is not public, if so, check the
238
  // user has access to see this activity.
239
- if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) {
240
 
241
  // Group is not public.
242
  if ( 'public' != $group->status ) {
236
 
237
  // Check to see if the group is not public, if so, check the
238
  // user has access to see this activity.
239
+ if ( $group = groups_get_group( $activity->item_id ) ) {
240
 
241
  // Group is not public.
242
  if ( 'public' != $group->status ) {
bp-activity/bp-activity-template.php CHANGED
@@ -1177,11 +1177,7 @@ function bp_activity_secondary_avatar( $args = '' ) {
1177
 
1178
  // Only if groups is active.
1179
  if ( bp_is_active( 'groups' ) ) {
1180
- $group = groups_get_group( array(
1181
- 'group_id' => $item_id,
1182
- 'populate_extras' => false,
1183
- 'update_meta_cache' => false,
1184
- ) );
1185
  $link = bp_get_group_permalink( $group );
1186
  $name = $group->name;
1187
  }
@@ -1476,6 +1472,13 @@ function bp_insert_activity_meta( $content = '' ) {
1476
  // Get the time since this activity was recorded.
1477
  $date_recorded = bp_core_time_since( $activities_template->activity->date_recorded );
1478
 
 
 
 
 
 
 
 
1479
  /**
1480
  * Filters the activity item time since markup.
1481
  *
@@ -1484,7 +1487,7 @@ function bp_insert_activity_meta( $content = '' ) {
1484
  * @param array $value Array containing the time since markup and the current activity component.
1485
  */
1486
  $time_since = apply_filters_ref_array( 'bp_activity_time_since', array(
1487
- '<span class="time-since">' . $date_recorded . '</span>',
1488
  &$activities_template->activity
1489
  ) );
1490
 
@@ -1533,7 +1536,7 @@ function bp_insert_activity_meta( $content = '' ) {
1533
  *
1534
  * @global object $activities_template {@link BP_Activity_Template}
1535
  *
1536
- * @param object|bool $activity Optional. Falls back on the current item in the loop.
1537
  * @return bool True if can delete, false otherwise.
1538
  */
1539
  function bp_activity_user_can_delete( $activity = false ) {
@@ -2090,7 +2093,7 @@ function bp_activity_comment_delete_link() {
2090
  * activity comment.
2091
  */
2092
  function bp_get_activity_comment_delete_link() {
2093
- $link = wp_nonce_url( bp_get_root_domain() . '/' . bp_get_activity_slug() . '/delete/' . bp_get_activity_comment_id() . '?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' );
2094
 
2095
  /**
2096
  * Filters the link used for deleting the activity comment currently being displayed.
@@ -3162,8 +3165,6 @@ function bp_send_public_message_button( $args = '' ) {
3162
  * @type string $wrapper_id Default: 'post-mention'.
3163
  * @type string $link_href Default: the public message link for
3164
  * the current member in the loop.
3165
- * @type string $link_title Default: 'Send a public message on your
3166
- * activity stream.'.
3167
  * @type string $link_text Default: 'Public Message'.
3168
  * @type string $link_class Default: 'activity-button mention'.
3169
  * }
@@ -3178,7 +3179,6 @@ function bp_send_public_message_button( $args = '' ) {
3178
  'block_self' => true,
3179
  'wrapper_id' => 'post-mention',
3180
  'link_href' => bp_get_send_public_message_link(),
3181
- 'link_title' => __( 'Send a public message on your activity stream.', 'buddypress' ),
3182
  'link_text' => __( 'Public Message', 'buddypress' ),
3183
  'link_class' => 'activity-button mention'
3184
  ) );
1177
 
1178
  // Only if groups is active.
1179
  if ( bp_is_active( 'groups' ) ) {
1180
+ $group = groups_get_group( $item_id );
 
 
 
 
1181
  $link = bp_get_group_permalink( $group );
1182
  $name = $group->name;
1183
  }
1472
  // Get the time since this activity was recorded.
1473
  $date_recorded = bp_core_time_since( $activities_template->activity->date_recorded );
1474
 
1475
+ // Set up 'time-since' <span>.
1476
+ $time_since = sprintf(
1477
+ '<span class="time-since" data-livestamp="%1$s">%2$s</span>',
1478
+ bp_core_get_iso8601_date( $activities_template->activity->date_recorded ),
1479
+ $date_recorded
1480
+ );
1481
+
1482
  /**
1483
  * Filters the activity item time since markup.
1484
  *
1487
  * @param array $value Array containing the time since markup and the current activity component.
1488
  */
1489
  $time_since = apply_filters_ref_array( 'bp_activity_time_since', array(
1490
+ $time_since,
1491
  &$activities_template->activity
1492
  ) );
1493
 
1536
  *
1537
  * @global object $activities_template {@link BP_Activity_Template}
1538
  *
1539
+ * @param BP_Activity_Activity $activity Optional. Falls back on the current item in the loop.
1540
  * @return bool True if can delete, false otherwise.
1541
  */
1542
  function bp_activity_user_can_delete( $activity = false ) {
2093
  * activity comment.
2094
  */
2095
  function bp_get_activity_comment_delete_link() {
2096
+ $link = wp_nonce_url( bp_get_activity_directory_permalink() . 'delete/' . bp_get_activity_comment_id() . '?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' );
2097
 
2098
  /**
2099
  * Filters the link used for deleting the activity comment currently being displayed.
3165
  * @type string $wrapper_id Default: 'post-mention'.
3166
  * @type string $link_href Default: the public message link for
3167
  * the current member in the loop.
 
 
3168
  * @type string $link_text Default: 'Public Message'.
3169
  * @type string $link_class Default: 'activity-button mention'.
3170
  * }
3179
  'block_self' => true,
3180
  'wrapper_id' => 'post-mention',
3181
  'link_href' => bp_get_send_public_message_link(),
 
3182
  'link_text' => __( 'Public Message', 'buddypress' ),
3183
  'link_class' => 'activity-button mention'
3184
  ) );
bp-activity/classes/class-bp-activity-activity.php CHANGED
@@ -645,7 +645,23 @@ class BP_Activity_Activity {
645
  */
646
  $activity_ids_sql = apply_filters( 'bp_activity_paged_activities_sql', $activity_ids_sql, $r );
647
 
648
- $activity_ids = $wpdb->get_col( $activity_ids_sql );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
 
650
  $retval['has_more_items'] = ! empty( $per_page ) && count( $activity_ids ) > $per_page;
651
 
@@ -702,7 +718,13 @@ class BP_Activity_Activity {
702
  * @param string $sort Sort direction for query.
703
  */
704
  $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(DISTINCT a.id) FROM {$bp->activity->table_name} a {$join_sql} {$where_sql}", $where_sql, $sort );
705
- $total_activities = $wpdb->get_var( $total_activities_sql );
 
 
 
 
 
 
706
 
707
  if ( !empty( $r['max'] ) ) {
708
  if ( (int) $total_activities > (int) $r['max'] ) {
645
  */
646
  $activity_ids_sql = apply_filters( 'bp_activity_paged_activities_sql', $activity_ids_sql, $r );
647
 
648
+ /*
649
+ * Queries that include 'last_activity' are cached separately,
650
+ * since they are generally much less long-lived.
651
+ */
652
+ if ( preg_match( '/a\.type NOT IN \([^\)]*\'last_activity\'[^\)]*\)/', $activity_ids_sql ) ) {
653
+ $cache_group = 'bp_activity';
654
+ } else {
655
+ $cache_group = 'bp_activity_with_last_activity';
656
+ }
657
+
658
+ $cached = bp_core_get_incremented_cache( $activity_ids_sql, $cache_group );
659
+ if ( false === $cached ) {
660
+ $activity_ids = $wpdb->get_col( $activity_ids_sql );
661
+ bp_core_set_incremented_cache( $activity_ids_sql, $cache_group, $activity_ids );
662
+ } else {
663
+ $activity_ids = $cached;
664
+ }
665
 
666
  $retval['has_more_items'] = ! empty( $per_page ) && count( $activity_ids ) > $per_page;
667
 
718
  * @param string $sort Sort direction for query.
719
  */
720
  $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(DISTINCT a.id) FROM {$bp->activity->table_name} a {$join_sql} {$where_sql}", $where_sql, $sort );
721
+ $cached = bp_core_get_incremented_cache( $total_activities_sql, $cache_group );
722
+ if ( false === $cached ) {
723
+ $total_activities = $wpdb->get_var( $total_activities_sql );
724
+ bp_core_set_incremented_cache( $total_activities_sql, $cache_group, $total_activities );
725
+ } else {
726
+ $total_activities = $cached;
727
+ }
728
 
729
  if ( !empty( $r['max'] ) ) {
730
  if ( (int) $total_activities > (int) $r['max'] ) {
bp-activity/classes/class-bp-activity-component.php CHANGED
@@ -57,10 +57,14 @@ class BP_Activity_Component extends BP_Component {
57
  'adminbar',
58
  'template',
59
  'functions',
60
- 'notifications',
61
  'cache'
62
  );
63
 
 
 
 
 
 
64
  if ( ! buddypress()->do_autoload ) {
65
  $includes[] = 'classes';
66
  }
@@ -68,7 +72,7 @@ class BP_Activity_Component extends BP_Component {
68
  // Load Akismet support if Akismet is configured.
69
  $akismet_key = bp_get_option( 'wordpress_api_key' );
70
 
71
- /** This filter is documented in bp-activity/bp-activity-actions.php */
72
  if ( defined( 'AKISMET_VERSION' ) && class_exists( 'Akismet' ) && ( ! empty( $akismet_key ) || defined( 'WPCOM_API_KEY' ) ) && apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
73
  $includes[] = 'akismet';
74
  }
@@ -116,13 +120,17 @@ class BP_Activity_Component extends BP_Component {
116
  'activity' => $bp->table_prefix . 'bp_activity_meta',
117
  );
118
 
 
 
 
 
119
  // All globals for activity component.
120
  // Note that global_tables is included in this array.
121
  $args = array(
122
  'slug' => BP_ACTIVITY_SLUG,
123
  'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
124
  'has_directory' => true,
125
- 'directory_title' => _x( 'Site-Wide Activity', 'component directory title', 'buddypress' ),
126
  'notification_callback' => 'bp_activity_format_notifications',
127
  'search_string' => __( 'Search Activity...', 'buddypress' ),
128
  'global_tables' => $global_tables,
@@ -361,19 +369,6 @@ class BP_Activity_Component extends BP_Component {
361
  parent::setup_title();
362
  }
363
 
364
- /**
365
- * Set up actions necessary for the component.
366
- *
367
- * @since 1.6.0
368
- */
369
- public function setup_actions() {
370
-
371
- // Spam prevention.
372
- add_action( 'bp_include', 'bp_activity_setup_akismet' );
373
-
374
- parent::setup_actions();
375
- }
376
-
377
  /**
378
  * Setup cache groups.
379
  *
57
  'adminbar',
58
  'template',
59
  'functions',
 
60
  'cache'
61
  );
62
 
63
+ // Notifications support.
64
+ if ( bp_is_active( 'notifications' ) ) {
65
+ $includes[] = 'notifications';
66
+ }
67
+
68
  if ( ! buddypress()->do_autoload ) {
69
  $includes[] = 'classes';
70
  }
72
  // Load Akismet support if Akismet is configured.
73
  $akismet_key = bp_get_option( 'wordpress_api_key' );
74
 
75
+ /** This filter is documented in bp-activity/bp-activity-akismet.php */
76
  if ( defined( 'AKISMET_VERSION' ) && class_exists( 'Akismet' ) && ( ! empty( $akismet_key ) || defined( 'WPCOM_API_KEY' ) ) && apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
77
  $includes[] = 'akismet';
78
  }
120
  'activity' => $bp->table_prefix . 'bp_activity_meta',
121
  );
122
 
123
+ // Fetch the default directory title.
124
+ $default_directory_titles = bp_core_get_directory_page_default_titles();
125
+ $default_directory_title = $default_directory_titles[$this->id];
126
+
127
  // All globals for activity component.
128
  // Note that global_tables is included in this array.
129
  $args = array(
130
  'slug' => BP_ACTIVITY_SLUG,
131
  'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
132
  'has_directory' => true,
133
+ 'directory_title' => isset( $bp->pages->activity->title ) ? $bp->pages->activity->title : $default_directory_title,
134
  'notification_callback' => 'bp_activity_format_notifications',
135
  'search_string' => __( 'Search Activity...', 'buddypress' ),
136
  'global_tables' => $global_tables,
369
  parent::setup_title();
370
  }
371
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372
  /**
373
  * Setup cache groups.
374
  *
bp-activity/classes/class-bp-activity-list-table.php CHANGED
@@ -428,8 +428,26 @@ class BP_Activity_List_Table extends WP_List_Table {
428
  <option value="" <?php selected( ! $selected ); ?>><?php _e( 'View all actions', 'buddypress' ); ?></option>
429
 
430
  <?php foreach ( $activity_actions as $component => $actions ) : ?>
431
-
432
- <optgroup label="<?php echo ucfirst( $component ); ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
 
434
  <?php foreach ( $actions as $action_key => $action_values ) : ?>
435
 
428
  <option value="" <?php selected( ! $selected ); ?>><?php _e( 'View all actions', 'buddypress' ); ?></option>
429
 
430
  <?php foreach ( $activity_actions as $component => $actions ) : ?>
431
+ <?php
432
+ // Older avatar activity items use 'profile' for component. See r4273.
433
+ if ( $component === 'profile' ) {
434
+ $component = 'xprofile';
435
+ }
436
+
437
+ if ( bp_is_active( $component ) ) {
438
+ if ( $component === 'xprofile' ) {
439
+ $component_name = buddypress()->profile->name;
440
+ } else {
441
+ $component_name = buddypress()->$component->name;
442
+ }
443
+
444
+ } else {
445
+ // Prevent warnings by other plugins if a component is disabled but the activity type has been registered.
446
+ $component_name = ucfirst( $component );
447
+ }
448
+ ?>
449
+
450
+ <optgroup label="<?php echo esc_html( $component_name ); ?>">
451
 
452
  <?php foreach ( $actions as $action_key => $action_values ) : ?>
453
 
bp-activity/js/mentions.min.js CHANGED
@@ -1 +1 @@
1
- window.bp=window.bp||{},function(a,b,c){var d,e=[];a.mentions=a.mentions||{},a.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(a.mentions.users=window.BP_Suggestions.friends||a.mentions.users),b.fn.bp_mentions=function(a){b.isArray(a)&&(a={data:a});var c={delay:200,hide_without_suffix:!0,insert_tpl:"</>${atwho-data-value}</>",limit:10,start_with_space:!1,suffix:"",callbacks:{filter:function(a,b,c){var d,e,f,g=[],h=new RegExp("^"+a+"| "+a,"ig");for(e=0,f=b.length;f>e;e++)d=b[e],d[c].toLowerCase().match(h)&&g.push(d);return g},highlighter:function(a,b){if(!b)return a;var c=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+b.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return a.replace(c,function(a,b,c,d){return">"+b+"<strong>"+c+"</strong>"+d+"<"})},before_reposition:function(a){var c,d,e,f,g=b("#atwho-ground-"+this.id+" .atwho-view"),h=b("body"),i=this.$inputor.data("atwho");"undefined"!==i&&"undefined"!==i.iframe&&null!==i.iframe?(c=this.$inputor.caret("offset",{iframe:i.iframe}),e=b(i.iframe).offset(),"undefined"!==e&&(c.left+=e.left,c.top+=e.top)):c=this.$inputor.caret("offset"),c.left>h.width()/2?(g.addClass("right"),f=c.left-a.left-this.view.$el.width()):(g.removeClass("right"),f=c.left-a.left+1),h.width()<=400&&b(document).scrollTop(c.top-6),d=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10),(!d||5>d)&&(d=19),a.top=c.top+d,a.left+=f},inserting_wrapper:function(a,b,c){return""+b+c}}},f={callbacks:{remote_filter:function(a,c){var f=b(this),g={};return d=e[a],"object"==typeof d?void c(d):(f.xhr&&f.xhr.abort(),g={action:"bp_get_suggestions",term:a,type:"members"},b.isNumeric(this.$inputor.data("suggestions-group-id"))&&(g["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),void(f.xhr=b.getJSON(ajaxurl,g).done(function(d){if(d.success){var f=b.map(d.data,function(a){return a.search=a.search||a.ID+" "+a.name,a});e[a]=f,c(f)}})))}},data:b.map(a.data,function(a){return a.search=a.search||a.ID+" "+a.name,a}),at:"@",search_key:"search",tpl:'<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>'},g=b.extend(!0,{},c,f,a);return b.fn.atwho.call(this,g)},b(document).ready(function(){b(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(a.mentions.users)}),a.mentions.tinyMCEinit=function(){"undefined"!=typeof window.tinyMCE&&null!==window.tinyMCE.activeEditor&&"undefined"!=typeof window.tinyMCE.activeEditor&&b(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",b(".wp-editor-wrap iframe")[0]).bp_mentions(a.mentions.users)}}(bp,jQuery);
1
+ window.bp=window.bp||{},function(a,b,c){var d,e=[];a.mentions=a.mentions||{},a.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(a.mentions.users=window.BP_Suggestions.friends||a.mentions.users),b.fn.bp_mentions=function(a){b.isArray(a)&&(a={data:a});var c={delay:200,hide_without_suffix:!0,insert_tpl:"</>${atwho-data-value}</>",limit:10,start_with_space:!1,suffix:"",callbacks:{filter:function(a,b,c){var d,e,f,g=[],h=new RegExp("^"+a+"| "+a,"ig");for(e=0,f=b.length;e<f;e++)d=b[e],d[c].toLowerCase().match(h)&&g.push(d);return g},highlighter:function(a,b){if(!b)return a;var c=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+b.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return a.replace(c,function(a,b,c,d){return">"+b+"<strong>"+c+"</strong>"+d+"<"})},before_reposition:function(a){var c,d,e,f,g=b("#atwho-ground-"+this.id+" .atwho-view"),h=b("body"),i=this.$inputor.data("atwho");"undefined"!==i&&"undefined"!==i.iframe&&null!==i.iframe?(c=this.$inputor.caret("offset",{iframe:i.iframe}),e=b(i.iframe).offset(),"undefined"!==e&&(c.left+=e.left,c.top+=e.top)):c=this.$inputor.caret("offset"),c.left>h.width()/2?(g.addClass("right"),f=c.left-a.left-this.view.$el.width()):(g.removeClass("right"),f=c.left-a.left+1),h.width()<=400&&b(document).scrollTop(c.top-6),d=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10),(!d||d<5)&&(d=19),a.top=c.top+d,a.left+=f},inserting_wrapper:function(a,b,c){return""+b+c}}},f={callbacks:{remote_filter:function(a,c){var f=b(this),g={};return d=e[a],"object"==typeof d?void c(d):(f.xhr&&f.xhr.abort(),g={action:"bp_get_suggestions",term:a,type:"members"},b.isNumeric(this.$inputor.data("suggestions-group-id"))&&(g["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),void(f.xhr=b.getJSON(ajaxurl,g).done(function(d){if(d.success){var f=b.map(d.data,function(a){return a.search=a.search||a.ID+" "+a.name,a});e[a]=f,c(f)}})))}},data:b.map(a.data,function(a){return a.search=a.search||a.ID+" "+a.name,a}),at:"@",search_key:"search",tpl:'<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>'},g=b.extend(!0,{},c,f,a);return b.fn.atwho.call(this,g)},b(document).ready(function(){b(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(a.mentions.users)}),a.mentions.tinyMCEinit=function(){"undefined"!=typeof window.tinyMCE&&null!==window.tinyMCE.activeEditor&&"undefined"!=typeof window.tinyMCE.activeEditor&&b(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",b(".wp-editor-wrap iframe")[0]).bp_mentions(a.mentions.users)}}(bp,jQuery);
bp-blogs/bp-blogs-activity.php CHANGED
@@ -1291,7 +1291,7 @@ function bp_blogs_can_comment_reply( $retval, $comment ) {
1291
 
1292
  // Check comment depth and disable if depth is too large.
1293
  if ( isset( buddypress()->blogs->thread_depth[$comment->item_id] ) ){
1294
- if ( $comment->mptt_left > buddypress()->blogs->thread_depth[$comment->item_id] ) {
1295
  $retval = false;
1296
  }
1297
  }
1291
 
1292
  // Check comment depth and disable if depth is too large.
1293
  if ( isset( buddypress()->blogs->thread_depth[$comment->item_id] ) ){
1294
+ if ( bp_activity_get_comment_depth() > buddypress()->blogs->thread_depth[$comment->item_id] ) {
1295
  $retval = false;
1296
  }
1297
  }
bp-blogs/bp-blogs-filters.php CHANGED
@@ -121,3 +121,17 @@ function bp_blogs_post_pre_publish( $return = true, $blog_id = 0, $post_id = 0,
121
  }
122
  add_filter( 'bp_activity_post_pre_publish', 'bp_blogs_post_pre_publish', 10, 4 );
123
  add_filter( 'bp_activity_post_pre_comment', 'bp_blogs_post_pre_publish', 10, 4 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
122
  add_filter( 'bp_activity_post_pre_publish', 'bp_blogs_post_pre_publish', 10, 4 );
123
  add_filter( 'bp_activity_post_pre_comment', 'bp_blogs_post_pre_publish', 10, 4 );
124
+
125
+ /**
126
+ * Registers our custom thumb size with WP's Site Icon feature.
127
+ *
128
+ * @since 2.7.0
129
+ *
130
+ * @param array $sizes Current array of custom site icon sizes.
131
+ * @return array
132
+ */
133
+ function bp_blogs_register_custom_site_icon_size( $sizes ) {
134
+ $sizes[] = bp_core_avatar_thumb_width();
135
+ return $sizes;
136
+ }
137
+ add_filter( 'site_icon_image_sizes', 'bp_blogs_register_custom_site_icon_size' );
bp-blogs/bp-blogs-functions.php CHANGED
@@ -475,6 +475,26 @@ function bp_blogs_update_option_thread_comments_depth( $oldvalue, $newvalue ) {
475
  }
476
  add_action( 'update_option_thread_comments_depth', 'bp_blogs_update_option_thread_comments_depth', 10, 2 );
477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  /**
479
  * Deletes the 'url' blogmeta for a site.
480
  *
475
  }
476
  add_action( 'update_option_thread_comments_depth', 'bp_blogs_update_option_thread_comments_depth', 10, 2 );
477
 
478
+ /**
479
+ * Syncs site icon URLs to blogmeta.
480
+ *
481
+ * @since 2.7.0
482
+ *
483
+ * @param int|string $old_value Old value
484
+ * @param int|string $new_value New value
485
+ */
486
+ function bp_blogs_update_option_site_icon( $old_value, $new_value ) {
487
+ if ( 0 === $new_value ) {
488
+ bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', 0 );
489
+ bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', 0 );
490
+ } else {
491
+ // Save site icon URL as blogmeta.
492
+ bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', get_site_icon_url( bp_core_avatar_thumb_width() ) );
493
+ bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', get_site_icon_url( bp_core_avatar_full_width() ) );
494
+ }
495
+ }
496
+ add_action( 'update_option_site_icon', 'bp_blogs_update_option_site_icon', 10, 2 );
497
+
498
  /**
499
  * Deletes the 'url' blogmeta for a site.
500
  *
bp-blogs/bp-blogs-loader.php CHANGED
@@ -20,6 +20,8 @@ if ( ! buddypress()->do_autoload ) {
20
 
21
  /**
22
  * Set up the bp-blogs component.
 
 
23
  */
24
  function bp_setup_blogs() {
25
  buddypress()->blogs = new BP_Blogs_Component();
20
 
21
  /**
22
  * Set up the bp-blogs component.
23
+ *
24
+ * @since 1.5.0
25
  */
26
  function bp_setup_blogs() {
27
  buddypress()->blogs = new BP_Blogs_Component();
bp-blogs/bp-blogs-template.php CHANGED
@@ -220,9 +220,20 @@ function bp_the_blog() {
220
  /**
221
  * Output the blogs pagination count.
222
  *
223
- * @global object $blogs_template {@link BP_Blogs_Template}
224
  */
225
  function bp_blogs_pagination_count() {
 
 
 
 
 
 
 
 
 
 
 
226
  global $blogs_template;
227
 
228
  $start_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1;
@@ -236,7 +247,17 @@ function bp_blogs_pagination_count() {
236
  $message = sprintf( _n( 'Viewing %1$s - %2$s of %3$s site', 'Viewing %1$s - %2$s of %3$s sites', $blogs_template->total_blog_count, 'buddypress' ), $from_num, $to_num, $total );
237
  }
238
 
239
- echo $message;
 
 
 
 
 
 
 
 
 
 
240
  }
241
 
242
  /**
@@ -324,19 +345,77 @@ function bp_blog_avatar( $args = '' ) {
324
  'no_grav' => true,
325
  ) );
326
 
327
- // Fetch the avatar.
328
- $avatar = bp_core_fetch_avatar( array(
329
- 'item_id' => $blogs_template->blog->admin_user_id,
330
- 'title' => $r['title'],
331
- // 'avatar_dir' => 'blog-avatars',
332
- // 'object' => 'blog',
333
- 'type' => $r['type'],
334
- 'alt' => $r['alt'],
335
- 'css_id' => $r['id'],
336
- 'class' => $r['class'],
337
- 'width' => $r['width'],
338
- 'height' => $r['height']
339
- ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
 
341
  /**
342
  * In future BuddyPress versions you will be able to set the avatar for a blog.
@@ -1032,9 +1111,8 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' )
1032
  echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>';
1033
  ?>
1034
 
1035
- <p>
1036
- <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
1037
- <?php _e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?>
1038
 
1039
  <label class="checkbox" for="blog_public_on">
1040
  <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
@@ -1044,7 +1122,7 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' )
1044
  <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1045
  <strong><?php _e( 'No' , 'buddypress'); ?></strong>
1046
  </label>
1047
- </p>
1048
 
1049
  <?php
1050
 
@@ -1280,7 +1358,6 @@ function bp_blog_create_button() {
1280
  'id' => 'create_blog',
1281
  'component' => 'blogs',
1282
  'link_text' => __( 'Create a Site', 'buddypress' ),
1283
- 'link_title' => __( 'Create a Site', 'buddypress' ),
1284
  'link_class' => 'blog-create no-ajax',
1285
  'link_href' => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ),
1286
  'wrapper' => false,
@@ -1377,7 +1454,6 @@ function bp_blogs_visit_blog_button( $args = '' ) {
1377
  * @type string $link_href Permalink of the current blog in the loop.
1378
  * @type string $link_class Default: 'blog-button visit'.
1379
  * @type string $link_text Default: 'Visit Site'.
1380
- * @type string $link_title Default: 'Visit Site'.
1381
  * }
1382
  * @return string The HTML for the Visit button.
1383
  */
@@ -1391,7 +1467,6 @@ function bp_blogs_visit_blog_button( $args = '' ) {
1391
  'link_href' => bp_get_blog_permalink(),
1392
  'link_class' => 'blog-button visit',
1393
  'link_text' => __( 'Visit Site', 'buddypress' ),
1394
- 'link_title' => __( 'Visit Site', 'buddypress' ),
1395
  );
1396
 
1397
  $button = wp_parse_args( $args, $defaults );
220
  /**
221
  * Output the blogs pagination count.
222
  *
223
+ * @since 1.0.0
224
  */
225
  function bp_blogs_pagination_count() {
226
+ echo bp_get_blogs_pagination_count();
227
+ }
228
+
229
+ /**
230
+ * Get the blogs pagination count.
231
+ *
232
+ * @since 2.7.0
233
+ *
234
+ * @global object $blogs_template {@link BP_Blogs_Template}
235
+ */
236
+ function bp_get_blogs_pagination_count() {
237
  global $blogs_template;
238
 
239
  $start_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1;
247
  $message = sprintf( _n( 'Viewing %1$s - %2$s of %3$s site', 'Viewing %1$s - %2$s of %3$s sites', $blogs_template->total_blog_count, 'buddypress' ), $from_num, $to_num, $total );
248
  }
249
 
250
+ /**
251
+ * Filters the "Viewing x-y of z blogs" pagination message.
252
+ *
253
+ * @since 2.7.0
254
+ *
255
+ * @param string $message "Viewing x-y of z blogs" text.
256
+ * @param string $from_num Total amount for the low value in the range.
257
+ * @param string $to_num Total amount for the high value in the range.
258
+ * @param string $total Total amount of blogs found.
259
+ */
260
+ return apply_filters( 'bp_get_blogs_pagination_count', $message, $from_num, $to_num, $total );
261
  }
262
 
263
  /**
345
  'no_grav' => true,
346
  ) );
347
 
348
+ // Use site icon if available.
349
+ $avatar = '';
350
+ if ( bp_is_active( 'blogs', 'site-icon' ) && function_exists( 'has_site_icon' ) ) {
351
+ $site_icon = bp_blogs_get_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}" );
352
+
353
+ // Never attempted to fetch site icon before; do it now!
354
+ if ( '' === $site_icon ) {
355
+ switch_to_blog( bp_get_blog_id() );
356
+
357
+ // Fetch the other size first.
358
+ if ( 'full' === $r['type'] ) {
359
+ $size = bp_core_avatar_thumb_width();
360
+ $save_size = 'thumb';
361
+ } else {
362
+ $size = bp_core_avatar_full_width();
363
+ $save_size = 'full';
364
+ }
365
+
366
+ $site_icon = get_site_icon_url( $size );
367
+ // Empty site icons get saved as integer 0.
368
+ if ( empty( $site_icon ) ) {
369
+ $site_icon = 0;
370
+ }
371
+
372
+ // Sync site icon for other size to blogmeta.
373
+ bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$save_size}", $site_icon );
374
+
375
+ // Now, fetch the size we want.
376
+ if ( 0 !== $site_icon ) {
377
+ $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width();
378
+ $site_icon = get_site_icon_url( $size );
379
+ }
380
+
381
+ // Sync site icon to blogmeta.
382
+ bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}", $site_icon );
383
+
384
+ restore_current_blog();
385
+ }
386
+
387
+ // We have a site icon.
388
+ if ( ! is_numeric( $site_icon ) ) {
389
+ if ( empty( $r['width'] ) && ! isset( $size ) ) {
390
+ $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width();
391
+ } else {
392
+ $size = (int) $r['width'];
393
+ }
394
+
395
+ $avatar = sprintf( '<img src="%1$s" class="%2$s" width="%3$s" height="%3$s" alt="%4$s" title="%4$s" />',
396
+ esc_url( $site_icon ),
397
+ esc_attr( "{$r['class']} avatar-{$size}" ),
398
+ esc_attr( $size ),
399
+ sprintf( esc_attr__( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() )
400
+ );
401
+ }
402
+ }
403
+
404
+ // Fallback to user ID avatar.
405
+ if ( '' === $avatar ) {
406
+ $avatar = bp_core_fetch_avatar( array(
407
+ 'item_id' => $blogs_template->blog->admin_user_id,
408
+ 'title' => $r['title'],
409
+ // 'avatar_dir' => 'blog-avatars',
410
+ // 'object' => 'blog',
411
+ 'type' => $r['type'],
412
+ 'alt' => $r['alt'],
413
+ 'css_id' => $r['id'],
414
+ 'class' => $r['class'],
415
+ 'width' => $r['width'],
416
+ 'height' => $r['height']
417
+ ) );
418
+ }
419
 
420
  /**
421
  * In future BuddyPress versions you will be able to set the avatar for a blog.
1111
  echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>';
1112
  ?>
1113
 
1114
+ <fieldset class="create-site">
1115
+ <legend class="label"><?php _e('Privacy: I would like my site to appear in search engines, and in public listings around this network', 'buddypress') ?></legend>
 
1116
 
1117
  <label class="checkbox" for="blog_public_on">
1118
  <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1122
  <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1123
  <strong><?php _e( 'No' , 'buddypress'); ?></strong>
1124
  </label>
1125
+ </fieldset>
1126
 
1127
  <?php
1128
 
1358
  'id' => 'create_blog',
1359
  'component' => 'blogs',
1360
  'link_text' => __( 'Create a Site', 'buddypress' ),
 
1361
  'link_class' => 'blog-create no-ajax',
1362
  'link_href' => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ),
1363
  'wrapper' => false,
1454
  * @type string $link_href Permalink of the current blog in the loop.
1455
  * @type string $link_class Default: 'blog-button visit'.
1456
  * @type string $link_text Default: 'Visit Site'.
 
1457
  * }
1458
  * @return string The HTML for the Visit button.
1459
  */
1467
  'link_href' => bp_get_blog_permalink(),
1468
  'link_class' => 'blog-button visit',
1469
  'link_text' => __( 'Visit Site', 'buddypress' ),
 
1470
  );
1471
 
1472
  $button = wp_parse_args( $args, $defaults );
bp-blogs/classes/class-bp-blogs-blog.php CHANGED
@@ -48,7 +48,7 @@ class BP_Blogs_Blog {
48
  */
49
  public function __construct( $id = null ) {
50
  if ( !empty( $id ) ) {
51
- $this->id = $id;
52
  $this->populate();
53
  }
54
  }
@@ -63,8 +63,8 @@ class BP_Blogs_Blog {
63
 
64
  $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name} WHERE id = %d", $this->id ) );
65
 
66
- $this->user_id = $blog->user_id;
67
- $this->blog_id = $blog->blog_id;
68
  }
69
 
70
  /**
@@ -243,6 +243,12 @@ class BP_Blogs_Blog {
243
 
244
  $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $type );
245
 
 
 
 
 
 
 
246
  if ( $update_meta_cache ) {
247
  bp_blogs_update_meta_cache( $blog_ids );
248
  }
@@ -338,8 +344,8 @@ class BP_Blogs_Blog {
338
  $user_blogs = array();
339
  foreach ( (array) $blogs as $blog ) {
340
  $user_blogs[$blog->blog_id] = new stdClass;
341
- $user_blogs[$blog->blog_id]->id = $blog->id;
342
- $user_blogs[$blog->blog_id]->blog_id = $blog->blog_id;
343
  $user_blogs[$blog->blog_id]->siteurl = ( is_ssl() ) ? 'https://' . $blog->domain . $blog->path : 'http://' . $blog->domain . $blog->path;
344
  $user_blogs[$blog->blog_id]->name = $blog->name;
345
  }
@@ -364,7 +370,7 @@ class BP_Blogs_Blog {
364
  if ( !$user_id )
365
  $user_id = bp_displayed_user_id();
366
 
367
- return $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) );
368
  }
369
 
370
  /**
@@ -379,7 +385,9 @@ class BP_Blogs_Blog {
379
 
380
  $bp = buddypress();
381
 
382
- return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
 
 
383
  }
384
 
385
  /**
@@ -444,7 +452,12 @@ class BP_Blogs_Blog {
444
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" );
445
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" );
446
 
447
- return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
448
  }
449
 
450
  /**
@@ -472,7 +485,12 @@ class BP_Blogs_Blog {
472
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT b.blog_id FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql} {$pag_sql}" );
473
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql}" );
474
 
475
- return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
476
  }
477
 
478
  /**
@@ -509,7 +527,12 @@ class BP_Blogs_Blog {
509
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC{$pag_sql}" );
510
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC" );
511
 
512
- return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
513
  }
514
 
515
  /**
48
  */
49
  public function __construct( $id = null ) {
50
  if ( !empty( $id ) ) {
51
+ $this->id = (int) $id;
52
  $this->populate();
53
  }
54
  }
63
 
64
  $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name} WHERE id = %d", $this->id ) );
65
 
66
+ $this->user_id = (int) $blog->user_id;
67
+ $this->blog_id = (int) $blog->blog_id;
68
  }
69
 
70
  /**
243
 
244
  $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $type );
245
 
246
+ // Integer casting.
247
+ foreach ( (array) $paged_blogs as $key => $data ) {
248
+ $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
249
+ $paged_blogs[ $key ]->admin_user_id = (int) $paged_blogs[ $key ]->admin_user_id;
250
+ }
251
+
252
  if ( $update_meta_cache ) {
253
  bp_blogs_update_meta_cache( $blog_ids );
254
  }
344
  $user_blogs = array();
345
  foreach ( (array) $blogs as $blog ) {
346
  $user_blogs[$blog->blog_id] = new stdClass;
347
+ $user_blogs[$blog->blog_id]->id = (int) $blog->id;
348
+ $user_blogs[$blog->blog_id]->blog_id = (int) $blog->blog_id;
349
  $user_blogs[$blog->blog_id]->siteurl = ( is_ssl() ) ? 'https://' . $blog->domain . $blog->path : 'http://' . $blog->domain . $blog->path;
350
  $user_blogs[$blog->blog_id]->name = $blog->name;
351
  }
370
  if ( !$user_id )
371
  $user_id = bp_displayed_user_id();
372
 
373
+ return array_map( 'intval', $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) ) );
374
  }
375
 
376
  /**
385
 
386
  $bp = buddypress();
387
 
388
+ $query = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
389
+
390
+ return is_numeric( $query ) ? (int) $query : $query;
391
  }
392
 
393
  /**
452
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" );
453
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" );
454
 
455
+ // Integer casting.
456
+ foreach ( (array) $paged_blogs as $key => $data ) {
457
+ $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
458
+ }
459
+
460
+ return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
461
  }
462
 
463
  /**
485
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT b.blog_id FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql} {$pag_sql}" );
486
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql}" );
487
 
488
+ // Integer casting.
489
+ foreach ( (array) $paged_blogs as $key => $data ) {
490
+ $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
491
+ }
492
+
493
+ return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
494
  }
495
 
496
  /**
527
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC{$pag_sql}" );
528
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC" );
529
 
530
+ // Integer casting.
531
+ foreach ( (array) $paged_blogs as $key => $data ) {
532
+ $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
533
+ }
534
+
535
+ return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
536
  }
537
 
538
  /**
bp-blogs/classes/class-bp-blogs-component.php CHANGED
@@ -32,6 +32,7 @@ class BP_Blogs_Component extends BP_Component {
32
  array(
33
  'adminbar_myaccount_order' => 30,
34
  'search_query_arg' => 'sites_search',
 
35
  )
36
  );
37
  }
@@ -65,12 +66,16 @@ class BP_Blogs_Component extends BP_Component {
65
  'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
66
  );
67
 
 
 
 
 
68
  // All globals for blogs component.
69
  $args = array(
70
  'slug' => BP_BLOGS_SLUG,
71
  'root_slug' => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG,
72
  'has_directory' => is_multisite(), // Non-multisite installs don't need a top-level Sites directory, since there's only one site.
73
- 'directory_title' => _x( 'Sites', 'component directory title', 'buddypress' ),
74
  'notification_callback' => 'bp_blogs_format_notifications',
75
  'search_string' => __( 'Search sites...', 'buddypress' ),
76
  'autocomplete_all' => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
32
  array(
33
  'adminbar_myaccount_order' => 30,
34
  'search_query_arg' => 'sites_search',
35
+ 'features' => array( 'site-icon' )
36
  )
37
  );
38
  }
66
  'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
67
  );
68
 
69
+ // Fetch the default directory title.
70
+ $default_directory_titles = bp_core_get_directory_page_default_titles();
71
+ $default_directory_title = $default_directory_titles[$this->id];
72
+
73
  // All globals for blogs component.
74
  $args = array(
75
  'slug' => BP_BLOGS_SLUG,
76
  'root_slug' => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG,
77
  'has_directory' => is_multisite(), // Non-multisite installs don't need a top-level Sites directory, since there's only one site.
78
+ 'directory_title' => isset( $bp->pages->blogs->title ) ? $bp->pages->blogs->title : $default_directory_title,
79
  'notification_callback' => 'bp_blogs_format_notifications',
80
  'search_string' => __( 'Search sites...', 'buddypress' ),
81
  'autocomplete_all' => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
bp-core/admin/bp-core-admin-components.php CHANGED
@@ -276,6 +276,7 @@ function bp_core_admin_components_settings_handler() {
276
  $bp = buddypress();
277
 
278
  // Save settings and upgrade schema.
 
279
  require_once( $bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
280
 
281
  $submitted = stripslashes_deep( $_POST['bp_components'] );
276
  $bp = buddypress();
277
 
278
  // Save settings and upgrade schema.
279
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
280
  require_once( $bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
281
 
282
  $submitted = stripslashes_deep( $_POST['bp_components'] );
bp-core/admin/bp-core-admin-functions.php CHANGED
@@ -804,7 +804,29 @@ function bp_admin_do_wp_nav_menu_meta_box() {
804
  </ul>
805
  </div>
806
 
 
 
 
 
 
 
 
 
 
 
 
807
  <p class="button-controls">
 
 
 
 
 
 
 
 
 
 
 
808
  <span class="add-to-menu">
809
  <input type="submit"<?php if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : wp_nav_menu_disabled_check( $nav_menu_selected_id ); endif; ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'buddypress' ); ?>" name="add-custom-menu-item" id="submit-buddypress-menu" />
810
  <span class="spinner"></span>
@@ -1091,3 +1113,214 @@ function bp_core_admin_user_spammed_js() {
1091
  </script>
1092
  <?php
1093
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
804
  </ul>
805
  </div>
806
 
807
+ <?php
808
+ $removed_args = array(
809
+ 'action',
810
+ 'customlink-tab',
811
+ 'edit-menu-item',
812
+ 'menu-item',
813
+ 'page-tab',
814
+ '_wpnonce',
815
+ );
816
+ ?>
817
+
818
  <p class="button-controls">
819
+ <span class="list-controls">
820
+ <a href="<?php
821
+ echo esc_url( add_query_arg(
822
+ array(
823
+ $post_type_name . '-tab' => 'all',
824
+ 'selectall' => 1,
825
+ ),
826
+ remove_query_arg( $removed_args )
827
+ ) );
828
+ ?>#buddypress-menu" class="select-all"><?php _e( 'Select All', 'buddypress' ); ?></a>
829
+ </span>
830
  <span class="add-to-menu">
831
  <input type="submit"<?php if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : wp_nav_menu_disabled_check( $nav_menu_selected_id ); endif; ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'buddypress' ); ?>" name="add-custom-menu-item" id="submit-buddypress-menu" />
832
  <span class="spinner"></span>
1113
  </script>
1114
  <?php
1115
  }
1116
+
1117
+ /** Upgrade protection *******************************************************/
1118
+
1119
+ /**
1120
+ * Determines whether the current installation is running PHP 5.3 or greater.
1121
+ *
1122
+ * BuddyPress 2.8 introduces a minimum PHP requirement of PHP 5.3.
1123
+ *
1124
+ * @since 2.7.0
1125
+ *
1126
+ * @return bool
1127
+ */
1128
+ function bp_core_admin_is_running_php53_or_greater() {
1129
+ return version_compare( PHP_VERSION, '5.3', '>=' );
1130
+ }
1131
+
1132
+ /**
1133
+ * Replaces WP's default update notice on plugins.php with an error message, when site is not running PHP 5.3 or greater.
1134
+ *
1135
+ * @since 2.7.0
1136
+ */
1137
+ function bp_core_admin_maybe_disable_update_row_for_php53_requirement() {
1138
+ if ( bp_core_admin_is_running_php53_or_greater() ) {
1139
+ return;
1140
+ }
1141
+
1142
+ $loader = basename( constant( 'BP_PLUGIN_DIR' ) ) . '/bp-loader.php';
1143
+
1144
+ remove_action( "after_plugin_row_{$loader}", 'wp_plugin_update_row', 10, 2 );
1145
+ add_action( "after_plugin_row_{$loader}", 'bp_core_admin_php52_plugin_row', 10, 2 );
1146
+ }
1147
+ add_action( 'load-plugins.php', 'bp_core_admin_maybe_disable_update_row_for_php53_requirement', 100 );
1148
+
1149
+ /**
1150
+ * On the "Dashboard > Updates" page, remove BuddyPress from plugins list if PHP < 5.3.
1151
+ *
1152
+ * @since 2.7.0
1153
+ */
1154
+ function bp_core_admin_maybe_remove_from_update_core() {
1155
+ if ( bp_core_admin_is_running_php53_or_greater() ) {
1156
+ return;
1157
+ }
1158
+
1159
+ // Add filter to remove BP from the update plugins list.
1160
+ add_filter( 'site_transient_update_plugins', 'bp_core_admin_remove_buddypress_from_update_transient' );
1161
+ }
1162
+ add_action( 'load-update-core.php', 'bp_core_admin_maybe_remove_from_update_core' );
1163
+
1164
+ /**
1165
+ * Filter callback to remove BuddyPress from the update plugins list.
1166
+ *
1167
+ * Attached to the 'site_transient_update_plugins' filter.
1168
+ *
1169
+ * @since 2.7.0
1170
+ *
1171
+ * @param object $retval Object of plugin update data.
1172
+ * @return object
1173
+ */
1174
+ function bp_core_admin_remove_buddypress_from_update_transient( $retval ) {
1175
+ $loader = basename( constant( 'BP_PLUGIN_DIR' ) ) . '/bp-loader.php';
1176
+
1177
+ // Remove BP from update plugins list.
1178
+ if ( isset( $retval->response[ $loader ] ) ) {
1179
+ unset( $retval->response[ $loader ] );
1180
+ }
1181
+
1182
+ return $retval;
1183
+ }
1184
+
1185
+ /**
1186
+ * Outputs a replacement for WP's default update notice, when site is not running PHP 5.3 or greater.
1187
+ *
1188
+ * When we see that a site is not running PHP 5.3 and is trying to update to
1189
+ * BP 2.8+, we replace WP's default notice with our own, which both provides a
1190
+ * link to our documentation of the requirement, and removes the link that
1191
+ * allows a single plugin to be updated.
1192
+ *
1193
+ * @since 2.7.0
1194
+ *
1195
+ * @param string $file Plugin filename. buddypress/bp-loader.php.
1196
+ * @param array $plugin_data Data about the BuddyPress plugin, as returned by the
1197
+ * plugins API.
1198
+ */
1199
+ function bp_core_admin_php52_plugin_row( $file, $plugin_data ) {
1200
+ if ( is_multisite() && ! is_network_admin() ) {
1201
+ return;
1202
+ }
1203
+
1204
+ $current = get_site_transient( 'update_plugins' );
1205
+ if ( ! isset( $current->response[ $file ] ) ) {
1206
+ return false;
1207
+ }
1208
+
1209
+ $response = $current->response[ $file ];
1210
+
1211
+ // No need to do this if update is for < BP 2.8.
1212
+ if ( version_compare( $response->new_version, '2.8', '<' ) ) {
1213
+ return false;
1214
+ }
1215
+
1216
+ $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
1217
+
1218
+ if ( is_network_admin() ) {
1219
+ $active_class = is_plugin_active_for_network( $file ) ? ' active' : '';
1220
+ } else {
1221
+ $active_class = is_plugin_active( $file ) ? ' active' : '';
1222
+ }
1223
+
1224
+ // WP 4.6 uses different markup for the plugin row notice.
1225
+ if ( function_exists( 'wp_get_ext_types' ) ) {
1226
+ $p = '<p>%s</p>';
1227
+
1228
+ // WP < 4.6.
1229
+ } else {
1230
+ $p = '%s';
1231
+
1232
+ // Ugh.
1233
+ $active_class .= ' not-shiny';
1234
+ }
1235
+
1236
+ echo '<tr class="plugin-update-tr' . $active_class . '" id="' . esc_attr( $response->slug . '-update' ) . '" data-slug="' . esc_attr( $response->slug ) . '" data-plugin="' . esc_attr( $file ) . '"><td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange"><div class="update-message inline notice notice-error notice-alt">';
1237
+
1238
+ printf( $p,
1239
+ esc_html__( 'A BuddyPress update is available, but your system is not compatible.', 'buddypress' ) . ' ' .
1240
+ sprintf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' )
1241
+ );
1242
+
1243
+ echo '</div></td></tr>';
1244
+
1245
+ /*
1246
+ * JavaScript to disable the bulk upgrade checkbox.
1247
+ * See WP_Plugins_List_Table::single_row().
1248
+ */
1249
+ $checkbox_id = 'checkbox_' . md5( $plugin_data['Name'] );
1250
+ echo "<script type='text/javascript'>document.getElementById('$checkbox_id').disabled = true;</script>";
1251
+ }
1252
+
1253
+ /**
1254
+ * Add an admin notice to installations that are not running PHP 5.3+.
1255
+ *
1256
+ * @since 2.7.0
1257
+ */
1258
+ function bp_core_admin_php53_admin_notice() {
1259
+ // If not on the Plugins page, stop now.
1260
+ if ( 'plugins' !== get_current_screen()->parent_base ) {
1261
+ return;
1262
+ }
1263
+
1264
+ if ( ! current_user_can( 'update_core' ) ) {
1265
+ return;
1266
+ }
1267
+
1268
+ if ( bp_core_admin_is_running_php53_or_greater() ) {
1269
+ return;
1270
+ }
1271
+
1272
+ $notice_id = 'bp28-php53';
1273
+ if ( bp_get_option( "bp-dismissed-notice-$notice_id" ) ) {
1274
+ return;
1275
+ }
1276
+
1277
+ $bp = buddypress();
1278
+ $min = bp_core_get_minified_asset_suffix();
1279
+
1280
+ wp_enqueue_script(
1281
+ 'bp-dismissible-admin-notices',
1282
+ "{$bp->plugin_url}bp-core/admin/js/dismissible-admin-notices{$min}.js",
1283
+ array( 'jquery' ),
1284
+ bp_get_version(),
1285
+ true
1286
+ );
1287
+
1288
+ $php_version = PHP_VERSION;
1289
+
1290
+ ?>
1291
+
1292
+ <div id="message" class="error notice is-dismissible bp-is-dismissible" data-noticeid="<?php echo esc_attr( $notice_id ); ?>">
1293
+ <p><strong><?php esc_html_e( 'Your site is not ready for BuddyPress 2.8.', 'buddypress' ); ?></strong></p>
1294
+ <p><?php printf( esc_html__( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'buddypress' ), $php_version ); ?> <?php printf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' ); ?></p>
1295
+ <?php wp_nonce_field( "bp-dismissible-notice-$notice_id", "bp-dismissible-nonce-$notice_id" ); ?>
1296
+ </div>
1297
+ <?php
1298
+ }
1299
+ add_action( 'admin_notices', 'bp_core_admin_php53_admin_notice' );
1300
+ add_action( 'network_admin_notices', 'bp_core_admin_php53_admin_notice' );
1301
+
1302
+ /**
1303
+ * Catch and process an admin notice dismissal.
1304
+ *
1305
+ * @since 2.7.0
1306
+ */
1307
+ function bp_core_admin_notice_dismiss_callback() {
1308
+ if ( ! current_user_can( 'install_plugins' ) ) {
1309
+ wp_send_json_error();
1310
+ }
1311
+
1312
+ if ( empty( $_POST['nonce'] ) || empty( $_POST['notice_id'] ) ) {
1313
+ wp_send_json_error();
1314
+ }
1315
+
1316
+ $notice_id = wp_unslash( $_POST['notice_id'] );
1317
+
1318
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'bp-dismissible-notice-' . $notice_id ) ) {
1319
+ wp_send_json_error();
1320
+ }
1321
+
1322
+ bp_update_option( "bp-dismissed-notice-$notice_id", 1 );
1323
+
1324
+ wp_send_json_success();
1325
+ }
1326
+ add_action( 'wp_ajax_bp_dismiss_notice', 'bp_core_admin_notice_dismiss_callback' );
bp-core/admin/bp-core-admin-schema.php CHANGED
@@ -10,23 +10,6 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
- /**
14
- * Get the DB schema to use for BuddyPress components.
15
- *
16
- * @since 1.1.0
17
- *
18
- * @global $wpdb $wpdb
19
- *
20
- * @return string The default database character-set, if set.
21
- */
22
- function bp_core_set_charset() {
23
- global $wpdb;
24
-
25
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
26
-
27
- return !empty( $wpdb->charset ) ? "DEFAULT CHARACTER SET {$wpdb->charset}" : '';
28
- }
29
-
30
  /**
31
  * Main installer.
32
  *
@@ -93,7 +76,7 @@ function bp_core_install( $active_components = false ) {
93
  */
94
  function bp_core_install_notifications() {
95
  $sql = array();
96
- $charset_collate = bp_core_set_charset();
97
  $bp_prefix = bp_core_get_table_prefix();
98
 
99
  $sql[] = "CREATE TABLE {$bp_prefix}bp_notifications (
@@ -134,7 +117,7 @@ function bp_core_install_notifications() {
134
  */
135
  function bp_core_install_activity_streams() {
136
  $sql = array();
137
- $charset_collate = bp_core_set_charset();
138
  $bp_prefix = bp_core_get_table_prefix();
139
 
140
  $sql[] = "CREATE TABLE {$bp_prefix}bp_activity (
@@ -184,7 +167,7 @@ function bp_core_install_activity_streams() {
184
  */
185
  function bp_core_install_friends() {
186
  $sql = array();
187
- $charset_collate = bp_core_set_charset();
188
  $bp_prefix = bp_core_get_table_prefix();
189
 
190
  $sql[] = "CREATE TABLE {$bp_prefix}bp_friends (
@@ -209,7 +192,7 @@ function bp_core_install_friends() {
209
  */
210
  function bp_core_install_groups() {
211
  $sql = array();
212
- $charset_collate = bp_core_set_charset();
213
  $bp_prefix = bp_core_get_table_prefix();
214
 
215
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups (
@@ -219,10 +202,12 @@ function bp_core_install_groups() {
219
  slug varchar(200) NOT NULL,
220
  description longtext NOT NULL,
221
  status varchar(10) NOT NULL DEFAULT 'public',
 
222
  enable_forum tinyint(1) NOT NULL DEFAULT '1',
223
  date_created datetime NOT NULL,
224
  KEY creator_id (creator_id),
225
- KEY status (status)
 
226
  ) {$charset_collate};";
227
 
228
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_members (
@@ -266,7 +251,7 @@ function bp_core_install_groups() {
266
  */
267
  function bp_core_install_private_messaging() {
268
  $sql = array();
269
- $charset_collate = bp_core_set_charset();
270
  $bp_prefix = bp_core_get_table_prefix();
271
 
272
  $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_messages (
@@ -325,7 +310,7 @@ function bp_core_install_extended_profiles() {
325
  global $wpdb;
326
 
327
  $sql = array();
328
- $charset_collate = bp_core_set_charset();
329
  $bp_prefix = bp_core_get_table_prefix();
330
 
331
  // These values should only be updated if they are not already present.
@@ -410,7 +395,7 @@ function bp_core_install_extended_profiles() {
410
  */
411
  function bp_core_install_blog_tracking() {
412
  $sql = array();
413
- $charset_collate = bp_core_set_charset();
414
  $bp_prefix = bp_core_get_table_prefix();
415
 
416
  $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs (
@@ -517,7 +502,7 @@ function bp_core_install_emails() {
517
  );
518
 
519
  $emails = bp_email_get_schema();
520
- $descriptions = bp_email_get_type_schema();
521
 
522
  // Add these emails to the database.
523
  foreach ( $emails as $id => $email ) {
@@ -535,6 +520,8 @@ function bp_core_install_emails() {
535
  }
536
  }
537
 
 
 
538
  /**
539
  * Fires after BuddyPress adds the posts for its emails.
540
  *
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Main installer.
15
  *
76
  */
77
  function bp_core_install_notifications() {
78
  $sql = array();
79
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
80
  $bp_prefix = bp_core_get_table_prefix();
81
 
82
  $sql[] = "CREATE TABLE {$bp_prefix}bp_notifications (
117
  */
118
  function bp_core_install_activity_streams() {
119
  $sql = array();
120
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
121
  $bp_prefix = bp_core_get_table_prefix();
122
 
123
  $sql[] = "CREATE TABLE {$bp_prefix}bp_activity (
167
  */
168
  function bp_core_install_friends() {
169
  $sql = array();
170
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
171
  $bp_prefix = bp_core_get_table_prefix();
172
 
173
  $sql[] = "CREATE TABLE {$bp_prefix}bp_friends (
192
  */
193
  function bp_core_install_groups() {
194
  $sql = array();
195
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
196
  $bp_prefix = bp_core_get_table_prefix();
197
 
198
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups (
202
  slug varchar(200) NOT NULL,
203
  description longtext NOT NULL,
204
  status varchar(10) NOT NULL DEFAULT 'public',
205
+ parent_id bigint(20) NOT NULL DEFAULT 0,
206
  enable_forum tinyint(1) NOT NULL DEFAULT '1',
207
  date_created datetime NOT NULL,
208
  KEY creator_id (creator_id),
209
+ KEY status (status),
210
+ KEY parent_id (parent_id)
211
  ) {$charset_collate};";
212
 
213
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_members (
251
  */
252
  function bp_core_install_private_messaging() {
253
  $sql = array();
254
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
255
  $bp_prefix = bp_core_get_table_prefix();
256
 
257
  $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_messages (
310
  global $wpdb;
311
 
312
  $sql = array();
313
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
314
  $bp_prefix = bp_core_get_table_prefix();
315
 
316
  // These values should only be updated if they are not already present.
395
  */
396
  function bp_core_install_blog_tracking() {
397
  $sql = array();
398
+ $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
399
  $bp_prefix = bp_core_get_table_prefix();
400
 
401
  $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs (
502
  );
503
 
504
  $emails = bp_email_get_schema();
505
+ $descriptions = bp_email_get_type_schema( 'description' );
506
 
507
  // Add these emails to the database.
508
  foreach ( $emails as $id => $email ) {
520
  }
521
  }
522
 
523
+ bp_update_option( 'bp-emails-unsubscribe-salt', base64_encode( wp_generate_password( 64, true, true ) ) );
524
+
525
  /**
526
  * Fires after BuddyPress adds the posts for its emails.
527
  *
bp-core/admin/bp-core-admin-slugs.php CHANGED
@@ -184,12 +184,20 @@ function bp_core_admin_slugs_options() {
184
 
185
  <h3><?php _e( 'Registration', 'buddypress' ); ?></h3>
186
 
187
- <p><?php _e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?></p>
 
 
 
 
 
 
 
 
188
 
189
  <table class="form-table">
190
  <tbody>
191
 
192
- <?php foreach ( $static_pages as $name => $label ) : ?>
193
 
194
  <tr valign="top">
195
  <th scope="row">
@@ -218,7 +226,7 @@ function bp_core_admin_slugs_options() {
218
  </td>
219
  </tr>
220
 
221
- <?php endforeach ?>
222
 
223
  <?php
224
 
184
 
185
  <h3><?php _e( 'Registration', 'buddypress' ); ?></h3>
186
 
187
+ <?php if ( bp_get_signup_allowed() ) : ?>
188
+ <p><?php _e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?></p>
189
+ <?php else : ?>
190
+ <?php if ( is_multisite() ) : ?>
191
+ <p><?php printf( __( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by selecting either the "User accounts may be registered" or "Both sites and user accounts can be registered" option on <a href="%s">this page</a>.', 'buddypress' ), network_admin_url( 'settings.php' ) ); ?></p>
192
+ <?php else : ?>
193
+ <p><?php printf( __( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by clicking on the "Anyone can register" checkbox on <a href="%s">this page</a>.', 'buddypress' ), admin_url( 'options-general.php' ) ); ?></p>
194
+ <?php endif; ?>
195
+ <?php endif; ?>
196
 
197
  <table class="form-table">
198
  <tbody>
199
 
200
+ <?php if ( bp_get_signup_allowed() ) : foreach ( $static_pages as $name => $label ) : ?>
201
 
202
  <tr valign="top">
203
  <th scope="row">
226
  </td>
227
  </tr>
228
 
229
+ <?php endforeach; endif; ?>
230
 
231
  <?php
232
 
bp-core/admin/bp-core-admin-tools.php CHANGED
@@ -21,42 +21,33 @@ function bp_core_admin_tools() {
21
 
22
  <h1><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1>
23
 
24
- <p>
25
- <?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?>
26
- <?php esc_html_e( 'Use the tools below to manually recalculate these relationships.', 'buddypress' ); ?>
27
  </p>
28
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p>
29
 
30
  <form class="settings" method="post" action="">
31
- <table class="form-table">
32
- <tbody>
33
- <tr valign="top">
34
- <th scope="row"><?php esc_html_e( 'Repair tools', 'buddypress' ) ?></th>
35
- <td>
36
- <fieldset>
37
- <legend class="screen-reader-text"><span><?php
38
- /* translators: accessibility text */
39
- esc_html_e( 'Repair', 'buddypress' );
40
- ?></span></legend>
41
-
42
- <?php foreach ( bp_admin_repair_list() as $item ) : ?>
43
-
44
- <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"><input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?></label><br />
45
-
46
- <?php endforeach; ?>
47
-
48
- </fieldset>
49
- </td>
50
- </tr>
51
- </tbody>
52
- </table>
53
-
54
- <fieldset class="submit">
55
- <input class="button-primary" type="submit" name="bp-tools-submit" value="<?php esc_attr_e( 'Repair Items', 'buddypress' ); ?>" />
56
- <?php wp_nonce_field( 'bp-do-counts' ); ?>
57
  </fieldset>
 
58
  </form>
 
59
  </div>
 
60
  <?php
61
  }
62
 
21
 
22
  <h1><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1>
23
 
24
+ <p><?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?></p>
25
+ <p><?php esc_html_e( 'Use the tools below to manually recalculate these relationships.', 'buddypress' ); ?>
 
26
  </p>
27
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p>
28
 
29
  <form class="settings" method="post" action="">
30
+
31
+ <fieldset>
32
+ <legend><?php esc_html_e( 'Repair tools', 'buddypress' ) ?></legend>
33
+
34
+ <div class="checkbox">
35
+ <?php foreach ( bp_admin_repair_list() as $item ) : ?>
36
+ <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"><input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?></label>
37
+ <?php endforeach; ?>
38
+ </div>
39
+
40
+ <p class="submit">
41
+ <input class="button-primary" type="submit" name="bp-tools-submit" value="<?php esc_attr_e( 'Repair Items', 'buddypress' ); ?>" />
42
+ <?php wp_nonce_field( 'bp-do-counts' ); ?>
43
+ </p>
44
+
 
 
 
 
 
 
 
 
 
 
 
45
  </fieldset>
46
+
47
  </form>
48
+
49
  </div>
50
+
51
  <?php
52
  }
53
 
bp-core/admin/css/common-rtl.css CHANGED
@@ -20,6 +20,8 @@ TABLE OF CONTENTS:
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
 
 
23
  ------------------------------------------------------------------------------*/
24
 
25
  /*------------------------------------------------------------------------------
@@ -64,7 +66,27 @@ TABLE OF CONTENTS:
64
  .index_page_bp-about .bp-headline-feature,
65
  .dashboard_page_bp-about .bp-headline-feature {
66
  margin-bottom: 3em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  text-align: center;
 
68
  }
69
 
70
  .index_page_bp-about .bp-headline-feature h3,
@@ -72,16 +94,15 @@ TABLE OF CONTENTS:
72
  .dashboard_page_bp-about .bp-headline-feature h3,
73
  .dashboard_page_bp-about .bp-headline-feature .headline-title {
74
  font-size: 2.2em;
75
- line-height: 1.3;
76
- margin: 1.25em 0 0.6em;
77
- text-align: center;
78
  }
79
 
80
  .index_page_bp-about .bp-headline-feature p,
81
  .dashboard_page_bp-about .bp-headline-feature p {
82
  font-size: 1.15em;
83
- margin: 1.15em auto 0.6em;
84
- max-width: 80%;
85
  }
86
 
87
  .index_page_bp-about .bp-headline-feature .introduction,
@@ -96,26 +117,53 @@ TABLE OF CONTENTS:
96
  .index_page_bp-about .bp-features-section,
97
  .dashboard_page_bp-about .bp-features-section {
98
  clear: both;
99
- margin-bottom: 2em;
100
- margin-top: 2em;
101
  padding-bottom: 0;
102
  }
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  .index_page_bp-about .bp-features-section h3,
105
  .dashboard_page_bp-about .bp-features-section h3 {
106
- font-size: 1.8em;
107
- font-weight: normal;
108
- line-height: 1.5em;
109
- margin: 0 0 0.6em;
110
  text-align: center;
111
  }
112
 
113
  .index_page_bp-about .bp-feature,
114
  .dashboard_page_bp-about .bp-feature {
115
- clear: both;
116
- overflow: hidden;
117
  margin-bottom: 3em;
118
- margin-top: 3em;
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
120
 
121
  .index_page_bp-about .bp-feature::after,
@@ -125,55 +173,28 @@ TABLE OF CONTENTS:
125
 
126
  .index_page_bp-about .bp-feature h4,
127
  .dashboard_page_bp-about .bp-feature h4 {
128
- color: #23282d;
129
- display: inline-block;
130
  font-size: 1.25em;
131
- margin-bottom: 0.6em;
 
 
132
  margin-top: 0;
133
- width: 47%;
134
  }
135
 
136
  .index_page_bp-about .bp-feature p,
137
  .dashboard_page_bp-about .bp-feature p {
138
- float: right;
139
- font-size: 1.15em;
140
- width: 47%;
141
- }
142
-
143
- .index_page_bp-about .bp-feature.opposite h4,
144
- .dashboard_page_bp-about .bp-feature.opposite h4,
145
- .index_page_bp-about .bp-feature.opposite p,
146
- .dashboard_page_bp-about .bp-feature.opposite p {
147
- float: left;
148
- }
149
-
150
- .index_page_bp-about .bp-feature img,
151
- .dashboard_page_bp-about .bp-feature img {
152
- clear: left;
153
- float: left;
154
- margin-right: 2.5%;
155
- width: 50%;
156
- max-width: 50%;
157
- }
158
-
159
- .index_page_bp-about .bp-feature.opposite img,
160
- .dashboard_page_bp-about .bp-feature.opposite img{
161
- clear: right;
162
- float: right;
163
- margin-right: 0;
164
- margin-left: 2.5%;
165
  }
166
 
167
-
168
  /*
169
  * 1.2.3 Changelog Section
170
  */
171
  .index_page_bp-about .bp-changelog-section,
172
  .dashboard_page_bp-about .bp-changelog-section {
173
- border-top: 1px solid #ccc;
174
  clear: both;
175
- margin-bottom: 3em;
176
- margin-top: 2em;
 
177
  padding-bottom: 0;
178
  }
179
 
@@ -188,7 +209,7 @@ TABLE OF CONTENTS:
188
  font-size: 1.8em;
189
  font-weight: 300;
190
  line-height: 1.5;
191
- margin: 1.25em 0 0.6em;
192
  text-align: center;
193
  }
194
 
@@ -212,39 +233,38 @@ TABLE OF CONTENTS:
212
 
213
  .index_page_bp-about .bp-changelog h4,
214
  .dashboard_page_bp-about .bp-changelog h4 {
215
- font-size: 1.15em;
216
- margin-top: 1.5em;
217
- margin-bottom: 0.6em;
218
  }
219
 
220
  .index_page_bp-about .bp-changelog p,
221
  .dashboard_page_bp-about .bp-changelog p {
222
- font-size: 1.05em;
223
- margin-top: 0.75em;
 
 
 
224
  }
225
 
226
  .bp-assets {
227
  clear: both;
228
  margin-bottom: 2em;
229
- padding-top: 3em;
230
  }
231
 
232
  @media screen and ( max-width: 782px ) {
233
  .index_page_bp-about .bp-headline-feature,
234
  .dashboard_page_bp-about .bp-headline-feature {
235
- max-width: 100%;
236
- }
237
- .index_page_bp-about .bp-headline-feature .headline-title,
238
- .dashboard_page_bp-about .bp-headline-feature .headline-title {
239
- font-size: 1.5em;
240
- line-height: 1.5;
241
  }
242
- .index_page_bp-about .bp-headline-feature p,
243
- .dashboard_page_bp-about .bp-headline-feature p {
244
- max-width: 100%;
 
245
  }
246
  .index_page_bp-about .bp-features-section,
247
  .dashboard_page_bp-about .bp-features-section {
 
248
  margin-bottom: 0;
249
  margin-top: 2em;
250
  }
@@ -255,6 +275,8 @@ TABLE OF CONTENTS:
255
  font-size: 1.8em;
256
  font-weight: 300;
257
  line-height: 1.5;
 
 
258
  }
259
  .index_page_bp-about .bp-features-section h4,
260
  .dashboard_page_bp-about .bp-features-section h4,
@@ -267,8 +289,17 @@ TABLE OF CONTENTS:
267
  }
268
  .index_page_bp-about .bp-feature,
269
  .dashboard_page_bp-about .bp-feature {
 
 
270
  margin-bottom: 1em;
271
  margin-top: 1em;
 
 
 
 
 
 
 
272
  }
273
  .index_page_bp-about .bp-feature h4,
274
  .dashboard_page_bp-about .bp-feature h4,
@@ -282,19 +313,22 @@ TABLE OF CONTENTS:
282
  .dashboard_page_bp-about .bp-feature.opposite p {
283
  float: none;
284
  }
285
- .index_page_bp-about .bp-feature img,
286
- .dashboard_page_bp-about .bp-feature img {
287
- clear: right;
288
- float: none;
289
- margin-right: 0;
290
- width: 100%;
291
- max-width: 100%;
292
  }
293
- .index_page_bp-about .bp-feature.opposite img,
294
- .dashboard_page_bp-about .bp-feature.opposite img{
295
- clear: right;
296
- float: none;
297
- margin-left: 0;
 
 
 
 
 
 
298
  }
299
  .index_page_bp-about .bp-changelog-section .two-col > div,
300
  .dashboard_page_bp-about .bp-changelog-section .two-col > div {
@@ -303,8 +337,58 @@ TABLE OF CONTENTS:
303
  width: 100%;
304
  }
305
  }
306
-
307
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  /*------------------------------------------------------------------------------
309
  * 2.0 Dashicons
310
  *----------------------------------------------------------------------------*/
@@ -491,3 +575,60 @@ body.post-type-bp-email .categorydiv label {
491
  padding-right: 25px;
492
  text-indent: -25px;
493
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
23
+ 5.0 Tools - BuddyPress
24
+ 6.0 Plugins page
25
  ------------------------------------------------------------------------------*/
26
 
27
  /*------------------------------------------------------------------------------
66
  .index_page_bp-about .bp-headline-feature,
67
  .dashboard_page_bp-about .bp-headline-feature {
68
  margin-bottom: 3em;
69
+ margin-top: 3em;
70
+ padding: 2em 3em;
71
+ }
72
+
73
+ .index_page_bp-about .bp-headline,
74
+ .dashboard_page_bp-about .bp-headline {
75
+ margin: 0 auto;
76
+ width: 35em;
77
+ }
78
+
79
+ .index_page_bp-about .bp-headline span.dashicons,
80
+ .dashboard_page_bp-about .bp-headline span.dashicons {
81
+ background-color: #f1f1f1;
82
+ clear: right;
83
+ font-size: 100px;
84
+ float: right;
85
+ height: 100px;
86
+ line-height: 100px;
87
+ margin: 0 0 15px 15px ;
88
  text-align: center;
89
+ width: 100px;
90
  }
91
 
92
  .index_page_bp-about .bp-headline-feature h3,
94
  .dashboard_page_bp-about .bp-headline-feature h3,
95
  .dashboard_page_bp-about .bp-headline-feature .headline-title {
96
  font-size: 2.2em;
97
+ font-weight: 300;
98
+ line-height: 1;
99
+ margin: 0 125px 0 0;
100
  }
101
 
102
  .index_page_bp-about .bp-headline-feature p,
103
  .dashboard_page_bp-about .bp-headline-feature p {
104
  font-size: 1.15em;
105
+ margin: 1.15em 125px 0.6em auto;
 
106
  }
107
 
108
  .index_page_bp-about .bp-headline-feature .introduction,
117
  .index_page_bp-about .bp-features-section,
118
  .dashboard_page_bp-about .bp-features-section {
119
  clear: both;
120
+ margin-top: 3em;
121
+ overflow: hidden;
122
  padding-bottom: 0;
123
  }
124
 
125
+ .index_page_bp-about span.dashicons,
126
+ .dashboard_page_bp-about span.dashicons {
127
+ background-color: #fff;
128
+ border-radius: 50%;
129
+ clear: right;
130
+ color: #d84800;
131
+ font-size: 50px;
132
+ float: right;
133
+ height: 80px;
134
+ line-height: 80px;
135
+ margin: 0 0 15px 15px ;
136
+ text-align: center;
137
+ width: 80px;
138
+ }
139
+
140
  .index_page_bp-about .bp-features-section h3,
141
  .dashboard_page_bp-about .bp-features-section h3 {
142
+ font-size: 2em;
143
+ font-weight: 300;
144
+ line-height: 1.5;
145
+ margin: 0 auto 3em;
146
  text-align: center;
147
  }
148
 
149
  .index_page_bp-about .bp-feature,
150
  .dashboard_page_bp-about .bp-feature {
151
+ float: right;
 
152
  margin-bottom: 3em;
153
+ margin-left: 4.799999999%;
154
+ width: 47.6%;
155
+ }
156
+
157
+
158
+ .index_page_bp-about .bp-feature code,
159
+ .dashboard_page_bp-about .bp-feature code{
160
+ font-size: 0.95em;
161
+ line-height: 1.5;
162
+ }
163
+
164
+ .index_page_bp-about .bp-feature:nth-of-type(2n),
165
+ .dashboard_page_bp-about .bp-feature:nth-of-type(2n) {
166
+ margin-left: 0;
167
  }
168
 
169
  .index_page_bp-about .bp-feature::after,
173
 
174
  .index_page_bp-about .bp-feature h4,
175
  .dashboard_page_bp-about .bp-feature h4 {
 
 
176
  font-size: 1.25em;
177
+ line-height: 1.5;
178
+ margin-bottom: 0;
179
+ margin-right: 110px;
180
  margin-top: 0;
181
+ text-align: right;
182
  }
183
 
184
  .index_page_bp-about .bp-feature p,
185
  .dashboard_page_bp-about .bp-feature p {
186
+ margin-right: 110px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
 
 
189
  /*
190
  * 1.2.3 Changelog Section
191
  */
192
  .index_page_bp-about .bp-changelog-section,
193
  .dashboard_page_bp-about .bp-changelog-section {
 
194
  clear: both;
195
+ margin-bottom: 8em;
196
+ margin-top: 3em;
197
+ overflow: hidden;
198
  padding-bottom: 0;
199
  }
200
 
209
  font-size: 1.8em;
210
  font-weight: 300;
211
  line-height: 1.5;
212
+ margin: 0 auto 0.5em;
213
  text-align: center;
214
  }
215
 
233
 
234
  .index_page_bp-about .bp-changelog h4,
235
  .dashboard_page_bp-about .bp-changelog h4 {
236
+ font-size: 1em;
237
+ margin-bottom: 0;
238
+ margin-top: 0;
239
  }
240
 
241
  .index_page_bp-about .bp-changelog p,
242
  .dashboard_page_bp-about .bp-changelog p {
243
+ margin-bottom: 3em;
244
+ }
245
+
246
+ .bp-changelog-url {
247
+ text-align: center;
248
  }
249
 
250
  .bp-assets {
251
  clear: both;
252
  margin-bottom: 2em;
 
253
  }
254
 
255
  @media screen and ( max-width: 782px ) {
256
  .index_page_bp-about .bp-headline-feature,
257
  .dashboard_page_bp-about .bp-headline-feature {
258
+ padding: 0;
 
 
 
 
 
259
  }
260
+ .index_page_bp-about .bp-headline,
261
+ .dashboard_page_bp-about .bp-headline {
262
+ margin: 0;
263
+ width: 97%;
264
  }
265
  .index_page_bp-about .bp-features-section,
266
  .dashboard_page_bp-about .bp-features-section {
267
+ clear: both;
268
  margin-bottom: 0;
269
  margin-top: 2em;
270
  }
275
  font-size: 1.8em;
276
  font-weight: 300;
277
  line-height: 1.5;
278
+ margin-bottom: 0.5em;
279
+ margin-top: 0.5em;
280
  }
281
  .index_page_bp-about .bp-features-section h4,
282
  .dashboard_page_bp-about .bp-features-section h4,
289
  }
290
  .index_page_bp-about .bp-feature,
291
  .dashboard_page_bp-about .bp-feature {
292
+ clear: both;
293
+ float: right;
294
  margin-bottom: 1em;
295
  margin-top: 1em;
296
+ margin-left: 0;
297
+ padding-left: 1em;
298
+ width: 100%;
299
+ }
300
+ .index_page_bp-about .bp-feature span,
301
+ .dashboard_page_bp-about .bp-feature span {
302
+ margin-top: 0.33em;
303
  }
304
  .index_page_bp-about .bp-feature h4,
305
  .dashboard_page_bp-about .bp-feature h4,
313
  .dashboard_page_bp-about .bp-feature.opposite p {
314
  float: none;
315
  }
316
+ .index_page_bp-about .bp-changelog-section,
317
+ .dashboard_page_bp-about .bp-changelog-section {
318
+ clear: both;
319
+ margin-bottom: 2em;
 
 
 
320
  }
321
+ .index_page_bp-about .bp-changelog-section .changelog-title,
322
+ .dashboard_page_bp-about .bp-changelog-section .changelog-title {
323
+ margin-bottom: 1em;
324
+ }
325
+ .index_page_bp-about .bp-changelog h4,
326
+ .dashboard_page_bp-about .bp-changelog h4 {
327
+ font-size: 1em;
328
+ }
329
+ .index_page_bp-about .bp-changelog p,
330
+ .dashboard_page_bp-about .bp-changelog p {
331
+ margin-bottom: 2em;
332
  }
333
  .index_page_bp-about .bp-changelog-section .two-col > div,
334
  .dashboard_page_bp-about .bp-changelog-section .two-col > div {
337
  width: 100%;
338
  }
339
  }
340
+ @media screen and ( max-width: 360px ) {
341
+ .index_page_bp-about .bp-headline,
342
+ .dashboard_page_bp-about .bp-headline {
343
+ text-align: center;
344
+ }
345
+ .index_page_bp-about .bp-headline span.dashicons,
346
+ .dashboard_page_bp-about .bp-headline span.dashicons {
347
+ clear: none;
348
+ font-size: 80px;
349
+ float: none;
350
+ height: 80px;
351
+ line-height: 80px;
352
+ margin: 0 auto;
353
+ width: 80px;
354
+ }
355
+ .index_page_bp-about .bp-headline-feature h3,
356
+ .index_page_bp-about .bp-headline-feature .headline-title,
357
+ .dashboard_page_bp-about .bp-headline-feature h3,
358
+ .dashboard_page_bp-about .bp-headline-feature .headline-title {
359
+ margin: 1em 0 0 0;
360
+ text-align: right;
361
+ }
362
+ .index_page_bp-about .bp-headline-feature p,
363
+ .dashboard_page_bp-about .bp-headline-feature p {
364
+ margin: 1.15em 0 0.6em auto;
365
+ text-align: right;
366
+ }
367
+ .index_page_bp-about .bp-headline-feature .headline-title,
368
+ .dashboard_page_bp-about .bp-headline-feature .headline-title {
369
+ font-size: 1.5em;
370
+ line-height: 1.5;
371
+ }
372
+ .index_page_bp-about .bp-headline-feature p,
373
+ .dashboard_page_bp-about .bp-headline-feature p {
374
+ width: auto;
375
+ }
376
+ .index_page_bp-about .bp-feature,
377
+ .dashboard_page_bp-about .bp-feature {
378
+ text-align: center;
379
+ }
380
+ .index_page_bp-about span.dashicons,
381
+ .dashboard_page_bp-about span.dashicons {
382
+ float: none;
383
+ }
384
+ .index_page_bp-about .bp-features-section h4,
385
+ .dashboard_page_bp-about .bp-features-section h4,
386
+ .index_page_bp-about .bp-features-section p,
387
+ .dashboard_page_bp-about .bp-features-section p {
388
+ margin-right: 0;
389
+ text-align: right;
390
+ }
391
+ }
392
  /*------------------------------------------------------------------------------
393
  * 2.0 Dashicons
394
  *----------------------------------------------------------------------------*/
575
  padding-right: 25px;
576
  text-indent: -25px;
577
  }
578
+
579
+ /*------------------------------------------------------------------------------
580
+ * 5.0 Tools - BuddyPress
581
+ *----------------------------------------------------------------------------*/
582
+ .tools_page_bp-tools .wrap {
583
+ max-width: 950px;
584
+ }
585
+
586
+ .tools_page_bp-tools p {
587
+ line-height: 2;
588
+ }
589
+
590
+ .tools_page_bp-tools fieldset {
591
+ margin: 2em 0 0;
592
+ }
593
+
594
+ .tools_page_bp-tools legend {
595
+ color: #23282d;
596
+ font-size: 1.3em;
597
+ font-weight: 600px;
598
+ margin: 1em 0;
599
+ }
600
+
601
+ .tools_page_bp-tools label {
602
+ clear: right;
603
+ display: block;
604
+ line-height: 1.5em;
605
+ margin: 0 0 1em;
606
+ vertical-align: middle;
607
+ }
608
+
609
+ @media screen and (max-width: 782px) {
610
+ .tools_page_bp-tools p {
611
+ line-height: 1.5;
612
+ }
613
+ .tools_page_bp-tools label {
614
+ margin-bottom: 1em;
615
+ padding-left: 25px;
616
+ text-indent: -33px;
617
+ }
618
+ .tools_page_bp-tools .checkbox {
619
+ padding: 0 30px 0 0;
620
+ }
621
+ }
622
+
623
+
624
+ /*------------------------------------------------------------------------------
625
+ * 6.0 Plugins page
626
+ *----------------------------------------------------------------------------*/
627
+ #buddypress-update.not-shiny .update-message {
628
+ border-right: 0;
629
+ padding-right: 36px;
630
+ }
631
+
632
+ #buddypress-update.not-shiny .update-message:before {
633
+ content: "\f534";
634
+ }
bp-core/admin/css/common-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.dashboard_page_bp-about .bp-changelog-section::after,.dashboard_page_bp-about .bp-feature::after,.index_page_bp-about .bp-changelog-section::after,.index_page_bp-about .bp-feature::after{content:''}.about-wrap .bp-badge{position:absolute;top:0;left:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;left:auto}}.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{margin-bottom:3em;text-align:center}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{font-size:2.2em;line-height:1.3;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{font-size:1.15em;margin:1.15em auto .6em;max-width:80%}.dashboard_page_bp-about .bp-headline-feature .introduction,.index_page_bp-about .bp-headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-bottom:2em;margin-top:2em;padding-bottom:0}.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:400;line-height:1.5em;margin:0 0 .6em;text-align:center}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{clear:both;overflow:hidden;margin-bottom:3em;margin-top:3em}.dashboard_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature h4{color:#23282d;display:inline-block;font-size:1.25em;margin-bottom:.6em;margin-top:0;width:47%}.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature p{float:right;font-size:1.15em;width:47%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:left}.dashboard_page_bp-about .bp-feature img,.index_page_bp-about .bp-feature img{clear:left;float:left;margin-right:2.5%;width:50%;max-width:50%}.dashboard_page_bp-about .bp-feature.opposite img,.index_page_bp-about .bp-feature.opposite img{clear:right;float:right;margin-right:0;margin-left:2.5%}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{border-top:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;padding-bottom:0}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{color:#23282d;font-size:1.8em;font-weight:300;line-height:1.5;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{float:right;margin-left:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .bp-changelog-section .two-col>div.last-feature,.index_page_bp-about .bp-changelog-section .two-col>div.last-feature{margin-left:0}.dashboard_page_bp-about .bp-changelog,.index_page_bp-about .bp-changelog{margin-bottom:3em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1.15em;margin-top:1.5em;margin-bottom:.6em}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{font-size:1.05em;margin-top:.75em}.bp-assets{clear:both;margin-bottom:2em;padding-top:3em}@media screen and (max-width:782px){.dashboard_page_bp-about .bp-headline-feature,.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature p{max-width:100%}.dashboard_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:0;margin-top:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:300;line-height:1.5}.dashboard_page_bp-about .bp-changelog-section h4,.dashboard_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-changelog-section h4,.index_page_bp-about .bp-features-section h4{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:right}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{margin-bottom:1em;margin-top:1em}.dashboard_page_bp-about .bp-feature h4,.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature p{width:100%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:none}.dashboard_page_bp-about .bp-feature img,.index_page_bp-about .bp-feature img{clear:right;float:none;margin-right:0;width:100%;max-width:100%}.dashboard_page_bp-about .bp-feature.opposite img,.index_page_bp-about .bp-feature.opposite img{clear:right;float:none;margin-left:0}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}
1
+ .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.dashboard_page_bp-about .bp-changelog-section::after,.dashboard_page_bp-about .bp-feature::after,.index_page_bp-about .bp-changelog-section::after,.index_page_bp-about .bp-feature::after{content:''}.about-wrap .bp-badge{position:absolute;top:0;left:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;left:auto}}.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{margin-bottom:3em;margin-top:3em;padding:2em 3em}.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{margin:0 auto;width:35em}.dashboard_page_bp-about .bp-headline span.dashicons,.index_page_bp-about .bp-headline span.dashicons{background-color:#f1f1f1;clear:right;font-size:100px;float:right;height:100px;line-height:100px;margin:0 0 15px 15px;text-align:center;width:100px}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{font-size:2.2em;font-weight:300;line-height:1;margin:0 125px 0 0}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{font-size:1.15em;margin:1.15em 125px .6em auto}.dashboard_page_bp-about .bp-headline-feature .introduction,.index_page_bp-about .bp-headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-top:3em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about span.dashicons,.index_page_bp-about span.dashicons{background-color:#fff;border-radius:50%;clear:right;color:#d84800;font-size:50px;float:right;height:80px;line-height:80px;margin:0 0 15px 15px;text-align:center;width:80px}.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-features-section h3{font-size:2em;font-weight:300;line-height:1.5;margin:0 auto 3em;text-align:center}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{float:right;margin-bottom:3em;margin-left:4.799999999%;width:47.6%}.dashboard_page_bp-about .bp-feature code,.index_page_bp-about .bp-feature code{font-size:.95em;line-height:1.5}.dashboard_page_bp-about .bp-feature:nth-of-type(2n),.index_page_bp-about .bp-feature:nth-of-type(2n){margin-left:0}.dashboard_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature h4{font-size:1.25em;line-height:1.5;margin-bottom:0;margin-right:110px;margin-top:0;text-align:right}.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature p{margin-right:110px}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{clear:both;margin-bottom:8em;margin-top:3em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{color:#23282d;font-size:1.8em;font-weight:300;line-height:1.5;margin:0 auto .5em;text-align:center}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{float:right;margin-left:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .bp-changelog-section .two-col>div.last-feature,.index_page_bp-about .bp-changelog-section .two-col>div.last-feature{margin-left:0}.dashboard_page_bp-about .bp-changelog,.index_page_bp-about .bp-changelog{margin-bottom:3em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1em;margin-bottom:0;margin-top:0}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{margin-bottom:3em}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:2em}@media screen and (max-width:782px){.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{padding:0}.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{margin:0;width:97%}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-bottom:0;margin-top:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:300;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.dashboard_page_bp-about .bp-changelog-section h4,.dashboard_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-changelog-section h4,.index_page_bp-about .bp-features-section h4{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:right}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{clear:both;float:right;margin-bottom:1em;margin-top:1em;margin-left:0;padding-left:1em;width:100%}.dashboard_page_bp-about .bp-feature span,.index_page_bp-about .bp-feature span{margin-top:.33em}.dashboard_page_bp-about .bp-feature h4,.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature p{width:100%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:none}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{clear:both;margin-bottom:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{margin-bottom:1em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1em}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{margin-bottom:2em}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}}@media screen and (max-width:360px){.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{text-align:center}.dashboard_page_bp-about .bp-headline span.dashicons,.index_page_bp-about .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{margin:1em 0 0;text-align:right}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{margin:1.15em 0 .6em auto;text-align:right;width:auto}.dashboard_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{text-align:center}.dashboard_page_bp-about span.dashicons,.index_page_bp-about span.dashicons{float:none}.dashboard_page_bp-about .bp-features-section h4,.dashboard_page_bp-about .bp-features-section p,.index_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-features-section p{margin-right:0;text-align:right}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600px;margin:1em 0}.tools_page_bp-tools label{clear:right;display:block;line-height:1.5em;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-left:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 30px 0 0}}#buddypress-update.not-shiny .update-message{border-right:0;padding-right:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"}
bp-core/admin/css/common.css CHANGED
@@ -20,6 +20,8 @@ TABLE OF CONTENTS:
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
 
 
23
  ------------------------------------------------------------------------------*/
24
 
25
  /*------------------------------------------------------------------------------
@@ -64,7 +66,27 @@ TABLE OF CONTENTS:
64
  .index_page_bp-about .bp-headline-feature,
65
  .dashboard_page_bp-about .bp-headline-feature {
66
  margin-bottom: 3em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  text-align: center;
 
68
  }
69
 
70
  .index_page_bp-about .bp-headline-feature h3,
@@ -72,16 +94,15 @@ TABLE OF CONTENTS:
72
  .dashboard_page_bp-about .bp-headline-feature h3,
73
  .dashboard_page_bp-about .bp-headline-feature .headline-title {
74
  font-size: 2.2em;
75
- line-height: 1.3;
76
- margin: 1.25em 0 0.6em;
77
- text-align: center;
78
  }
79
 
80
  .index_page_bp-about .bp-headline-feature p,
81
  .dashboard_page_bp-about .bp-headline-feature p {
82
  font-size: 1.15em;
83
- margin: 1.15em auto 0.6em;
84
- max-width: 80%;
85
  }
86
 
87
  .index_page_bp-about .bp-headline-feature .introduction,
@@ -96,26 +117,53 @@ TABLE OF CONTENTS:
96
  .index_page_bp-about .bp-features-section,
97
  .dashboard_page_bp-about .bp-features-section {
98
  clear: both;
99
- margin-bottom: 2em;
100
- margin-top: 2em;
101
  padding-bottom: 0;
102
  }
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  .index_page_bp-about .bp-features-section h3,
105
  .dashboard_page_bp-about .bp-features-section h3 {
106
- font-size: 1.8em;
107
- font-weight: normal;
108
- line-height: 1.5em;
109
- margin: 0 0 0.6em;
110
  text-align: center;
111
  }
112
 
113
  .index_page_bp-about .bp-feature,
114
  .dashboard_page_bp-about .bp-feature {
115
- clear: both;
116
- overflow: hidden;
117
  margin-bottom: 3em;
118
- margin-top: 3em;
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
120
 
121
  .index_page_bp-about .bp-feature::after,
@@ -125,55 +173,28 @@ TABLE OF CONTENTS:
125
 
126
  .index_page_bp-about .bp-feature h4,
127
  .dashboard_page_bp-about .bp-feature h4 {
128
- color: #23282d;
129
- display: inline-block;
130
  font-size: 1.25em;
131
- margin-bottom: 0.6em;
 
 
132
  margin-top: 0;
133
- width: 47%;
134
  }
135
 
136
  .index_page_bp-about .bp-feature p,
137
  .dashboard_page_bp-about .bp-feature p {
138
- float: left;
139
- font-size: 1.15em;
140
- width: 47%;
141
- }
142
-
143
- .index_page_bp-about .bp-feature.opposite h4,
144
- .dashboard_page_bp-about .bp-feature.opposite h4,
145
- .index_page_bp-about .bp-feature.opposite p,
146
- .dashboard_page_bp-about .bp-feature.opposite p {
147
- float: right;
148
- }
149
-
150
- .index_page_bp-about .bp-feature img,
151
- .dashboard_page_bp-about .bp-feature img {
152
- clear: right;
153
- float: right;
154
- margin-left: 2.5%;
155
- width: 50%;
156
- max-width: 50%;
157
- }
158
-
159
- .index_page_bp-about .bp-feature.opposite img,
160
- .dashboard_page_bp-about .bp-feature.opposite img{
161
- clear: left;
162
- float: left;
163
- margin-left: 0;
164
- margin-right: 2.5%;
165
  }
166
 
167
-
168
  /*
169
  * 1.2.3 Changelog Section
170
  */
171
  .index_page_bp-about .bp-changelog-section,
172
  .dashboard_page_bp-about .bp-changelog-section {
173
- border-top: 1px solid #ccc;
174
  clear: both;
175
- margin-bottom: 3em;
176
- margin-top: 2em;
 
177
  padding-bottom: 0;
178
  }
179
 
@@ -188,7 +209,7 @@ TABLE OF CONTENTS:
188
  font-size: 1.8em;
189
  font-weight: 300;
190
  line-height: 1.5;
191
- margin: 1.25em 0 0.6em;
192
  text-align: center;
193
  }
194
 
@@ -212,39 +233,38 @@ TABLE OF CONTENTS:
212
 
213
  .index_page_bp-about .bp-changelog h4,
214
  .dashboard_page_bp-about .bp-changelog h4 {
215
- font-size: 1.15em;
216
- margin-top: 1.5em;
217
- margin-bottom: 0.6em;
218
  }
219
 
220
  .index_page_bp-about .bp-changelog p,
221
  .dashboard_page_bp-about .bp-changelog p {
222
- font-size: 1.05em;
223
- margin-top: 0.75em;
 
 
 
224
  }
225
 
226
  .bp-assets {
227
  clear: both;
228
  margin-bottom: 2em;
229
- padding-top: 3em;
230
  }
231
 
232
  @media screen and ( max-width: 782px ) {
233
  .index_page_bp-about .bp-headline-feature,
234
  .dashboard_page_bp-about .bp-headline-feature {
235
- max-width: 100%;
236
- }
237
- .index_page_bp-about .bp-headline-feature .headline-title,
238
- .dashboard_page_bp-about .bp-headline-feature .headline-title {
239
- font-size: 1.5em;
240
- line-height: 1.5;
241
  }
242
- .index_page_bp-about .bp-headline-feature p,
243
- .dashboard_page_bp-about .bp-headline-feature p {
244
- max-width: 100%;
 
245
  }
246
  .index_page_bp-about .bp-features-section,
247
  .dashboard_page_bp-about .bp-features-section {
 
248
  margin-bottom: 0;
249
  margin-top: 2em;
250
  }
@@ -255,6 +275,8 @@ TABLE OF CONTENTS:
255
  font-size: 1.8em;
256
  font-weight: 300;
257
  line-height: 1.5;
 
 
258
  }
259
  .index_page_bp-about .bp-features-section h4,
260
  .dashboard_page_bp-about .bp-features-section h4,
@@ -267,8 +289,17 @@ TABLE OF CONTENTS:
267
  }
268
  .index_page_bp-about .bp-feature,
269
  .dashboard_page_bp-about .bp-feature {
 
 
270
  margin-bottom: 1em;
271
  margin-top: 1em;
 
 
 
 
 
 
 
272
  }
273
  .index_page_bp-about .bp-feature h4,
274
  .dashboard_page_bp-about .bp-feature h4,
@@ -282,19 +313,22 @@ TABLE OF CONTENTS:
282
  .dashboard_page_bp-about .bp-feature.opposite p {
283
  float: none;
284
  }
285
- .index_page_bp-about .bp-feature img,
286
- .dashboard_page_bp-about .bp-feature img {
287
- clear: left;
288
- float: none;
289
- margin-left: 0;
290
- width: 100%;
291
- max-width: 100%;
292
  }
293
- .index_page_bp-about .bp-feature.opposite img,
294
- .dashboard_page_bp-about .bp-feature.opposite img{
295
- clear: left;
296
- float: none;
297
- margin-right: 0;
 
 
 
 
 
 
298
  }
299
  .index_page_bp-about .bp-changelog-section .two-col > div,
300
  .dashboard_page_bp-about .bp-changelog-section .two-col > div {
@@ -303,8 +337,58 @@ TABLE OF CONTENTS:
303
  width: 100%;
304
  }
305
  }
306
-
307
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  /*------------------------------------------------------------------------------
309
  * 2.0 Dashicons
310
  *----------------------------------------------------------------------------*/
@@ -491,3 +575,60 @@ body.post-type-bp-email .categorydiv label {
491
  padding-left: 25px;
492
  text-indent: -25px;
493
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
23
+ 5.0 Tools - BuddyPress
24
+ 6.0 Plugins page
25
  ------------------------------------------------------------------------------*/
26
 
27
  /*------------------------------------------------------------------------------
66
  .index_page_bp-about .bp-headline-feature,
67
  .dashboard_page_bp-about .bp-headline-feature {
68
  margin-bottom: 3em;
69
+ margin-top: 3em;
70
+ padding: 2em 3em;
71
+ }
72
+
73
+ .index_page_bp-about .bp-headline,
74
+ .dashboard_page_bp-about .bp-headline {
75
+ margin: 0 auto;
76
+ width: 35em;
77
+ }
78
+
79
+ .index_page_bp-about .bp-headline span.dashicons,
80
+ .dashboard_page_bp-about .bp-headline span.dashicons {
81
+ background-color: #f1f1f1;
82
+ clear: left;
83
+ font-size: 100px;
84
+ float: left;
85
+ height: 100px;
86
+ line-height: 100px;
87
+ margin: 0 15px 15px 0 ;
88
  text-align: center;
89
+ width: 100px;
90
  }
91
 
92
  .index_page_bp-about .bp-headline-feature h3,
94
  .dashboard_page_bp-about .bp-headline-feature h3,
95
  .dashboard_page_bp-about .bp-headline-feature .headline-title {
96
  font-size: 2.2em;
97
+ font-weight: 300;
98
+ line-height: 1;
99
+ margin: 0 0 0 125px;
100
  }
101
 
102
  .index_page_bp-about .bp-headline-feature p,
103
  .dashboard_page_bp-about .bp-headline-feature p {
104
  font-size: 1.15em;
105
+ margin: 1.15em auto 0.6em 125px;
 
106
  }
107
 
108
  .index_page_bp-about .bp-headline-feature .introduction,
117
  .index_page_bp-about .bp-features-section,
118
  .dashboard_page_bp-about .bp-features-section {
119
  clear: both;
120
+ margin-top: 3em;
121
+ overflow: hidden;
122
  padding-bottom: 0;
123
  }
124
 
125
+ .index_page_bp-about span.dashicons,
126
+ .dashboard_page_bp-about span.dashicons {
127
+ background-color: #fff;
128
+ border-radius: 50%;
129
+ clear: left;
130
+ color: #d84800;
131
+ font-size: 50px;
132
+ float: left;
133
+ height: 80px;
134
+ line-height: 80px;
135
+ margin: 0 15px 15px 0 ;
136
+ text-align: center;
137
+ width: 80px;
138
+ }
139
+
140
  .index_page_bp-about .bp-features-section h3,
141
  .dashboard_page_bp-about .bp-features-section h3 {
142
+ font-size: 2em;
143
+ font-weight: 300;
144
+ line-height: 1.5;
145
+ margin: 0 auto 3em;
146
  text-align: center;
147
  }
148
 
149
  .index_page_bp-about .bp-feature,
150
  .dashboard_page_bp-about .bp-feature {
151
+ float: left;
 
152
  margin-bottom: 3em;
153
+ margin-right: 4.799999999%;
154
+ width: 47.6%;
155
+ }
156
+
157
+
158
+ .index_page_bp-about .bp-feature code,
159
+ .dashboard_page_bp-about .bp-feature code{
160
+ font-size: 0.95em;
161
+ line-height: 1.5;
162
+ }
163
+
164
+ .index_page_bp-about .bp-feature:nth-of-type(2n),
165
+ .dashboard_page_bp-about .bp-feature:nth-of-type(2n) {
166
+ margin-right: 0;
167
  }
168
 
169
  .index_page_bp-about .bp-feature::after,
173
 
174
  .index_page_bp-about .bp-feature h4,
175
  .dashboard_page_bp-about .bp-feature h4 {
 
 
176
  font-size: 1.25em;
177
+ line-height: 1.5;
178
+ margin-bottom: 0;
179
+ margin-left: 110px;
180
  margin-top: 0;
181
+ text-align: left;
182
  }
183
 
184
  .index_page_bp-about .bp-feature p,
185
  .dashboard_page_bp-about .bp-feature p {
186
+ margin-left: 110px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
 
 
189
  /*
190
  * 1.2.3 Changelog Section
191
  */
192
  .index_page_bp-about .bp-changelog-section,
193
  .dashboard_page_bp-about .bp-changelog-section {
 
194
  clear: both;
195
+ margin-bottom: 8em;
196
+ margin-top: 3em;
197
+ overflow: hidden;
198
  padding-bottom: 0;
199
  }
200
 
209
  font-size: 1.8em;
210
  font-weight: 300;
211
  line-height: 1.5;
212
+ margin: 0 auto 0.5em;
213
  text-align: center;
214
  }
215
 
233
 
234
  .index_page_bp-about .bp-changelog h4,
235
  .dashboard_page_bp-about .bp-changelog h4 {
236
+ font-size: 1em;
237
+ margin-bottom: 0;
238
+ margin-top: 0;
239
  }
240
 
241
  .index_page_bp-about .bp-changelog p,
242
  .dashboard_page_bp-about .bp-changelog p {
243
+ margin-bottom: 3em;
244
+ }
245
+
246
+ .bp-changelog-url {
247
+ text-align: center;
248
  }
249
 
250
  .bp-assets {
251
  clear: both;
252
  margin-bottom: 2em;
 
253
  }
254
 
255
  @media screen and ( max-width: 782px ) {
256
  .index_page_bp-about .bp-headline-feature,
257
  .dashboard_page_bp-about .bp-headline-feature {
258
+ padding: 0;
 
 
 
 
 
259
  }
260
+ .index_page_bp-about .bp-headline,
261
+ .dashboard_page_bp-about .bp-headline {
262
+ margin: 0;
263
+ width: 97%;
264
  }
265
  .index_page_bp-about .bp-features-section,
266
  .dashboard_page_bp-about .bp-features-section {
267
+ clear: both;
268
  margin-bottom: 0;
269
  margin-top: 2em;
270
  }
275
  font-size: 1.8em;
276
  font-weight: 300;
277
  line-height: 1.5;
278
+ margin-bottom: 0.5em;
279
+ margin-top: 0.5em;
280
  }
281
  .index_page_bp-about .bp-features-section h4,
282
  .dashboard_page_bp-about .bp-features-section h4,
289
  }
290
  .index_page_bp-about .bp-feature,
291
  .dashboard_page_bp-about .bp-feature {
292
+ clear: both;
293
+ float: left;
294
  margin-bottom: 1em;
295
  margin-top: 1em;
296
+ margin-right: 0;
297
+ padding-right: 1em;
298
+ width: 100%;
299
+ }
300
+ .index_page_bp-about .bp-feature span,
301
+ .dashboard_page_bp-about .bp-feature span {
302
+ margin-top: 0.33em;
303
  }
304
  .index_page_bp-about .bp-feature h4,
305
  .dashboard_page_bp-about .bp-feature h4,
313
  .dashboard_page_bp-about .bp-feature.opposite p {
314
  float: none;
315
  }
316
+ .index_page_bp-about .bp-changelog-section,
317
+ .dashboard_page_bp-about .bp-changelog-section {
318
+ clear: both;
319
+ margin-bottom: 2em;
 
 
 
320
  }
321
+ .index_page_bp-about .bp-changelog-section .changelog-title,
322
+ .dashboard_page_bp-about .bp-changelog-section .changelog-title {
323
+ margin-bottom: 1em;
324
+ }
325
+ .index_page_bp-about .bp-changelog h4,
326
+ .dashboard_page_bp-about .bp-changelog h4 {
327
+ font-size: 1em;
328
+ }
329
+ .index_page_bp-about .bp-changelog p,
330
+ .dashboard_page_bp-about .bp-changelog p {
331
+ margin-bottom: 2em;
332
  }
333
  .index_page_bp-about .bp-changelog-section .two-col > div,
334
  .dashboard_page_bp-about .bp-changelog-section .two-col > div {
337
  width: 100%;
338
  }
339
  }
340
+ @media screen and ( max-width: 360px ) {
341
+ .index_page_bp-about .bp-headline,
342
+ .dashboard_page_bp-about .bp-headline {
343
+ text-align: center;
344
+ }
345
+ .index_page_bp-about .bp-headline span.dashicons,
346
+ .dashboard_page_bp-about .bp-headline span.dashicons {
347
+ clear: none;
348
+ font-size: 80px;
349
+ float: none;
350
+ height: 80px;
351
+ line-height: 80px;
352
+ margin: 0 auto;
353
+ width: 80px;
354
+ }
355
+ .index_page_bp-about .bp-headline-feature h3,
356
+ .index_page_bp-about .bp-headline-feature .headline-title,
357
+ .dashboard_page_bp-about .bp-headline-feature h3,
358
+ .dashboard_page_bp-about .bp-headline-feature .headline-title {
359
+ margin: 1em 0 0 0;
360
+ text-align: left;
361
+ }
362
+ .index_page_bp-about .bp-headline-feature p,
363
+ .dashboard_page_bp-about .bp-headline-feature p {
364
+ margin: 1.15em auto 0.6em 0;
365
+ text-align: left;
366
+ }
367
+ .index_page_bp-about .bp-headline-feature .headline-title,
368
+ .dashboard_page_bp-about .bp-headline-feature .headline-title {
369
+ font-size: 1.5em;
370
+ line-height: 1.5;
371
+ }
372
+ .index_page_bp-about .bp-headline-feature p,
373
+ .dashboard_page_bp-about .bp-headline-feature p {
374
+ width: auto;
375
+ }
376
+ .index_page_bp-about .bp-feature,
377
+ .dashboard_page_bp-about .bp-feature {
378
+ text-align: center;
379
+ }
380
+ .index_page_bp-about span.dashicons,
381
+ .dashboard_page_bp-about span.dashicons {
382
+ float: none;
383
+ }
384
+ .index_page_bp-about .bp-features-section h4,
385
+ .dashboard_page_bp-about .bp-features-section h4,
386
+ .index_page_bp-about .bp-features-section p,
387
+ .dashboard_page_bp-about .bp-features-section p {
388
+ margin-left: 0;
389
+ text-align: left;
390
+ }
391
+ }
392
  /*------------------------------------------------------------------------------
393
  * 2.0 Dashicons
394
  *----------------------------------------------------------------------------*/
575
  padding-left: 25px;
576
  text-indent: -25px;
577
  }
578
+
579
+ /*------------------------------------------------------------------------------
580
+ * 5.0 Tools - BuddyPress
581
+ *----------------------------------------------------------------------------*/
582
+ .tools_page_bp-tools .wrap {
583
+ max-width: 950px;
584
+ }
585
+
586
+ .tools_page_bp-tools p {
587
+ line-height: 2;
588
+ }
589
+
590
+ .tools_page_bp-tools fieldset {
591
+ margin: 2em 0 0;
592
+ }
593
+
594
+ .tools_page_bp-tools legend {
595
+ color: #23282d;
596
+ font-size: 1.3em;
597
+ font-weight: 600px;
598
+ margin: 1em 0;
599
+ }
600
+
601
+ .tools_page_bp-tools label {
602
+ clear: left;
603
+ display: block;
604
+ line-height: 1.5em;
605
+ margin: 0 0 1em;
606
+ vertical-align: middle;
607
+ }
608
+
609
+ @media screen and (max-width: 782px) {
610
+ .tools_page_bp-tools p {
611
+ line-height: 1.5;
612
+ }
613
+ .tools_page_bp-tools label {
614
+ margin-bottom: 1em;
615
+ padding-right: 25px;
616
+ text-indent: -33px;
617
+ }
618
+ .tools_page_bp-tools .checkbox {
619
+ padding: 0 0 0 30px;
620
+ }
621
+ }
622
+
623
+
624
+ /*------------------------------------------------------------------------------
625
+ * 6.0 Plugins page
626
+ *----------------------------------------------------------------------------*/
627
+ #buddypress-update.not-shiny .update-message {
628
+ border-left: 0;
629
+ padding-left: 36px;
630
+ }
631
+
632
+ #buddypress-update.not-shiny .update-message:before {
633
+ content: "\f534";
634
+ }
bp-core/admin/css/common.min.css CHANGED
@@ -1 +1 @@
1
- .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.dashboard_page_bp-about .bp-changelog-section::after,.dashboard_page_bp-about .bp-feature::after,.index_page_bp-about .bp-changelog-section::after,.index_page_bp-about .bp-feature::after{content:''}.about-wrap .bp-badge{position:absolute;top:0;right:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;right:auto}}.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{margin-bottom:3em;text-align:center}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{font-size:2.2em;line-height:1.3;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{font-size:1.15em;margin:1.15em auto .6em;max-width:80%}.dashboard_page_bp-about .bp-headline-feature .introduction,.index_page_bp-about .bp-headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-bottom:2em;margin-top:2em;padding-bottom:0}.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:400;line-height:1.5em;margin:0 0 .6em;text-align:center}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{clear:both;overflow:hidden;margin-bottom:3em;margin-top:3em}.dashboard_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature h4{color:#23282d;display:inline-block;font-size:1.25em;margin-bottom:.6em;margin-top:0;width:47%}.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature p{float:left;font-size:1.15em;width:47%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:right}.dashboard_page_bp-about .bp-feature img,.index_page_bp-about .bp-feature img{clear:right;float:right;margin-left:2.5%;width:50%;max-width:50%}.dashboard_page_bp-about .bp-feature.opposite img,.index_page_bp-about .bp-feature.opposite img{clear:left;float:left;margin-left:0;margin-right:2.5%}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{border-top:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;padding-bottom:0}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{color:#23282d;font-size:1.8em;font-weight:300;line-height:1.5;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{float:left;margin-right:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .bp-changelog-section .two-col>div.last-feature,.index_page_bp-about .bp-changelog-section .two-col>div.last-feature{margin-right:0}.dashboard_page_bp-about .bp-changelog,.index_page_bp-about .bp-changelog{margin-bottom:3em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1.15em;margin-top:1.5em;margin-bottom:.6em}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{font-size:1.05em;margin-top:.75em}.bp-assets{clear:both;margin-bottom:2em;padding-top:3em}@media screen and (max-width:782px){.dashboard_page_bp-about .bp-headline-feature,.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature p{max-width:100%}.dashboard_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:0;margin-top:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:300;line-height:1.5}.dashboard_page_bp-about .bp-changelog-section h4,.dashboard_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-changelog-section h4,.index_page_bp-about .bp-features-section h4{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:left}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{margin-bottom:1em;margin-top:1em}.dashboard_page_bp-about .bp-feature h4,.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature p{width:100%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:none}.dashboard_page_bp-about .bp-feature img,.index_page_bp-about .bp-feature img{clear:left;float:none;margin-left:0;width:100%;max-width:100%}.dashboard_page_bp-about .bp-feature.opposite img,.index_page_bp-about .bp-feature.opposite img{clear:left;float:none;margin-right:0}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}
1
+ .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.dashboard_page_bp-about .bp-changelog-section::after,.dashboard_page_bp-about .bp-feature::after,.index_page_bp-about .bp-changelog-section::after,.index_page_bp-about .bp-feature::after{content:''}.about-wrap .bp-badge{position:absolute;top:0;right:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;right:auto}}.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{margin-bottom:3em;margin-top:3em;padding:2em 3em}.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{margin:0 auto;width:35em}.dashboard_page_bp-about .bp-headline span.dashicons,.index_page_bp-about .bp-headline span.dashicons{background-color:#f1f1f1;clear:left;font-size:100px;float:left;height:100px;line-height:100px;margin:0 15px 15px 0;text-align:center;width:100px}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{font-size:2.2em;font-weight:300;line-height:1;margin:0 0 0 125px}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{font-size:1.15em;margin:1.15em auto .6em 125px}.dashboard_page_bp-about .bp-headline-feature .introduction,.index_page_bp-about .bp-headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-top:3em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about span.dashicons,.index_page_bp-about span.dashicons{background-color:#fff;border-radius:50%;clear:left;color:#d84800;font-size:50px;float:left;height:80px;line-height:80px;margin:0 15px 15px 0;text-align:center;width:80px}.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-features-section h3{font-size:2em;font-weight:300;line-height:1.5;margin:0 auto 3em;text-align:center}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{float:left;margin-bottom:3em;margin-right:4.799999999%;width:47.6%}.dashboard_page_bp-about .bp-feature code,.index_page_bp-about .bp-feature code{font-size:.95em;line-height:1.5}.dashboard_page_bp-about .bp-feature:nth-of-type(2n),.index_page_bp-about .bp-feature:nth-of-type(2n){margin-right:0}.dashboard_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature h4{font-size:1.25em;line-height:1.5;margin-bottom:0;margin-left:110px;margin-top:0;text-align:left}.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature p{margin-left:110px}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{clear:both;margin-bottom:8em;margin-top:3em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{color:#23282d;font-size:1.8em;font-weight:300;line-height:1.5;margin:0 auto .5em;text-align:center}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{float:left;margin-right:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .bp-changelog-section .two-col>div.last-feature,.index_page_bp-about .bp-changelog-section .two-col>div.last-feature{margin-right:0}.dashboard_page_bp-about .bp-changelog,.index_page_bp-about .bp-changelog{margin-bottom:3em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1em;margin-bottom:0;margin-top:0}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{margin-bottom:3em}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:2em}@media screen and (max-width:782px){.dashboard_page_bp-about .bp-headline-feature,.index_page_bp-about .bp-headline-feature{padding:0}.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{margin:0;width:97%}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{clear:both;margin-bottom:0;margin-top:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.dashboard_page_bp-about .bp-features-section h3,.index_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-features-section h3{font-size:1.8em;font-weight:300;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.dashboard_page_bp-about .bp-changelog-section h4,.dashboard_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-changelog-section h4,.index_page_bp-about .bp-features-section h4{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:left}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{clear:both;float:left;margin-bottom:1em;margin-top:1em;margin-right:0;padding-right:1em;width:100%}.dashboard_page_bp-about .bp-feature span,.index_page_bp-about .bp-feature span{margin-top:.33em}.dashboard_page_bp-about .bp-feature h4,.dashboard_page_bp-about .bp-feature p,.index_page_bp-about .bp-feature h4,.index_page_bp-about .bp-feature p{width:100%}.dashboard_page_bp-about .bp-feature.opposite h4,.dashboard_page_bp-about .bp-feature.opposite p,.index_page_bp-about .bp-feature.opposite h4,.index_page_bp-about .bp-feature.opposite p{float:none}.dashboard_page_bp-about .bp-changelog-section,.index_page_bp-about .bp-changelog-section{clear:both;margin-bottom:2em}.dashboard_page_bp-about .bp-changelog-section .changelog-title,.index_page_bp-about .bp-changelog-section .changelog-title{margin-bottom:1em}.dashboard_page_bp-about .bp-changelog h4,.index_page_bp-about .bp-changelog h4{font-size:1em}.dashboard_page_bp-about .bp-changelog p,.index_page_bp-about .bp-changelog p{margin-bottom:2em}.dashboard_page_bp-about .bp-changelog-section .two-col>div,.index_page_bp-about .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}}@media screen and (max-width:360px){.dashboard_page_bp-about .bp-headline,.index_page_bp-about .bp-headline{text-align:center}.dashboard_page_bp-about .bp-headline span.dashicons,.index_page_bp-about .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.dashboard_page_bp-about .bp-headline-feature .headline-title,.dashboard_page_bp-about .bp-headline-feature h3,.index_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature h3{margin:1em 0 0;text-align:left}.dashboard_page_bp-about .bp-headline-feature p,.index_page_bp-about .bp-headline-feature p{margin:1.15em auto .6em 0;text-align:left;width:auto}.dashboard_page_bp-about .bp-headline-feature .headline-title,.index_page_bp-about .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5}.dashboard_page_bp-about .bp-feature,.index_page_bp-about .bp-feature{text-align:center}.dashboard_page_bp-about span.dashicons,.index_page_bp-about span.dashicons{float:none}.dashboard_page_bp-about .bp-features-section h4,.dashboard_page_bp-about .bp-features-section p,.index_page_bp-about .bp-features-section h4,.index_page_bp-about .bp-features-section p{margin-left:0;text-align:left}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600px;margin:1em 0}.tools_page_bp-tools label{clear:left;display:block;line-height:1.5em;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-right:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 0 0 30px}}#buddypress-update.not-shiny .update-message{border-left:0;padding-left:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"}
bp-core/admin/images/activity-embeds.png DELETED
Binary file
bp-core/admin/images/default-themes.png DELETED
Binary file
bp-core/admin/images/group-type-pop.png DELETED
Binary file
bp-core/admin/images/new-nav-api.png DELETED
Binary file
bp-core/admin/images/user-frontpage.png DELETED
Binary file
bp-core/admin/js/dismissible-admin-notices.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($){
2
+ $(document).ready(function() {
3
+ $( '.bp-is-dismissible .notice-dismiss' ).click( function() {
4
+ var $notice = $( this ).closest( '.notice' );
5
+ var notice_id = $notice.data( 'noticeid' );
6
+ $.post( {
7
+ url: ajaxurl,
8
+ data: {
9
+ action: 'bp_dismiss_notice',
10
+ nonce: $( '#bp-dismissible-nonce-' + notice_id ).val(),
11
+ notice_id: $notice.data( 'noticeid' )
12
+ }
13
+ } );
14
+ } );
15
+ });
16
+ }(jQuery));
bp-core/admin/js/dismissible-admin-notices.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){a(document).ready(function(){a(".bp-is-dismissible .notice-dismiss").click(function(){var b=a(this).closest(".notice"),c=b.data("noticeid");a.post({url:ajaxurl,data:{action:"bp_dismiss_notice",nonce:a("#bp-dismissible-nonce-"+c).val(),notice_id:b.data("noticeid")}})})})}(jQuery);
bp-core/bp-core-actions.php CHANGED
@@ -29,7 +29,7 @@ defined( 'ABSPATH' ) || exit;
29
  * near the bottom of this file.
30
  *
31
  * v--WordPress Actions v--BuddyPress Sub-actions
32
- */
33
  add_action( 'plugins_loaded', 'bp_loaded', 10 );
34
  add_action( 'init', 'bp_init', 10 );
35
  add_action( 'rest_api_init', 'bp_rest_api_init', 20 ); // After WP core.
@@ -57,7 +57,6 @@ add_action( 'bp_loaded', 'bp_setup_components', 2 );
57
  add_action( 'bp_loaded', 'bp_include', 4 );
58
  add_action( 'bp_loaded', 'bp_setup_cache_groups', 5 );
59
  add_action( 'bp_loaded', 'bp_setup_widgets', 6 );
60
- add_action( 'bp_loaded', 'bp_register_member_types', 8 );
61
  add_action( 'bp_loaded', 'bp_register_theme_packages', 12 );
62
  add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
63
 
@@ -68,9 +67,9 @@ add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
68
  * The load order helps to execute code at the correct time.
69
  * v---Load order
70
  */
 
 
71
  add_action( 'bp_init', 'bp_core_set_uri_globals', 2 );
72
- add_action( 'bp_init', 'bp_register_post_types', 3 );
73
- add_action( 'bp_init', 'bp_register_taxonomies', 3 );
74
  add_action( 'bp_init', 'bp_setup_globals', 4 );
75
  add_action( 'bp_init', 'bp_setup_canonical_stack', 5 );
76
  add_action( 'bp_init', 'bp_setup_nav', 6 );
@@ -80,6 +79,11 @@ add_action( 'bp_init', 'bp_add_rewrite_tags', 20 );
80
  add_action( 'bp_init', 'bp_add_rewrite_rules', 30 );
81
  add_action( 'bp_init', 'bp_add_permastructs', 40 );
82
 
 
 
 
 
 
83
  /**
84
  * The bp_template_redirect hook - Attached to 'template_redirect' above.
85
  *
@@ -110,3 +114,6 @@ if ( is_admin() ) {
110
 
111
  // Activation redirect.
112
  add_action( 'bp_activation', 'bp_add_activation_redirect' );
 
 
 
29
  * near the bottom of this file.
30
  *
31
  * v--WordPress Actions v--BuddyPress Sub-actions
32
+ */
33
  add_action( 'plugins_loaded', 'bp_loaded', 10 );
34
  add_action( 'init', 'bp_init', 10 );
35
  add_action( 'rest_api_init', 'bp_rest_api_init', 20 ); // After WP core.
57
  add_action( 'bp_loaded', 'bp_include', 4 );
58
  add_action( 'bp_loaded', 'bp_setup_cache_groups', 5 );
59
  add_action( 'bp_loaded', 'bp_setup_widgets', 6 );
 
60
  add_action( 'bp_loaded', 'bp_register_theme_packages', 12 );
61
  add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
62
 
67
  * The load order helps to execute code at the correct time.
68
  * v---Load order
69
  */
70
+ add_action( 'bp_init', 'bp_register_post_types', 2 );
71
+ add_action( 'bp_init', 'bp_register_taxonomies', 2 );
72
  add_action( 'bp_init', 'bp_core_set_uri_globals', 2 );
 
 
73
  add_action( 'bp_init', 'bp_setup_globals', 4 );
74
  add_action( 'bp_init', 'bp_setup_canonical_stack', 5 );
75
  add_action( 'bp_init', 'bp_setup_nav', 6 );
79
  add_action( 'bp_init', 'bp_add_rewrite_rules', 30 );
80
  add_action( 'bp_init', 'bp_add_permastructs', 40 );
81
 
82
+ /**
83
+ * The bp_register_taxonomies hook - Attached to 'bp_init' @ priority 2 above.
84
+ */
85
+ add_action( 'bp_register_taxonomies', 'bp_register_member_types' );
86
+
87
  /**
88
  * The bp_template_redirect hook - Attached to 'template_redirect' above.
89
  *
114
 
115
  // Activation redirect.
116
  add_action( 'bp_activation', 'bp_add_activation_redirect' );
117
+
118
+ // Email unsubscribe.
119
+ add_action( 'bp_get_request_unsubscribe', 'bp_email_unsubscribe_handler' );
bp-core/bp-core-admin.php CHANGED
@@ -30,25 +30,33 @@ function bp_admin() {
30
  _n_noop( 'Security Release', 'Security Releases', 'buddypress' );
31
  _n_noop( 'Maintenance and Security Release', 'Maintenance and Security Releases', 'buddypress' );
32
 
33
- /* translators: 1: WordPress version number. */
34
- _n_noop( '<strong>Version %1$s</strong> addressed a security issue.',
35
- '<strong>Version %1$s</strong> addressed some security issues.',
36
- 'buddypress' );
37
-
38
- /* translators: 1: WordPress version number, 2: plural number of bugs. */
39
- _n_noop( '<strong>Version %1$s</strong> addressed %2$s bug.',
40
- '<strong>Version %1$s</strong> addressed %2$s bugs.',
41
- 'buddypress' );
42
-
43
- /* translators: 1: WordPress version number, 2: plural number of bugs. Singular security issue. */
44
- _n_noop( '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
45
- '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.',
46
- 'buddypress' );
47
-
48
- /* translators: 1: WordPress version number, 2: plural number of bugs. More than one security issue. */
49
- _n_noop( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
50
- '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.',
51
- 'buddypress' );
 
 
 
 
 
 
 
 
52
 
53
  __( 'For more information, see <a href="%s">the release notes</a>.', 'buddypress' );
54
  }
30
  _n_noop( 'Security Release', 'Security Releases', 'buddypress' );
31
  _n_noop( 'Maintenance and Security Release', 'Maintenance and Security Releases', 'buddypress' );
32
 
33
+ /* translators: 1: BuddyPress version number. */
34
+ _n_noop(
35
+ '<strong>Version %1$s</strong> addressed a security issue.',
36
+ '<strong>Version %1$s</strong> addressed some security issues.',
37
+ 'buddypress'
38
+ );
39
+
40
+ /* translators: 1: BuddyPress version number, 2: plural number of bugs. */
41
+ _n_noop(
42
+ '<strong>Version %1$s</strong> addressed %2$s bug.',
43
+ '<strong>Version %1$s</strong> addressed %2$s bugs.',
44
+ 'buddypress'
45
+ );
46
+
47
+ /* translators: 1: BuddyPress version number, 2: plural number of bugs. Singular security issue. */
48
+ _n_noop(
49
+ '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
50
+ '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.',
51
+ 'buddypress'
52
+ );
53
+
54
+ /* translators: 1: BuddyPress version number, 2: plural number of bugs. More than one security issue. */
55
+ _n_noop(
56
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
57
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.',
58
+ 'buddypress'
59
+ );
60
 
61
  __( 'For more information, see <a href="%s">the release notes</a>.', 'buddypress' );
62
  }
bp-core/bp-core-attachments.php CHANGED
@@ -52,6 +52,11 @@ function bp_attachments_uploads_dir_get( $data = '' ) {
52
  foreach ( $upload_data as $key => $value ) {
53
  if ( 'basedir' === $key || 'baseurl' === $key ) {
54
  $upload_data[ $key ] = trailingslashit( $value ) . $attachments_dir;
 
 
 
 
 
55
  } else {
56
  unset( $upload_data[ $key ] );
57
  }
@@ -963,7 +968,7 @@ function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
963
  * Eg: for the user's profile cover image use:
964
  * add_filter( 'bp_before_xprofile_cover_image_settings_parse_args', 'your_filter', 10, 1 );
965
  *
966
- * @since 2.4.0
967
  *
968
  * @param array $settings The cover image settings
969
  */
@@ -990,7 +995,7 @@ function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
990
  }
991
 
992
  /**
993
- * Get cover image Width and Height
994
  *
995
  * @since 2.4.0
996
  *
@@ -1242,10 +1247,7 @@ function bp_attachments_cover_image_ajax_upload() {
1242
 
1243
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1244
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1245
- $bp->groups->current_group = groups_get_group( array(
1246
- 'group_id' => $bp_params['item_id'],
1247
- 'populate_extras' => false,
1248
- ) );
1249
  }
1250
 
1251
  // Other object's cover image.
52
  foreach ( $upload_data as $key => $value ) {
53
  if ( 'basedir' === $key || 'baseurl' === $key ) {
54
  $upload_data[ $key ] = trailingslashit( $value ) . $attachments_dir;
55
+
56
+ // Fix for HTTPS.
57
+ if ( 'baseurl' === $key && is_ssl() ) {
58
+ $upload_data[ $key ] = str_replace( 'http://', 'https://', $upload_data[ $key ] );
59
+ }
60
  } else {
61
  unset( $upload_data[ $key ] );
62
  }
968
  * Eg: for the user's profile cover image use:
969
  * add_filter( 'bp_before_xprofile_cover_image_settings_parse_args', 'your_filter', 10, 1 );
970
  *
971
+ * @since 2.4.0
972
  *
973
  * @param array $settings The cover image settings
974
  */
995
  }
996
 
997
  /**
998
+ * Get cover image Width and Height.
999
  *
1000
  * @since 2.4.0
1001
  *
1247
 
1248
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1249
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1250
+ $bp->groups->current_group = groups_get_group( $bp_params['item_id'] );
 
 
 
1251
  }
1252
 
1253
  // Other object's cover image.
bp-core/bp-core-avatars.php CHANGED
@@ -313,7 +313,7 @@ function bp_core_fetch_avatar( $args = '' ) {
313
  break;
314
 
315
  case 'group' :
316
- $item_name = bp_get_group_name( groups_get_group( array( 'group_id' => $params['item_id'] ) ) );
317
  break;
318
 
319
  case 'user' :
@@ -648,7 +648,7 @@ function bp_core_fetch_avatar( $args = '' ) {
648
  * @since 2.6.0
649
  *
650
  * @param string $default_grav The avatar default.
651
- * @param array $params The avatar's data.
652
  */
653
  $default_grav = apply_filters( 'bp_core_avatar_default', $default_grav, $params );
654
 
@@ -726,7 +726,7 @@ function bp_core_delete_existing_avatar( $args = '' ) {
726
  *
727
  * @since 2.5.1
728
  *
729
- * @param bool $value Whether or not to delete the avatar.
730
  * @param array $args {
731
  * Array of function parameters.
732
  *
@@ -805,7 +805,7 @@ function bp_core_delete_existing_avatar( $args = '' ) {
805
  *
806
  * @since 2.3.0
807
  *
808
- * @return string|null A json object containing success data if the avatar was deleted
809
  * error message otherwise.
810
  */
811
  function bp_avatar_ajax_delete() {
@@ -948,8 +948,8 @@ function bp_core_avatar_handle_upload( $file, $upload_dir_filter ) {
948
  *
949
  * @since 2.3.0
950
  *
951
- * @return string|null A json object containing success data if the upload succeeded
952
- * error message otherwise.
953
  */
954
  function bp_avatar_ajax_upload() {
955
  // Bail if not a POST action.
@@ -959,7 +959,7 @@ function bp_avatar_ajax_upload() {
959
 
960
  /**
961
  * Sending the json response will be different if
962
- * the current Plupload runtime is html4
963
  */
964
  $is_html4 = false;
965
  if ( ! empty( $_POST['html4' ] ) ) {
@@ -1005,10 +1005,7 @@ function bp_avatar_ajax_upload() {
1005
 
1006
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1007
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1008
- $bp->groups->current_group = groups_get_group( array(
1009
- 'group_id' => $bp_params['item_id'],
1010
- 'populate_extras' => false,
1011
- ) );
1012
  }
1013
  } else {
1014
  /**
@@ -1171,16 +1168,6 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
1171
  /**
1172
  * Crop an uploaded avatar.
1173
  *
1174
- * $args has the following parameters:
1175
- * object - What component the avatar is for, e.g. "user"
1176
- * avatar_dir The absolute path to the avatar
1177
- * item_id - Item ID
1178
- * original_file - The absolute path to the original avatar file
1179
- * crop_w - Crop width
1180
- * crop_h - Crop height
1181
- * crop_x - The horizontal starting point of the crop
1182
- * crop_y - The vertical starting point of the crop
1183
- *
1184
  * @since 1.1.0
1185
  *
1186
  * @param array|string $args {
@@ -1246,8 +1233,8 @@ function bp_core_avatar_handle_crop( $args = '' ) {
1246
  *
1247
  * @since 2.3.0
1248
  *
1249
- * @return string|null A json object containing success data if the crop/capture succeeded
1250
- * error message otherwise.
1251
  */
1252
  function bp_avatar_ajax_set() {
1253
  // Bail if not a POST action.
@@ -1397,9 +1384,10 @@ add_action( 'wp_ajax_bp_avatar_set', 'bp_avatar_ajax_set' );
1397
  function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
1398
  global $pagenow;
1399
 
1400
- // Do not filter if inside WordPress options page.
1401
- if ( 'options-discussion.php' == $pagenow )
1402
  return $avatar;
 
1403
 
1404
  // If passed an object, assume $user->user_id.
1405
  if ( is_object( $user ) ) {
@@ -1511,6 +1499,8 @@ function bp_core_check_avatar_size( $file ) {
1511
  * Get allowed avatar types.
1512
  *
1513
  * @since 2.3.0
 
 
1514
  */
1515
  function bp_core_get_allowed_avatar_types() {
1516
  $allowed_types = bp_attachments_get_allowed_types( 'avatar' );
@@ -1537,6 +1527,8 @@ function bp_core_get_allowed_avatar_types() {
1537
  * Get allowed avatar mime types.
1538
  *
1539
  * @since 2.3.0
 
 
1540
  */
1541
  function bp_core_get_allowed_avatar_mimes() {
1542
  $allowed_types = bp_core_get_allowed_avatar_types();
@@ -1943,7 +1935,7 @@ function bp_core_avatar_default_thumb( $type = 'gravatar', $params = array() ) {
1943
  * parameter of the WordPress main query to this posted var. To avoid
1944
  * notices, we need to make sure this 'week' query var is reset to 0.
1945
  *
1946
- * @since 2.2.0
1947
  *
1948
  * @param WP_Query|null $posts_query The main query object.
1949
  */
@@ -1977,7 +1969,7 @@ add_action( 'bp_parse_query', 'bp_core_avatar_reset_query', 10, 1 );
1977
  /**
1978
  * Checks whether Avatar UI should be loaded.
1979
  *
1980
- * @since 2.3.0
1981
  *
1982
  * @return bool True if Avatar UI should load, false otherwise.
1983
  */
@@ -2009,7 +2001,7 @@ function bp_avatar_is_front_edit() {
2009
  * - Load the avatar UI for a component that is !groups or !user (return true regarding your conditions)
2010
  * - Completely disable the avatar UI introduced in 2.3 (eg: __return_false())
2011
  *
2012
- * @since 2.3.0
2013
  *
2014
  * @param bool $retval Whether or not to load the Avatar UI.
2015
  */
@@ -2019,7 +2011,7 @@ function bp_avatar_is_front_edit() {
2019
  /**
2020
  * Checks whether the Webcam Avatar UI part should be loaded.
2021
  *
2022
- * @since 2.3.0
2023
  *
2024
  * @global $is_safari
2025
  * @global $is_IE
@@ -2040,7 +2032,7 @@ function bp_avatar_use_webcam() {
2040
  /**
2041
  * Bail when the browser does not support getUserMedia.
2042
  *
2043
- * @see http://caniuse.com/#feat=stream
2044
  */
2045
  if ( $is_safari || $is_IE || ( $is_chrome && ! is_ssl() ) ) {
2046
  return false;
@@ -2060,7 +2052,7 @@ function bp_avatar_use_webcam() {
2060
  /**
2061
  * Template function to load the Avatar UI javascript templates.
2062
  *
2063
- * @since 2.3.0
2064
  */
2065
  function bp_avatar_get_templates() {
2066
  if ( ! bp_avatar_is_front_edit() ) {
@@ -2076,7 +2068,7 @@ function bp_avatar_get_templates() {
2076
  * If the "avatar templates" are not including the new template tag, this will
2077
  * help users to get the avatar UI.
2078
  *
2079
- * @since 2.3.0
2080
  */
2081
  function bp_avatar_template_check() {
2082
  if ( ! bp_avatar_is_front_edit() ) {
313
  break;
314
 
315
  case 'group' :
316
+ $item_name = bp_get_group_name( groups_get_group( $params['item_id'] ) );
317
  break;
318
 
319
  case 'user' :
648
  * @since 2.6.0
649
  *
650
  * @param string $default_grav The avatar default.
651
+ * @param array $params The avatar's data.
652
  */
653
  $default_grav = apply_filters( 'bp_core_avatar_default', $default_grav, $params );
654
 
726
  *
727
  * @since 2.5.1
728
  *
729
+ * @param bool $value Whether or not to delete the avatar.
730
  * @param array $args {
731
  * Array of function parameters.
732
  *
805
  *
806
  * @since 2.3.0
807
  *
808
+ * @return string|null A JSON object containing success data if the avatar was deleted,
809
  * error message otherwise.
810
  */
811
  function bp_avatar_ajax_delete() {
948
  *
949
  * @since 2.3.0
950
  *
951
+ * @return string|null A JSON object containing success data if the upload succeeded
952
+ * error message otherwise.
953
  */
954
  function bp_avatar_ajax_upload() {
955
  // Bail if not a POST action.
959
 
960
  /**
961
  * Sending the json response will be different if
962
+ * the current Plupload runtime is html4.
963
  */
964
  $is_html4 = false;
965
  if ( ! empty( $_POST['html4' ] ) ) {
1005
 
1006
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1007
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1008
+ $bp->groups->current_group = groups_get_group( $bp_params['item_id'] );
 
 
 
1009
  }
1010
  } else {
1011
  /**
1168
  /**
1169
  * Crop an uploaded avatar.
1170
  *
 
 
 
 
 
 
 
 
 
 
1171
  * @since 1.1.0
1172
  *
1173
  * @param array|string $args {
1233
  *
1234
  * @since 2.3.0
1235
  *
1236
+ * @return string|null A JSON object containing success data if the crop/capture succeeded
1237
+ * error message otherwise.
1238
  */
1239
  function bp_avatar_ajax_set() {
1240
  // Bail if not a POST action.
1384
  function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
1385
  global $pagenow;
1386
 
1387
+ // Don't filter if inside WordPress options page and force_default is true.
1388
+ if ( 'options-discussion.php' === $pagenow && true === $args['force_default'] ) {
1389
  return $avatar;
1390
+ }
1391
 
1392
  // If passed an object, assume $user->user_id.
1393
  if ( is_object( $user ) ) {
1499
  * Get allowed avatar types.
1500
  *
1501
  * @since 2.3.0
1502
+ *
1503
+ * @return array
1504
  */
1505
  function bp_core_get_allowed_avatar_types() {
1506
  $allowed_types = bp_attachments_get_allowed_types( 'avatar' );
1527
  * Get allowed avatar mime types.
1528
  *
1529
  * @since 2.3.0
1530
+ *
1531
+ * @return array
1532
  */
1533
  function bp_core_get_allowed_avatar_mimes() {
1534
  $allowed_types = bp_core_get_allowed_avatar_types();
1935
  * parameter of the WordPress main query to this posted var. To avoid
1936
  * notices, we need to make sure this 'week' query var is reset to 0.
1937
  *
1938
+ * @since 2.2.0
1939
  *
1940
  * @param WP_Query|null $posts_query The main query object.
1941
  */
1969
  /**
1970
  * Checks whether Avatar UI should be loaded.
1971
  *
1972
+ * @since 2.3.0
1973
  *
1974
  * @return bool True if Avatar UI should load, false otherwise.
1975
  */
2001
  * - Load the avatar UI for a component that is !groups or !user (return true regarding your conditions)
2002
  * - Completely disable the avatar UI introduced in 2.3 (eg: __return_false())
2003
  *
2004
+ * @since 2.3.0
2005
  *
2006
  * @param bool $retval Whether or not to load the Avatar UI.
2007
  */
2011
  /**
2012
  * Checks whether the Webcam Avatar UI part should be loaded.
2013
  *
2014
+ * @since 2.3.0
2015
  *
2016
  * @global $is_safari
2017
  * @global $is_IE
2032
  /**
2033
  * Bail when the browser does not support getUserMedia.
2034
  *
2035
+ * @see http://caniuse.com/#feat=stream
2036
  */
2037
  if ( $is_safari || $is_IE || ( $is_chrome && ! is_ssl() ) ) {
2038
  return false;
2052
  /**
2053
  * Template function to load the Avatar UI javascript templates.
2054
  *
2055
+ * @since 2.3.0
2056
  */
2057
  function bp_avatar_get_templates() {
2058
  if ( ! bp_avatar_is_front_edit() ) {
2068
  * If the "avatar templates" are not including the new template tag, this will
2069
  * help users to get the avatar UI.
2070
  *
2071
+ * @since 2.3.0
2072
  */
2073
  function bp_avatar_template_check() {
2074
  if ( ! bp_avatar_is_front_edit() ) {
bp-core/bp-core-buddybar.php CHANGED
@@ -33,7 +33,7 @@ defined( 'ABSPATH' ) || exit;
33
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
34
  * item is clicked.
35
  * }
36
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
37
  * @return bool|null Returns false on failure.
38
  */
39
  function bp_core_new_nav_item( $args, $component = 'members' ) {
@@ -107,7 +107,7 @@ function bp_core_new_nav_item( $args, $component = 'members' ) {
107
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
108
  * item is clicked.
109
  * }
110
- * @param string $component Optional. Component that the nav belongs to.
111
  * @return bool|BP_Nav_Item Returns false on failure, new nav item on success.
112
  */
113
  function bp_core_create_nav_link( $args = '', $component = 'members' ) {
@@ -214,9 +214,9 @@ function bp_core_register_nav_screen_function( $args = '' ) {
214
  }
215
 
216
  /**
217
- * If this is for site admins only and the user is not one,
218
- * don't register this screen function.
219
- */
220
  if ( ! empty( $r['site_admin_only'] ) && ! bp_current_user_can( 'bp_moderate' ) ) {
221
  return false;
222
  }
@@ -321,7 +321,7 @@ function bp_core_new_nav_default( $args = '' ) {
321
  }
322
  }
323
 
324
- // Edit the screen function for the parent nav
325
  $bp->members->nav->edit_nav( array(
326
  'screen_function' => &$r['screen_function'],
327
  'default_subnav_slug' => $r['subnav_slug'],
@@ -394,7 +394,7 @@ function bp_core_new_nav_default( $args = '' ) {
394
  * @type bool $show_in_admin_bar Optional. Whether the nav item should be added into the group's "Edit"
395
  * Admin Bar menu for group admins. Default: false.
396
  * }
397
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
398
  * @return bool|null Returns false on failure.
399
  */
400
  function bp_core_new_subnav_item( $args, $component = null ) {
@@ -405,7 +405,7 @@ function bp_core_new_subnav_item( $args, $component = null ) {
405
  * Assume that this item is intended to belong to the current group if:
406
  * a) the 'parent_slug' is the same as the slug of the current group, or
407
  * b) the 'parent_slug' starts with the slug of the current group, and the members nav doesn't have
408
- * a primary item with that slug
409
  */
410
  $group_slug = bp_get_current_group_slug();
411
  if (
@@ -474,8 +474,8 @@ function bp_core_new_subnav_item( $args, $component = null ) {
474
  * the group's "Edit" Admin Bar menu for group admins.
475
  * Default: false.
476
  * }
477
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
478
- * @return bool|BP_Nav_Item Returns false on failure, new nav item on success.
479
  */
480
  function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
481
  $bp = buddypress();
@@ -570,7 +570,7 @@ function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
570
  * the group's "Edit" Admin Bar menu for group admins.
571
  * Default: false.
572
  * }
573
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
574
  * @return bool|null Returns false on failure.
575
  */
576
  function bp_core_register_subnav_screen_function( $args = '', $component = 'members' ) {
33
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
34
  * item is clicked.
35
  * }
36
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
37
  * @return bool|null Returns false on failure.
38
  */
39
  function bp_core_new_nav_item( $args, $component = 'members' ) {
107
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
108
  * item is clicked.
109
  * }
110
+ * @param string $component Optional. Component that the nav belongs to.
111
  * @return bool|BP_Nav_Item Returns false on failure, new nav item on success.
112
  */
113
  function bp_core_create_nav_link( $args = '', $component = 'members' ) {
214
  }
215
 
216
  /**
217
+ * If this is for site admins only and the user is not one,
218
+ * don't register this screen function.
219
+ */
220
  if ( ! empty( $r['site_admin_only'] ) && ! bp_current_user_can( 'bp_moderate' ) ) {
221
  return false;
222
  }
321
  }
322
  }
323
 
324
+ // Edit the screen function for the parent nav.
325
  $bp->members->nav->edit_nav( array(
326
  'screen_function' => &$r['screen_function'],
327
  'default_subnav_slug' => $r['subnav_slug'],
394
  * @type bool $show_in_admin_bar Optional. Whether the nav item should be added into the group's "Edit"
395
  * Admin Bar menu for group admins. Default: false.
396
  * }
397
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
398
  * @return bool|null Returns false on failure.
399
  */
400
  function bp_core_new_subnav_item( $args, $component = null ) {
405
  * Assume that this item is intended to belong to the current group if:
406
  * a) the 'parent_slug' is the same as the slug of the current group, or
407
  * b) the 'parent_slug' starts with the slug of the current group, and the members nav doesn't have
408
+ * a primary item with that slug.
409
  */
410
  $group_slug = bp_get_current_group_slug();
411
  if (
474
  * the group's "Edit" Admin Bar menu for group admins.
475
  * Default: false.
476
  * }
477
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
478
+ * @return bool|object Returns false on failure, new BP_Nav_Item instance on success.
479
  */
480
  function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
481
  $bp = buddypress();
570
  * the group's "Edit" Admin Bar menu for group admins.
571
  * Default: false.
572
  * }
573
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
574
  * @return bool|null Returns false on failure.
575
  */
576
  function bp_core_register_subnav_screen_function( $args = '', $component = 'members' ) {
bp-core/bp-core-cache.php CHANGED
@@ -115,7 +115,17 @@ add_action( 'update_option', 'bp_core_clear_directory_pages_cache_settings_edit'
115
  * @param string $option Option name.
116
  */
117
  function bp_core_clear_root_options_cache( $option ) {
 
 
 
 
 
118
  $keys = array_keys( bp_get_default_options() );
 
 
 
 
 
119
  $keys = array_merge( $keys, array(
120
  'registration',
121
  'avatar_default',
@@ -252,3 +262,100 @@ function bp_update_meta_cache( $args = array() ) {
252
 
253
  return $cache;
254
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  * @param string $option Option name.
116
  */
117
  function bp_core_clear_root_options_cache( $option ) {
118
+ foreach ( array( 'add_option', 'add_site_option', 'update_option', 'update_site_option' ) as $action ) {
119
+ remove_action( $action, 'bp_core_clear_root_options_cache' );
120
+ }
121
+
122
+ // Surrounding code prevents infinite loops on WP < 4.4.
123
  $keys = array_keys( bp_get_default_options() );
124
+
125
+ foreach ( array( 'add_option', 'add_site_option', 'update_option', 'update_site_option' ) as $action ) {
126
+ add_action( $action, 'bp_core_clear_root_options_cache' );
127
+ }
128
+
129
  $keys = array_merge( $keys, array(
130
  'registration',
131
  'avatar_default',
262
 
263
  return $cache;
264
  }
265
+
266
+ /**
267
+ * Gets a value that has been cached using an incremented key.
268
+ *
269
+ * A utility function for use by query methods like BP_Activity_Activity::get().
270
+ *
271
+ * @since 2.7.0
272
+ * @see bp_core_set_incremented_cache()
273
+ *
274
+ * @param string $key Unique key for the query. Usually a SQL string.
275
+ * @param string $group Cache group. Eg 'bp_activity'.
276
+ * @return array|bool False if no cached values are found, otherwise an array of IDs.
277
+ */
278
+ function bp_core_get_incremented_cache( $key, $group ) {
279
+ $cache_key = bp_core_get_incremented_cache_key( $key, $group );
280
+ return wp_cache_get( $cache_key, $group );
281
+ }
282
+
283
+ /**
284
+ * Caches a value using an incremented key.
285
+ *
286
+ * An "incremented key" is a cache key that is hashed with a unique incrementor,
287
+ * allowing for bulk invalidation.
288
+ *
289
+ * Use this method when caching data that should be invalidated whenever any
290
+ * object of a given type is created, updated, or deleted. This usually means
291
+ * data related to object queries, which can only reliably cached until the
292
+ * underlying set of objects has been modified. See, eg, BP_Activity_Activity::get().
293
+ *
294
+ * @since 2.7.0
295
+ *
296
+ * @param string $key Unique key for the query. Usually a SQL string.
297
+ * @param string $group Cache group. Eg 'bp_activity'.
298
+ * @param array $ids Array of IDs.
299
+ * @return bool
300
+ */
301
+ function bp_core_set_incremented_cache( $key, $group, $ids ) {
302
+ $cache_key = bp_core_get_incremented_cache_key( $key, $group );
303
+ return wp_cache_set( $cache_key, $ids, $group );
304
+ }
305
+
306
+ /**
307
+ * Gets the key to be used when caching a value using an incremented cache key.
308
+ *
309
+ * The $key is hashed with a component-specific incrementor, which is used to
310
+ * invalidate multiple caches at once.
311
+
312
+ * @since 2.7.0
313
+ *
314
+ * @param string $key Unique key for the query. Usually a SQL string.
315
+ * @param string $group Cache group. Eg 'bp_activity'.
316
+ * @return string
317
+ */
318
+ function bp_core_get_incremented_cache_key( $key, $group ) {
319
+ $incrementor = bp_core_get_incrementor( $group );
320
+ $cache_key = md5( $key . $incrementor );
321
+ return $cache_key;
322
+ }
323
+
324
+ /**
325
+ * Gets a group-specific cache incrementor.
326
+ *
327
+ * The incrementor is paired with query identifiers (like SQL strings) to
328
+ * create cache keys that can be invalidated en masse.
329
+ *
330
+ * If an incrementor does not yet exist for the given `$group`, one will
331
+ * be created.
332
+ *
333
+ * @since 2.7.0
334
+ *
335
+ * @param string $group Cache group. Eg 'bp_activity'.
336
+ * @return string
337
+ */
338
+ function bp_core_get_incrementor( $group ) {
339
+ $incrementor = wp_cache_get( 'incrementor', $group );
340
+ if ( ! $incrementor ) {
341
+ $incrementor = microtime();
342
+ wp_cache_set( 'incrementor', $incrementor, $group );
343
+ }
344
+
345
+ return $incrementor;
346
+ }
347
+
348
+ /**
349
+ * Reset a group-specific cache incrementor.
350
+ *
351
+ * Call this function when all incrementor-based caches associated with a given
352
+ * cache group should be invalidated.
353
+ *
354
+ * @since 2.7.0
355
+ *
356
+ * @param string $group Cache group. Eg 'bp_activity'.
357
+ * @return bool True on success, false on failure.
358
+ */
359
+ function bp_core_reset_incrementor( $group ) {
360
+ return wp_cache_delete( 'incrementor', $group );
361
+ }
bp-core/bp-core-caps.php CHANGED
@@ -20,7 +20,7 @@ defined( 'ABSPATH' ) || exit;
20
  *
21
  * @since 2.1.0
22
  *
23
- * @return array
24
  */
25
  function bp_get_current_blog_roles() {
26
  global $wp_roles;
@@ -56,7 +56,6 @@ function bp_get_current_blog_roles() {
56
  * This is called on plugin activation.
57
  *
58
  * @since 1.6.0
59
- *
60
  */
61
  function bp_add_caps() {
62
  global $wp_roles;
@@ -89,7 +88,6 @@ function bp_add_caps() {
89
  * This is called on plugin deactivation.
90
  *
91
  * @since 1.6.0
92
- *
93
  */
94
  function bp_remove_caps() {
95
  global $wp_roles;
@@ -218,9 +216,6 @@ function bp_get_caps_for_role( $role = '' ) {
218
  * already have a role or capability on.
219
  *
220
  * @since 1.6.0
221
- *
222
- * @global BuddyPress $bp Global BuddyPress settings object.
223
- *
224
  */
225
  function bp_set_current_user_default_role() {
226
 
@@ -248,55 +243,105 @@ function bp_set_current_user_default_role() {
248
  *
249
  * @since 1.6.0
250
  * @since 2.4.0 Second argument modified to accept an array, rather than `$blog_id`.
 
251
  *
252
  * @param string $capability Capability or role name.
253
  * @param array|int $args {
254
  * Array of extra arguments applicable to the capability check.
255
- * @type int $blog_id Optional. Blog ID. Defaults to the BP root blog.
 
256
  * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
257
  * }
258
  * @return bool True if the user has the cap for the given parameters.
259
  */
260
  function bp_current_user_can( $capability, $args = array() ) {
261
- $blog_id = 0;
262
-
263
  // Backward compatibility for older $blog_id parameter.
264
  if ( is_int( $args ) ) {
265
- $blog_id = $args;
266
  $args = array();
 
267
 
268
  // New format for second parameter.
269
  } elseif ( is_array( $args ) && isset( $args['blog_id'] ) ) {
270
  // Get the blog ID if set, but don't pass along to `current_user_can_for_blog()`.
271
- $blog_id = (int) $args['blog_id'];
272
  unset( $args['blog_id'] );
273
  }
274
 
275
- // Backward compatibility for older bp_current_user_can() checks
276
- if ( empty( $args ) ) {
277
- $args = null;
278
- }
279
 
280
  // Use root blog if no ID passed.
281
- if ( empty( $blog_id ) ) {
282
- $blog_id = bp_get_root_blog_id();
283
  }
284
 
285
- $args = array( $blog_id, $capability, $args );
286
- $retval = call_user_func_array( 'current_user_can_for_blog', $args );
 
 
 
287
 
288
  /**
289
  * Filters whether or not the current user has a given capability.
290
  *
291
  * @since 1.6.0
292
  * @since 2.4.0 Pass `$args` variable.
 
293
  *
294
  * @param bool $retval Whether or not the current user has the capability.
295
  * @param string $capability The capability being checked for.
296
  * @param int $blog_id Blog ID. Defaults to the BP root blog.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  * @param array $args Array of extra arguments passed.
298
  */
299
- return (bool) apply_filters( 'bp_current_user_can', $retval, $capability, $blog_id, $args );
 
 
 
 
 
 
300
  }
301
 
302
  /**
20
  *
21
  * @since 2.1.0
22
  *
23
+ * @return object
24
  */
25
  function bp_get_current_blog_roles() {
26
  global $wp_roles;
56
  * This is called on plugin activation.
57
  *
58
  * @since 1.6.0
 
59
  */
60
  function bp_add_caps() {
61
  global $wp_roles;
88
  * This is called on plugin deactivation.
89
  *
90
  * @since 1.6.0
 
91
  */
92
  function bp_remove_caps() {
93
  global $wp_roles;
216
  * already have a role or capability on.
217
  *
218
  * @since 1.6.0
 
 
 
219
  */
220
  function bp_set_current_user_default_role() {
221
 
243
  *
244
  * @since 1.6.0
245
  * @since 2.4.0 Second argument modified to accept an array, rather than `$blog_id`.
246
+ * @since 2.7.0 Deprecated $args['blog_id'] in favor of $args['site_id'].
247
  *
248
  * @param string $capability Capability or role name.
249
  * @param array|int $args {
250
  * Array of extra arguments applicable to the capability check.
251
+ * @type int $site_id Optional. Blog ID. Defaults to the BP root blog.
252
+ * @type int $blog_id Deprecated. Use $site_id instead.
253
  * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
254
  * }
255
  * @return bool True if the user has the cap for the given parameters.
256
  */
257
  function bp_current_user_can( $capability, $args = array() ) {
 
 
258
  // Backward compatibility for older $blog_id parameter.
259
  if ( is_int( $args ) ) {
260
+ $site_id = $args;
261
  $args = array();
262
+ $args['site_id'] = $site_id;
263
 
264
  // New format for second parameter.
265
  } elseif ( is_array( $args ) && isset( $args['blog_id'] ) ) {
266
  // Get the blog ID if set, but don't pass along to `current_user_can_for_blog()`.
267
+ $args['site_id'] = (int) $args['blog_id'];
268
  unset( $args['blog_id'] );
269
  }
270
 
271
+ // Cast $args as an array.
272
+ $args = (array) $args;
 
 
273
 
274
  // Use root blog if no ID passed.
275
+ if ( empty( $args['site_id'] ) ) {
276
+ $args['site_id'] = bp_get_root_blog_id();
277
  }
278
 
279
+ /** This filter is documented in /bp-core/bp-core-template.php */
280
+ $current_user_id = apply_filters( 'bp_loggedin_user_id', get_current_user_id() );
281
+
282
+ // Call bp_user_can().
283
+ $retval = bp_user_can( $current_user_id, $capability, $args );
284
 
285
  /**
286
  * Filters whether or not the current user has a given capability.
287
  *
288
  * @since 1.6.0
289
  * @since 2.4.0 Pass `$args` variable.
290
+ * @since 2.7.0 Change format of $args variable array.
291
  *
292
  * @param bool $retval Whether or not the current user has the capability.
293
  * @param string $capability The capability being checked for.
294
  * @param int $blog_id Blog ID. Defaults to the BP root blog.
295
+ * @param array $args Array of extra arguments as originally passed.
296
+ */
297
+ return (bool) apply_filters( 'bp_current_user_can', $retval, $capability, $args['site_id'], $args );
298
+ }
299
+
300
+ /**
301
+ * Check whether the specified user has a given capability on a given site.
302
+ *
303
+ * @since 2.7.0
304
+ *
305
+ * @param int $user_id
306
+ * @param string $capability Capability or role name.
307
+ * @param array|int $args {
308
+ * Array of extra arguments applicable to the capability check.
309
+ *
310
+ * @type int $site_id Optional. Site ID. Defaults to the BP root blog.
311
+ * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
312
+ * }
313
+ * @return bool True if the user has the cap for the given parameters.
314
+ */
315
+ function bp_user_can( $user_id, $capability, $args = array() ) {
316
+ $site_id = bp_get_root_blog_id();
317
+
318
+ // Get the site ID if set, but don't pass along to user_can().
319
+ if ( isset( $args['site_id'] ) ) {
320
+ $site_id = (int) $args['site_id'];
321
+ unset( $args['site_id'] );
322
+ }
323
+
324
+ $switched = is_multisite() ? switch_to_blog( $site_id ) : false;
325
+ $retval = call_user_func_array( 'user_can', array( $user_id, $capability, $args ) );
326
+
327
+ /**
328
+ * Filters whether or not the specified user has a given capability on a given site.
329
+ *
330
+ * @since 2.7.0
331
+ *
332
+ * @param bool $retval Whether or not the current user has the capability.
333
+ * @param int $user_id
334
+ * @param string $capability The capability being checked for.
335
+ * @param int $site_id Site ID. Defaults to the BP root blog.
336
  * @param array $args Array of extra arguments passed.
337
  */
338
+ $retval = (bool) apply_filters( 'bp_user_can', $retval, $user_id, $capability, $site_id, $args );
339
+
340
+ if ( $switched ) {
341
+ restore_current_blog();
342
+ }
343
+
344
+ return $retval;
345
  }
346
 
347
  /**
bp-core/bp-core-catchuri.php CHANGED
@@ -218,7 +218,7 @@ function bp_core_set_uri_globals() {
218
  /**
219
  * Filter the portion of the URI that is the displayed user's slug.
220
  *
221
- * eg. example.com/ADMIN (when root profiles is enabled)
222
  * example.com/members/ADMIN (when root profiles isn't enabled)
223
  *
224
  * ADMIN would be the displayed user's slug.
@@ -553,16 +553,18 @@ function bp_core_catch_profile_uri() {
553
  * @since 2.6.0
554
  *
555
  * @param string $member_slug The current member slug.
 
556
  */
557
  function bp_core_members_shortlink_redirector( $member_slug ) {
 
558
  /**
559
  * Shortlink slug to redirect to logged-in user.
560
  *
561
- * x.com/members/me/* will redirect to x.com/members/{LOGGED_IN_USER_SLUG}/*
562
  *
563
  * @since 2.6.0
564
  *
565
- * @var string $slug Defaults to 'me'.
566
  */
567
  $me_slug = apply_filters( 'bp_core_members_shortlink_slug', 'me' );
568
 
@@ -635,9 +637,9 @@ function bp_core_no_access( $args = '' ) {
635
  $redirect_url .= $_SERVER['REQUEST_URI'];
636
 
637
  $defaults = array(
638
- 'mode' => 2, // 1 = $root, 2 = wp-login.php
639
- 'redirect' => $redirect_url, // the URL you get redirected to when a user successfully logs in
640
- 'root' => bp_get_root_domain(), // the landing page you get redirected to when a user doesn't have access
641
  'message' => __( 'You must log in to access the page you requested.', 'buddypress' )
642
  );
643
 
@@ -654,7 +656,7 @@ function bp_core_no_access( $args = '' ) {
654
  extract( $r, EXTR_SKIP );
655
 
656
  /*
657
- * @ignore Ignore these filters and use 'bp_core_no_access' above
658
  */
659
  $mode = apply_filters( 'bp_no_access_mode', $mode, $root, $redirect, $message );
660
  $redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root, $message, $mode );
@@ -664,7 +666,7 @@ function bp_core_no_access( $args = '' ) {
664
 
665
  switch ( $mode ) {
666
 
667
- // Option to redirect to wp-login.php
668
  // Error message is displayed with bp_core_no_access_wp_login_error().
669
  case 2 :
670
  if ( !empty( $redirect ) ) {
@@ -675,7 +677,7 @@ function bp_core_no_access( $args = '' ) {
675
 
676
  break;
677
 
678
- // Redirect to root with "redirect_to" parameter
679
  // Error message is displayed with bp_core_add_message().
680
  case 1 :
681
  default :
@@ -696,16 +698,18 @@ function bp_core_no_access( $args = '' ) {
696
  }
697
 
698
  /**
699
- * Add an error message to wp-login.php.
700
- *
701
- * Hooks into the "bpnoaccess" action defined in bp_core_no_access().
702
  *
703
  * @since 1.5.0
 
704
  *
705
- * @global string $error Error message to pass to wp-login.php.
 
706
  */
707
- function bp_core_no_access_wp_login_error() {
708
- global $error;
 
 
709
 
710
  /**
711
  * Filters the error message for wp-login.php when needing to log in before accessing.
@@ -715,12 +719,27 @@ function bp_core_no_access_wp_login_error() {
715
  * @param string $value Error message to display.
716
  * @param string $value URL to redirect user to after successful login.
717
  */
718
- $error = apply_filters( 'bp_wp_login_error', __( 'You must log in to access the page you requested.', 'buddypress' ), $_REQUEST['redirect_to'] );
 
 
719
 
720
- // Shake shake shake!.
721
- add_action( 'login_head', 'wp_shake_js', 12 );
722
  }
723
- add_action( 'login_form_bpnoaccess', 'bp_core_no_access_wp_login_error' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
724
 
725
  /**
726
  * Canonicalize BuddyPress URLs.
@@ -939,7 +958,6 @@ function bp_get_requested_url() {
939
  * notice in future versions of BuddyPress.
940
  *
941
  * @since 1.6.0
942
- *
943
  */
944
  function _bp_maybe_remove_redirect_canonical() {
945
  if ( ! bp_is_blog_page() )
@@ -997,3 +1015,36 @@ function _bp_maybe_remove_rel_canonical() {
997
  }
998
  }
999
  add_action( 'wp_head', '_bp_maybe_remove_rel_canonical', 8 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  /**
219
  * Filter the portion of the URI that is the displayed user's slug.
220
  *
221
+ * Eg. example.com/ADMIN (when root profiles is enabled)
222
  * example.com/members/ADMIN (when root profiles isn't enabled)
223
  *
224
  * ADMIN would be the displayed user's slug.
553
  * @since 2.6.0
554
  *
555
  * @param string $member_slug The current member slug.
556
+ * @return string $member_slug The current member slug.
557
  */
558
  function bp_core_members_shortlink_redirector( $member_slug ) {
559
+
560
  /**
561
  * Shortlink slug to redirect to logged-in user.
562
  *
563
+ * The x.com/members/me/* url will redirect to x.com/members/{LOGGED_IN_USER_SLUG}/*
564
  *
565
  * @since 2.6.0
566
  *
567
+ * @param string $slug Defaults to 'me'.
568
  */
569
  $me_slug = apply_filters( 'bp_core_members_shortlink_slug', 'me' );
570
 
637
  $redirect_url .= $_SERVER['REQUEST_URI'];
638
 
639
  $defaults = array(
640
+ 'mode' => 2, // 1 = $root, 2 = wp-login.php.
641
+ 'redirect' => $redirect_url, // the URL you get redirected to when a user successfully logs in.
642
+ 'root' => bp_get_root_domain(), // the landing page you get redirected to when a user doesn't have access.
643
  'message' => __( 'You must log in to access the page you requested.', 'buddypress' )
644
  );
645
 
656
  extract( $r, EXTR_SKIP );
657
 
658
  /*
659
+ * @ignore Ignore these filters and use 'bp_core_no_access' above.
660
  */
661
  $mode = apply_filters( 'bp_no_access_mode', $mode, $root, $redirect, $message );
662
  $redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root, $message, $mode );
666
 
667
  switch ( $mode ) {
668
 
669
+ // Option to redirect to wp-login.php.
670
  // Error message is displayed with bp_core_no_access_wp_login_error().
671
  case 2 :
672
  if ( !empty( $redirect ) ) {
677
 
678
  break;
679
 
680
+ // Redirect to root with "redirect_to" parameter.
681
  // Error message is displayed with bp_core_add_message().
682
  case 1 :
683
  default :
698
  }
699
 
700
  /**
701
+ * Add a custom BuddyPress no access error message to wp-login.php.
 
 
702
  *
703
  * @since 1.5.0
704
+ * @since 2.7.0 Hook moved to 'wp_login_errors' made available since WP 3.6.0.
705
  *
706
+ * @param WP_Error $errors Current error container.
707
+ * @return WP_Error
708
  */
709
+ function bp_core_no_access_wp_login_error( $errors ) {
710
+ if ( empty( $_GET['action'] ) || 'bpnoaccess' !== $_GET['action'] ) {
711
+ return $errors;
712
+ }
713
 
714
  /**
715
  * Filters the error message for wp-login.php when needing to log in before accessing.
719
  * @param string $value Error message to display.
720
  * @param string $value URL to redirect user to after successful login.
721
  */
722
+ $message = apply_filters( 'bp_wp_login_error', __( 'You must log in to access the page you requested.', 'buddypress' ), $_REQUEST['redirect_to'] );
723
+
724
+ $errors->add( 'bp_no_access', $message );
725
 
726
+ return $errors;
 
727
  }
728
+ add_filter( 'wp_login_errors', 'bp_core_no_access_wp_login_error' );
729
+
730
+ /**
731
+ * Add our custom error code to WP login's shake error codes.
732
+ *
733
+ * @since 2.7.0
734
+ *
735
+ * @param array $codes Array of WP error codes.
736
+ * @return array
737
+ */
738
+ function bp_core_login_filter_shake_codes( $codes ) {
739
+ $codes[] = 'bp_no_access';
740
+ return $codes;
741
+ }
742
+ add_filter( 'shake_error_codes', 'bp_core_login_filter_shake_codes' );
743
 
744
  /**
745
  * Canonicalize BuddyPress URLs.
958
  * notice in future versions of BuddyPress.
959
  *
960
  * @since 1.6.0
 
961
  */
962
  function _bp_maybe_remove_redirect_canonical() {
963
  if ( ! bp_is_blog_page() )
1015
  }
1016
  }
1017
  add_action( 'wp_head', '_bp_maybe_remove_rel_canonical', 8 );
1018
+
1019
+ /**
1020
+ * Stop WordPress performing a DB query for its main loop.
1021
+ *
1022
+ * As of WordPress 4.6, it is possible to bypass the main WP_Query entirely.
1023
+ * This saves us one unnecessary database query! :)
1024
+ *
1025
+ * @since 2.7.0
1026
+ *
1027
+ * @param null $retval Current return value for filter.
1028
+ * @param WP_Query $query Current WordPress query object.
1029
+ * @return null|array
1030
+ */
1031
+ function bp_core_filter_wp_query( $retval, $query ) {
1032
+ if ( ! $query->is_main_query() ) {
1033
+ return $retval;
1034
+ }
1035
+
1036
+ /*
1037
+ * If not on a BP single page, bail.
1038
+ * Too early to use bp_is_single_item(), so use BP conditionals.
1039
+ */
1040
+ if ( false === ( bp_is_group() || bp_is_user() || bp_is_single_activity() ) ) {
1041
+ return $retval;
1042
+ }
1043
+
1044
+ // Set default properties as recommended in the 'posts_pre_query' DocBlock.
1045
+ $query->found_posts = 0;
1046
+ $query->max_num_pages = 0;
1047
+
1048
+ // Return something other than a null value to bypass WP_Query.
1049
+ return array();
1050
+ }
bp-core/bp-core-classes.php CHANGED
@@ -33,6 +33,7 @@ require dirname( __FILE__ ) . '/classes/class-bp-phpmailer.php';
33
  require dirname( __FILE__ ) . '/classes/class-bp-core-nav.php';
34
  require dirname( __FILE__ ) . '/classes/class-bp-core-nav-item.php';
35
  require dirname( __FILE__ ) . '/classes/class-bp-core-oembed-extension.php';
 
36
 
37
  if ( buddypress()->do_nav_backcompat ) {
38
  require dirname( __FILE__ ) . '/classes/class-bp-core-bp-nav-backcompat.php';
33
  require dirname( __FILE__ ) . '/classes/class-bp-core-nav.php';
34
  require dirname( __FILE__ ) . '/classes/class-bp-core-nav-item.php';
35
  require dirname( __FILE__ ) . '/classes/class-bp-core-oembed-extension.php';
36
+ require dirname( __FILE__ ) . '/classes/class-bp-core-html-element.php';
37
 
38
  if ( buddypress()->do_nav_backcompat ) {
39
  require dirname( __FILE__ ) . '/classes/class-bp-core-bp-nav-backcompat.php';
bp-core/bp-core-cssjs.php CHANGED
@@ -19,35 +19,79 @@ function bp_core_register_common_scripts() {
19
  $min = bp_core_get_minified_asset_suffix();
20
  $url = buddypress()->plugin_url . 'bp-core/js/';
21
 
22
- /**
23
- * Filters the BuddyPress Core javascript files to register.
24
  *
25
- * @since 2.1.0
26
  *
27
- * @param array $value Array of javascript file information to register.
 
28
  */
29
- $scripts = apply_filters( 'bp_core_register_common_scripts', array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
 
 
31
  // Legacy.
32
- 'bp-confirm' => array( 'file' => "{$url}confirm{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
33
  'bp-widget-members' => array( 'file' => "{$url}widget-members{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
34
- 'bp-jquery-query' => array( 'file' => "{$url}jquery-query{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
35
- 'bp-jquery-cookie' => array( 'file' => "{$url}jquery-cookie{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
36
- 'bp-jquery-scroll-to' => array( 'file' => "{$url}jquery-scroll-to{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
37
 
38
- // 2.1
39
- 'jquery-caret' => array( 'file' => "{$url}jquery.caret{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => true ),
40
- 'jquery-atwho' => array( 'file' => "{$url}jquery.atwho{$min}.js", 'dependencies' => array( 'jquery', 'jquery-caret' ), 'footer' => true ),
41
 
42
- // 2.3
43
  'bp-plupload' => array( 'file' => "{$url}bp-plupload{$min}.js", 'dependencies' => array( 'plupload', 'jquery', 'json2', 'wp-backbone' ), 'footer' => true ),
44
  'bp-avatar' => array( 'file' => "{$url}avatar{$min}.js", 'dependencies' => array( 'jcrop' ), 'footer' => true ),
45
  'bp-webcam' => array( 'file' => "{$url}webcam{$min}.js", 'dependencies' => array( 'bp-avatar' ), 'footer' => true ),
46
 
47
- // 2.4
48
  'bp-cover-image' => array( 'file' => "{$url}cover-image{$min}.js", 'dependencies' => array(), 'footer' => true ),
49
 
50
- ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  $version = bp_get_version();
53
  foreach ( $scripts as $id => $script ) {
@@ -106,7 +150,7 @@ add_action( 'bp_enqueue_scripts', 'bp_core_register_common_styles', 1 );
106
  add_action( 'bp_admin_enqueue_scripts', 'bp_core_register_common_styles', 1 );
107
 
108
  /**
109
- * Load the JS for "Are you sure?" .confirm links.
110
  *
111
  * @since 1.1.0
112
  */
@@ -128,7 +172,7 @@ add_action( 'bp_admin_enqueue_scripts', 'bp_core_confirmation_js' );
128
  /**
129
  * Enqueues the css and js required by the Avatar UI.
130
  *
131
- * @since 2.3.0
132
  */
133
  function bp_core_avatar_scripts() {
134
  if ( ! bp_avatar_is_front_edit() ) {
@@ -148,7 +192,7 @@ add_action( 'bp_enqueue_scripts', 'bp_core_avatar_scripts' );
148
  /**
149
  * Enqueues the css and js required by the Cover Image UI.
150
  *
151
- * @since 2.4.0
152
  */
153
  function bp_core_cover_image_scripts() {
154
  if ( ! bp_attachments_cover_image_is_edit() ) {
@@ -361,11 +405,11 @@ function bp_core_get_js_dependencies() {
361
  }
362
 
363
  /**
364
- * Add inline css to display the component's single item cover image
365
  *
366
  * @since 2.4.0
367
  *
368
- * @param bool $return True to get the inline css.
369
  * @return string|array the inline css or an associative array containing
370
  * the css rules and the style handle
371
  */
@@ -460,3 +504,84 @@ function bp_add_cover_image_inline_css( $return = false ) {
460
  }
461
  }
462
  add_action( 'bp_enqueue_scripts', 'bp_add_cover_image_inline_css', 11 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  $min = bp_core_get_minified_asset_suffix();
20
  $url = buddypress()->plugin_url . 'bp-core/js/';
21
 
22
+ /*
23
+ * Moment.js locale.
24
  *
25
+ * Try to map current WordPress locale to a moment.js locale file for loading.
26
  *
27
+ * eg. French (France) locale for WP is fr_FR. Here, we try to find fr-fr.js
28
+ * (this file doesn't exist).
29
  */
30
+ $locale = sanitize_file_name( strtolower( get_locale() ) );
31
+ $locale = str_replace( '_', '-', $locale );
32
+ if ( file_exists( buddypress()->core->path . "bp-core/js/vendor/moment-js/locale/{$locale}{$min}.js" ) ) {
33
+ $moment_locale_url = $url . "vendor/moment-js/locale/{$locale}{$min}.js";
34
+
35
+ /*
36
+ * Try to find the short-form locale.
37
+ *
38
+ * eg. French (France) locale for WP is fr_FR. Here, we try to find fr.js
39
+ * (this exists).
40
+ */
41
+ } else {
42
+ $locale = substr( $locale, 0, strpos( $locale, '-' ) );
43
+ if ( file_exists( buddypress()->core->path . "bp-core/js/vendor/moment-js/locale/{$locale}{$min}.js" ) ) {
44
+ $moment_locale_url = $url . "vendor/moment-js/locale/{$locale}{$min}.js";
45
+ }
46
+ }
47
 
48
+ // Set up default scripts to register.
49
+ $scripts = array(
50
  // Legacy.
51
+ 'bp-confirm' => array( 'file' => "{$url}confirm{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
52
  'bp-widget-members' => array( 'file' => "{$url}widget-members{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
53
+ 'bp-jquery-query' => array( 'file' => "{$url}jquery-query{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
54
+ 'bp-jquery-cookie' => array( 'file' => "{$url}vendor/jquery-cookie{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
55
+ 'bp-jquery-scroll-to' => array( 'file' => "{$url}vendor/jquery-scroll-to{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
56
 
57
+ // Version 2.1.
58
+ 'jquery-caret' => array( 'file' => "{$url}vendor/jquery.caret{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => true ),
59
+ 'jquery-atwho' => array( 'file' => "{$url}vendor/jquery.atwho{$min}.js", 'dependencies' => array( 'jquery', 'jquery-caret' ), 'footer' => true ),
60
 
61
+ // Version 2.3.
62
  'bp-plupload' => array( 'file' => "{$url}bp-plupload{$min}.js", 'dependencies' => array( 'plupload', 'jquery', 'json2', 'wp-backbone' ), 'footer' => true ),
63
  'bp-avatar' => array( 'file' => "{$url}avatar{$min}.js", 'dependencies' => array( 'jcrop' ), 'footer' => true ),
64
  'bp-webcam' => array( 'file' => "{$url}webcam{$min}.js", 'dependencies' => array( 'bp-avatar' ), 'footer' => true ),
65
 
66
+ // Version 2.4.
67
  'bp-cover-image' => array( 'file' => "{$url}cover-image{$min}.js", 'dependencies' => array(), 'footer' => true ),
68
 
69
+ // Version 2.7.
70
+ 'bp-moment' => array( 'file' => "{$url}vendor/moment-js/moment{$min}.js", 'dependencies' => array(), 'footer' => true ),
71
+ 'bp-livestamp' => array( 'file' => "{$url}vendor/livestamp{$min}.js", 'dependencies' => array( 'jquery', 'bp-moment' ), 'footer' => true ),
72
+ );
73
+
74
+ // Version 2.7 - Add Moment.js locale to our $scripts array if we found one.
75
+ if ( isset( $moment_locale_url ) ) {
76
+ $scripts['bp-moment-locale'] = array( 'file' => esc_url( $moment_locale_url ), 'dependencies' => array( 'bp-moment' ), 'footer' => true );
77
+ }
78
+
79
+ /**
80
+ * Filters the BuddyPress Core javascript files to register.
81
+ *
82
+ * Default handles include 'bp-confirm', 'bp-widget-members',
83
+ * 'bp-jquery-query', 'bp-jquery-cookie', and 'bp-jquery-scroll-to'.
84
+ *
85
+ * @since 2.1.0 'jquery-caret', 'jquery-atwho' added.
86
+ * @since 2.3.0 'bp-plupload', 'bp-avatar', 'bp-webcam' added.
87
+ * @since 2.4.0 'bp-cover-image' added.
88
+ * @since 2.7.0 'bp-moment', 'bp-livestamp' added.
89
+ * 'bp-moment-locale' is added conditionally if a moment.js locale file is found.
90
+ *
91
+ * @param array $value Array of javascript file information to register.
92
+ */
93
+ $scripts = apply_filters( 'bp_core_register_common_scripts', $scripts );
94
+
95
 
96
  $version = bp_get_version();
97
  foreach ( $scripts as $id => $script ) {
150
  add_action( 'bp_admin_enqueue_scripts', 'bp_core_register_common_styles', 1 );
151
 
152
  /**
153
+ * Load the JS for "Are you sure?" confirm links.
154
  *
155
  * @since 1.1.0
156
  */
172
  /**
173
  * Enqueues the css and js required by the Avatar UI.
174
  *
175
+ * @since 2.3.0
176
  */
177
  function bp_core_avatar_scripts() {
178
  if ( ! bp_avatar_is_front_edit() ) {
192
  /**
193
  * Enqueues the css and js required by the Cover Image UI.
194
  *
195
+ * @since 2.4.0
196
  */
197
  function bp_core_cover_image_scripts() {
198
  if ( ! bp_attachments_cover_image_is_edit() ) {
405
  }
406
 
407
  /**
408
+ * Add inline css to display the component's single item cover image.
409
  *
410
  * @since 2.4.0
411
  *
412
+ * @param bool $return True to get the inline css.
413
  * @return string|array the inline css or an associative array containing
414
  * the css rules and the style handle
415
  */
504
  }
505
  }
506
  add_action( 'bp_enqueue_scripts', 'bp_add_cover_image_inline_css', 11 );
507
+
508
+ /**
509
+ * Enqueues livestamp.js on BuddyPress pages.
510
+ *
511
+ * @since 2.7.0
512
+ */
513
+ function bp_core_add_livestamp() {
514
+ if ( ! is_buddypress() ) {
515
+ return;
516
+ }
517
+
518
+ bp_core_enqueue_livestamp();
519
+ }
520
+ add_action( 'bp_enqueue_scripts', 'bp_core_add_livestamp' );
521
+
522
+ /**
523
+ * Enqueue and localize livestamp.js script.
524
+ *
525
+ * @since 2.7.0
526
+ */
527
+ function bp_core_enqueue_livestamp() {
528
+ // If bp-livestamp isn't enqueued, do it now.
529
+ if ( wp_script_is( 'bp-livestamp' ) ) {
530
+ return;
531
+ }
532
+
533
+ /*
534
+ * Only enqueue Moment.js locale if we registered it in
535
+ * bp_core_register_common_scripts().
536
+ */
537
+ if ( wp_script_is( 'bp-moment-locale', 'registered' ) ) {
538
+ wp_enqueue_script( 'bp-moment-locale' );
539
+
540
+ if ( function_exists( 'wp_add_inline_script' ) ) {
541
+ wp_add_inline_script ( 'bp-livestamp', bp_core_moment_js_config() );
542
+ } else {
543
+ add_action( 'wp_footer', '_bp_core_moment_js_config_footer', 20 );
544
+ }
545
+ }
546
+
547
+ wp_enqueue_script( 'bp-livestamp' );
548
+ }
549
+
550
+ /**
551
+ * Return moment.js config.
552
+ *
553
+ * @since 2.7.0
554
+ *
555
+ * @return string
556
+ */
557
+ function bp_core_moment_js_config() {
558
+ // Grab the locale from the enqueued JS.
559
+ $moment_locale = wp_scripts()->query( 'bp-moment-locale' );
560
+ $moment_locale = substr( $moment_locale->src, strpos( $moment_locale->src, '/moment-js/locale/' ) + 18 );
561
+ $moment_locale = str_replace( '.js', '', $moment_locale );
562
+
563
+ $inline_js = <<<EOD
564
+ jQuery(function() {
565
+ moment.locale( '{$moment_locale}' );
566
+ });
567
+ EOD;
568
+
569
+ return $inline_js;
570
+ }
571
+
572
+ /**
573
+ * Print moment.js config in page footer.
574
+ *
575
+ * Will be removed once we set our minimum version of WP 4.5.
576
+ *
577
+ * @since 2.7.0
578
+ *
579
+ * @access private
580
+ */
581
+ function _bp_core_moment_js_config_footer() {
582
+ if ( ! wp_script_is( 'bp-moment-locale' ) ) {
583
+ return;
584
+ }
585
+
586
+ printf( '<script>%s</script>', bp_core_moment_js_config() );
587
+ }
bp-core/bp-core-customizer-email.php CHANGED
@@ -2,10 +2,9 @@
2
  /**
3
  * BuddyPress Customizer implementation for email.
4
  *
5
- * @since 2.5.0
6
- *
7
  * @package BuddyPress
8
  * @subpackage Core
 
9
  */
10
 
11
  // Exit if accessed directly.
@@ -65,7 +64,6 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
65
  $wp_customize->add_control( new $args['class']( $wp_customize, $control_id, $args ) );
66
  }
67
 
68
-
69
  /*
70
  * Hook actions/filters for further configuration.
71
  */
@@ -90,7 +88,7 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
90
  true
91
  );
92
 
93
- // Include the preview loading style
94
  add_action( 'wp_footer', array( $wp_customize, 'customize_preview_loading_style' ) );
95
  }
96
  }
@@ -112,7 +110,7 @@ function bp_is_email_customizer() {
112
  *
113
  * @since 2.5.0
114
  *
115
- * @param $active Whether the Customizer section is active.
116
  * @param WP_Customize_Section $section {@see WP_Customize_Section} instance.
117
  * @return bool
118
  */
2
  /**
3
  * BuddyPress Customizer implementation for email.
4
  *
 
 
5
  * @package BuddyPress
6
  * @subpackage Core
7
+ * @since 2.5.0
8
  */
9
 
10
  // Exit if accessed directly.
64
  $wp_customize->add_control( new $args['class']( $wp_customize, $control_id, $args ) );
65
  }
66
 
 
67
  /*
68
  * Hook actions/filters for further configuration.
69
  */
88
  true
89
  );
90
 
91
+ // Include the preview loading style.
92
  add_action( 'wp_footer', array( $wp_customize, 'customize_preview_loading_style' ) );
93
  }
94
  }
110
  *
111
  * @since 2.5.0
112
  *
113
+ * @param bool $active Whether the Customizer section is active.
114
  * @param WP_Customize_Section $section {@see WP_Customize_Section} instance.
115
  * @return bool
116
  */
bp-core/bp-core-dependency.php CHANGED
@@ -207,28 +207,12 @@ function bp_setup_cache_groups() {
207
  /**
208
  * Set up the currently logged-in user.
209
  *
210
- * We white-list the WordPress Customizer which purposely loads the user early.
211
- * If the current user is being setup before the "init" action has fired,
212
- * strange (and difficult to debug) role/capability issues will occur.
213
- *
214
  * @since 1.7.0
215
  *
216
  * @link https://buddypress.trac.wordpress.org/ticket/6046
217
  * @link https://core.trac.wordpress.org/ticket/24169
218
- *
219
  */
220
  function bp_setup_current_user() {
221
- $skip_warning = (
222
- ( isset( $_REQUEST['wp_customize'] ) && 'on' === $_REQUEST['wp_customize'] ) ||
223
- ( is_admin() && 'customize.php' === basename( $_SERVER['PHP_SELF'] ) )
224
- );
225
-
226
- if ( ! $skip_warning && ! did_action( 'after_setup_theme' ) ) {
227
- $e = new Exception;
228
- $trace = $e->getTraceAsString();
229
-
230
- _doing_it_wrong( __FUNCTION__, __( 'The current user is being initialized without using $wp->init().', 'buddypress' ) . "\n===\nTrace:\n" . substr( $trace, strpos( $trace, '#6' ) ) . "\n===\n", '1.7' );
231
- }
232
 
233
  /**
234
  * Fires to set up the current user setup process.
@@ -406,7 +390,6 @@ function bp_head() {
406
  * who do not have the proper permission to access certain content.
407
  *
408
  * @since 1.6.0
409
- *
410
  */
411
  function bp_template_redirect() {
412
 
@@ -426,7 +409,6 @@ function bp_template_redirect() {
426
  * The main action used registering theme directories.
427
  *
428
  * @since 1.5.0
429
- *
430
  */
431
  function bp_register_theme_directory() {
432
 
@@ -446,7 +428,6 @@ function bp_register_theme_directory() {
446
  * The main action used registering theme packages.
447
  *
448
  * @since 1.7.0
449
- *
450
  */
451
  function bp_register_theme_packages() {
452
 
@@ -462,7 +443,6 @@ function bp_register_theme_packages() {
462
  * Fire the 'bp_enqueue_scripts' action, where BP enqueues its CSS and JS.
463
  *
464
  * @since 1.6.0
465
- *
466
  */
467
  function bp_enqueue_scripts() {
468
 
@@ -496,7 +476,6 @@ function bp_enqueue_embed_scripts() {
496
  * Fire the 'bp_add_rewrite_tag' action, where BP adds its custom rewrite tags.
497
  *
498
  * @since 1.8.0
499
- *
500
  */
501
  function bp_add_rewrite_tags() {
502
 
@@ -512,7 +491,6 @@ function bp_add_rewrite_tags() {
512
  * Fire the 'bp_add_rewrite_rules' action, where BP adds its custom rewrite rules.
513
  *
514
  * @since 1.9.0
515
- *
516
  */
517
  function bp_add_rewrite_rules() {
518
 
@@ -528,7 +506,6 @@ function bp_add_rewrite_rules() {
528
  * Fire the 'bp_add_permastructs' action, where BP adds its BP-specific permalink structure.
529
  *
530
  * @since 1.9.0
531
- *
532
  */
533
  function bp_add_permastructs() {
534
 
@@ -547,7 +524,6 @@ function bp_add_permastructs() {
547
  * BuddyPress-specific functionality.
548
  *
549
  * @since 1.6.0
550
- *
551
  */
552
  function bp_setup_theme() {
553
 
@@ -570,7 +546,6 @@ function bp_setup_theme() {
570
  * before our theme compatibility layer kicks in.
571
  *
572
  * @since 1.6.0
573
- *
574
  */
575
  function bp_after_setup_theme() {
576
 
@@ -699,7 +674,6 @@ function bp_allowed_themes( $themes ) {
699
  * The main action used for handling theme-side POST requests.
700
  *
701
  * @since 1.9.0
702
- *
703
  */
704
  function bp_post_request() {
705
 
@@ -742,7 +716,6 @@ function bp_post_request() {
742
  * The main action used for handling theme-side GET requests.
743
  *
744
  * @since 1.9.0
745
- *
746
  */
747
  function bp_get_request() {
748
 
207
  /**
208
  * Set up the currently logged-in user.
209
  *
 
 
 
 
210
  * @since 1.7.0
211
  *
212
  * @link https://buddypress.trac.wordpress.org/ticket/6046
213
  * @link https://core.trac.wordpress.org/ticket/24169
 
214
  */
215
  function bp_setup_current_user() {
 
 
 
 
 
 
 
 
 
 
 
216
 
217
  /**
218
  * Fires to set up the current user setup process.
390
  * who do not have the proper permission to access certain content.
391
  *
392
  * @since 1.6.0
 
393
  */
394
  function bp_template_redirect() {
395
 
409
  * The main action used registering theme directories.
410
  *
411
  * @since 1.5.0
 
412
  */
413
  function bp_register_theme_directory() {
414
 
428
  * The main action used registering theme packages.
429
  *
430
  * @since 1.7.0
 
431
  */
432
  function bp_register_theme_packages() {
433
 
443
  * Fire the 'bp_enqueue_scripts' action, where BP enqueues its CSS and JS.
444
  *
445
  * @since 1.6.0
 
446
  */
447
  function bp_enqueue_scripts() {
448
 
476
  * Fire the 'bp_add_rewrite_tag' action, where BP adds its custom rewrite tags.
477
  *
478
  * @since 1.8.0
 
479
  */
480
  function bp_add_rewrite_tags() {
481
 
491
  * Fire the 'bp_add_rewrite_rules' action, where BP adds its custom rewrite rules.
492
  *
493
  * @since 1.9.0
 
494
  */
495
  function bp_add_rewrite_rules() {
496
 
506
  * Fire the 'bp_add_permastructs' action, where BP adds its BP-specific permalink structure.
507
  *
508
  * @since 1.9.0
 
509
  */
510
  function bp_add_permastructs() {
511
 
524
  * BuddyPress-specific functionality.
525
  *
526
  * @since 1.6.0
 
527
  */
528
  function bp_setup_theme() {
529
 
546
  * before our theme compatibility layer kicks in.
547
  *
548
  * @since 1.6.0
 
549
  */
550
  function bp_after_setup_theme() {
551
 
674
  * The main action used for handling theme-side POST requests.
675
  *
676
  * @since 1.9.0
 
677
  */
678
  function bp_post_request() {
679
 
716
  * The main action used for handling theme-side GET requests.
717
  *
718
  * @since 1.9.0
 
719
  */
720
  function bp_get_request() {
721
 
bp-core/bp-core-filters.php CHANGED
@@ -75,6 +75,9 @@ add_filter( 'bp_get_template_stack', 'bp_add_template_stack_locations' );
75
  // Turn comments off for BuddyPress pages.
76
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
77
 
 
 
 
78
  /**
79
  * Prevent specific pages (eg 'Activate') from showing on page listings.
80
  *
@@ -175,7 +178,7 @@ function bp_core_menu_highlight_parent_page( $retval, $page ) {
175
  foreach ( (array) buddypress()->pages as $component => $bp_page ) {
176
  // Handles the majority of components.
177
  if ( bp_is_current_component( $component ) ) {
178
- $page_id = (int) $bp_page->id;
179
  }
180
 
181
  // Stop if not on a user page.
@@ -308,7 +311,7 @@ function bp_core_login_redirect( $redirect_to, $redirect_to_raw, $user ) {
308
  *
309
  * @since 1.6.0
310
  *
311
- * @param bool $value Whether or not to redirect.
312
  * @param string $redirect_to Sanitized URL to be redirected to.
313
  * @param string $redirect_to_raw Unsanitized URL to be redirected to.
314
  * @param WP_User $user The WP_User object corresponding to a
@@ -349,6 +352,7 @@ add_filter( 'bp_login_redirect', 'bp_core_login_redirect', 10, 3 );
349
  * @param string $retval Current email content.
350
  * @param string $prop Email property to check against.
351
  * @param string $transform Either 'raw' or 'replace-tokens'.
 
352
  */
353
  function bp_email_plaintext_entity_decode( $retval, $prop, $transform ) {
354
  switch ( $prop ) {
@@ -545,9 +549,9 @@ add_filter( 'wpmu_signup_user_notification', 'bp_core_activation_signup_user_not
545
  * @see wp_title()
546
  * @global object $bp BuddyPress global settings.
547
  *
548
- * @param string $title Original page title.
549
- * @param string $sep How to separate the various items within the page title.
550
- * @param string $seplocation Direction to display title.
551
  * @return string New page title.
552
  */
553
  function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'right' ) {
@@ -570,7 +574,7 @@ function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'ri
570
  * @link https://buddypress.trac.wordpress.org/ticket/6107
571
  * @see wp_title()
572
  */
573
- $title_tag_compatibility = (bool) ( ! empty( $_wp_theme_features['title-tag'] ) || strstr( $title, $blogname ) );
574
 
575
  // Append the site title to title parts if theme supports title tag.
576
  if ( true === $title_tag_compatibility ) {
@@ -595,12 +599,12 @@ function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'ri
595
  /**
596
  * Filters the older 'wp_title' page title for BuddyPress pages.
597
  *
598
- * @since 1.5.0
599
  *
600
- * @param string $new_title The BuddyPress page title.
601
- * @param string $title The original WordPress page title.
602
- * @param string $sep The title parts separator.
603
- * @param string $seplocation Location of the separator (left or right).
604
  */
605
  return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
606
  }
@@ -648,10 +652,10 @@ function bp_modify_document_title_parts( $title = array() ) {
648
  /**
649
  * Filters BuddyPress title parts that will be used into the document title.
650
  *
651
- * @since 2.4.3
652
  *
653
- * @param array $bp_title The BuddyPress page title parts.
654
- * @param array $title The original WordPress title parts.
655
  */
656
  return apply_filters( 'bp_modify_document_title_parts', $bp_title, $title );
657
  }
@@ -749,13 +753,13 @@ add_filter( 'wp_setup_nav_menu_item', 'bp_setup_nav_menu_item', 10, 1 );
749
  /**
750
  * Populate BuddyPress user nav items for the customizer.
751
  *
752
- * @since 2.3.3
753
  *
754
- * @param array $items The array of menu items.
755
- * @param string $type The requested type.
756
- * @param string $object The requested object name.
757
- * @param integer $page The page num being requested.
758
- * @return array The paginated BuddyPress user nav items.
759
  */
760
  function bp_customizer_nav_menus_get_items( $items = array(), $type = '', $object = '', $page = 0 ) {
761
  if ( 'bp_loggedin_nav' === $object ) {
@@ -786,9 +790,9 @@ add_filter( 'customize_nav_menu_available_items', 'bp_customizer_nav_menus_get_i
786
  /**
787
  * Set BuddyPress item navs for the customizer.
788
  *
789
- * @since 2.3.3
790
  *
791
- * @param array $item_types An associative array structured for the customizer.
792
  * @return array $item_types An associative array structured for the customizer.
793
  */
794
  function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
@@ -852,8 +856,8 @@ function bp_filter_metaid_column_name( $q ) {
852
  *
853
  * @since 2.1.0
854
  *
855
- * @param string $edit_link The edit link.
856
- * @param int $post_id Post ID.
857
  * @return bool|string Will be a boolean (false) if $post_id is 0. Will be a string (the unchanged edit link)
858
  * otherwise
859
  */
@@ -899,7 +903,8 @@ add_filter( 'bp_activity_maybe_load_mentions_scripts', 'bp_maybe_load_mentions_s
899
  * @access private
900
  *
901
  * @global array $wp_registered_widgets Current registered widgets.
902
- * @param array $params Current sidebar params.
 
903
  * @return array
904
  */
905
  function _bp_core_inject_bp_widget_css_class( $params ) {
@@ -951,9 +956,9 @@ add_filter( 'dynamic_sidebar_params', '_bp_core_inject_bp_widget_css_class' );
951
  *
952
  * @since 2.5.0
953
  *
954
- * @param string $value Property value.
955
- * @param string $property_name
956
- * @param string $transform How the return value was transformed.
957
  * @return string Updated value.
958
  */
959
  function bp_email_add_link_color_to_template( $value, $property_name, $transform ) {
@@ -990,10 +995,10 @@ add_filter( 'bp_email_get_property', 'bp_email_add_link_color_to_template', 6, 3
990
  *
991
  * @since 2.5.0
992
  *
993
- * @param array $headers
994
- * @param string $property Name of property. Unused.
995
- * @param string $transform Return value transformation. Unused.
996
- * @param BP_Email $email Email object reference.
997
  * @return array
998
  */
999
  function bp_email_set_default_headers( $headers, $property, $transform, $email ) {
@@ -1009,10 +1014,10 @@ add_filter( 'bp_email_get_headers', 'bp_email_set_default_headers', 6, 4 );
1009
  *
1010
  * @since 2.5.0
1011
  *
1012
- * @param array $tokens Email tokens.
1013
- * @param string $property_name Unused.
1014
- * @param string $transform Unused.
1015
- * @param BP_Email $email Email being sent.
1016
  * @return array
1017
  */
1018
  function bp_email_set_default_tokens( $tokens, $property_name, $transform, $email ) {
@@ -1028,7 +1033,6 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai
1028
  $tokens['recipient.email'] = '';
1029
  $tokens['recipient.name'] = '';
1030
  $tokens['recipient.username'] = '';
1031
- $tokens['unsubscribe'] = site_url( 'wp-login.php' );
1032
 
1033
 
1034
  // Who is the email going to?
@@ -1045,16 +1049,22 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai
1045
  }
1046
 
1047
  if ( $user_obj ) {
1048
- // Unsubscribe link.
1049
- $tokens['unsubscribe'] = esc_url( sprintf(
1050
- '%s%s/notifications/',
1051
- bp_core_get_user_domain( $user_obj->ID ),
1052
- function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'
1053
- ) );
1054
  $tokens['recipient.username'] = $user_obj->user_login;
 
 
 
 
 
 
 
1055
  }
1056
  }
1057
 
 
 
 
 
 
1058
  // Email preheader.
1059
  $post = $email->get_post_object();
1060
  if ( $post ) {
75
  // Turn comments off for BuddyPress pages.
76
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
77
 
78
+ // Prevent DB query for WP's main loop.
79
+ add_filter( 'posts_pre_query', 'bp_core_filter_wp_query', 10, 2 );
80
+
81
  /**
82
  * Prevent specific pages (eg 'Activate') from showing on page listings.
83
  *
178
  foreach ( (array) buddypress()->pages as $component => $bp_page ) {
179
  // Handles the majority of components.
180
  if ( bp_is_current_component( $component ) ) {
181
+ $page_id = (int) $bp_page->id;
182
  }
183
 
184
  // Stop if not on a user page.
311
  *
312
  * @since 1.6.0
313
  *
314
+ * @param bool $value Whether or not to redirect.
315
  * @param string $redirect_to Sanitized URL to be redirected to.
316
  * @param string $redirect_to_raw Unsanitized URL to be redirected to.
317
  * @param WP_User $user The WP_User object corresponding to a
352
  * @param string $retval Current email content.
353
  * @param string $prop Email property to check against.
354
  * @param string $transform Either 'raw' or 'replace-tokens'.
355
+ * @return string $retval Modified email content.
356
  */
357
  function bp_email_plaintext_entity_decode( $retval, $prop, $transform ) {
358
  switch ( $prop ) {
549
  * @see wp_title()
550
  * @global object $bp BuddyPress global settings.
551
  *
552
+ * @param string $title Original page title.
553
+ * @param string $sep How to separate the various items within the page title.
554
+ * @param string $seplocation Direction to display title.
555
  * @return string New page title.
556
  */
557
  function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'right' ) {
574
  * @link https://buddypress.trac.wordpress.org/ticket/6107
575
  * @see wp_title()
576
  */
577
+ $title_tag_compatibility = (bool) ( ! empty( $_wp_theme_features['title-tag'] ) || ( $blogname && strstr( $title, $blogname ) ) );
578
 
579
  // Append the site title to title parts if theme supports title tag.
580
  if ( true === $title_tag_compatibility ) {
599
  /**
600
  * Filters the older 'wp_title' page title for BuddyPress pages.
601
  *
602
+ * @since 1.5.0
603
  *
604
+ * @param string $new_title The BuddyPress page title.
605
+ * @param string $title The original WordPress page title.
606
+ * @param string $sep The title parts separator.
607
+ * @param string $seplocation Location of the separator (left or right).
608
  */
609
  return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
610
  }
652
  /**
653
  * Filters BuddyPress title parts that will be used into the document title.
654
  *
655
+ * @since 2.4.3
656
  *
657
+ * @param array $bp_title The BuddyPress page title parts.
658
+ * @param array $title The original WordPress title parts.
659
  */
660
  return apply_filters( 'bp_modify_document_title_parts', $bp_title, $title );
661
  }
753
  /**
754
  * Populate BuddyPress user nav items for the customizer.
755
  *
756
+ * @since 2.3.3
757
  *
758
+ * @param array $items The array of menu items.
759
+ * @param string $type The requested type.
760
+ * @param string $object The requested object name.
761
+ * @param integer $page The page num being requested.
762
+ * @return array The paginated BuddyPress user nav items.
763
  */
764
  function bp_customizer_nav_menus_get_items( $items = array(), $type = '', $object = '', $page = 0 ) {
765
  if ( 'bp_loggedin_nav' === $object ) {
790
  /**
791
  * Set BuddyPress item navs for the customizer.
792
  *
793
+ * @since 2.3.3
794
  *
795
+ * @param array $item_types An associative array structured for the customizer.
796
  * @return array $item_types An associative array structured for the customizer.
797
  */
798
  function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
856
  *
857
  * @since 2.1.0
858
  *
859
+ * @param string $edit_link The edit link.
860
+ * @param int $post_id Post ID.
861
  * @return bool|string Will be a boolean (false) if $post_id is 0. Will be a string (the unchanged edit link)
862
  * otherwise
863
  */
903
  * @access private
904
  *
905
  * @global array $wp_registered_widgets Current registered widgets.
906
+ *
907
+ * @param array $params Current sidebar params.
908
  * @return array
909
  */
910
  function _bp_core_inject_bp_widget_css_class( $params ) {
956
  *
957
  * @since 2.5.0
958
  *
959
+ * @param string $value Property value.
960
+ * @param string $property_name Email template property name.
961
+ * @param string $transform How the return value was transformed.
962
  * @return string Updated value.
963
  */
964
  function bp_email_add_link_color_to_template( $value, $property_name, $transform ) {
995
  *
996
  * @since 2.5.0
997
  *
998
+ * @param array $headers Array of email headers.
999
+ * @param string $property Name of property. Unused.
1000
+ * @param string $transform Return value transformation. Unused.
1001
+ * @param BP_Email $email Email object reference.
1002
  * @return array
1003
  */
1004
  function bp_email_set_default_headers( $headers, $property, $transform, $email ) {
1014
  *
1015
  * @since 2.5.0
1016
  *
1017
+ * @param array $tokens Email tokens.
1018
+ * @param string $property_name Unused.
1019
+ * @param string $transform Unused.
1020
+ * @param BP_Email $email Email being sent.
1021
  * @return array
1022
  */
1023
  function bp_email_set_default_tokens( $tokens, $property_name, $transform, $email ) {
1033
  $tokens['recipient.email'] = '';
1034
  $tokens['recipient.name'] = '';
1035
  $tokens['recipient.username'] = '';
 
1036
 
1037
 
1038
  // Who is the email going to?
1049
  }
1050
 
1051
  if ( $user_obj ) {
 
 
 
 
 
 
1052
  $tokens['recipient.username'] = $user_obj->user_login;
1053
+ if ( bp_is_active( 'settings' ) && empty( $tokens['unsubscribe'] ) ) {
1054
+ $tokens['unsubscribe'] = esc_url( sprintf(
1055
+ '%s%s/notifications/',
1056
+ bp_core_get_user_domain( $user_obj->ID ),
1057
+ bp_get_settings_slug()
1058
+ ) );
1059
+ }
1060
  }
1061
  }
1062
 
1063
+ // Set default unsubscribe link if not passed.
1064
+ if ( empty( $tokens['unsubscribe'] ) ) {
1065
+ $tokens['unsubscribe'] = site_url( 'wp-login.php' );
1066
+ }
1067
+
1068
  // Email preheader.
1069
  $post = $email->get_post_object();
1070
  if ( $post ) {
bp-core/bp-core-functions.php CHANGED
@@ -108,14 +108,23 @@ function bp_core_get_table_prefix() {
108
  * your own awkward callback function for usort().
109
  *
110
  * @since 2.2.0
 
 
 
 
 
 
 
 
111
  *
112
- * @param array $items The items to be sorted. Its constituent items can be either associative arrays or objects.
113
- * @param string|int $key The array index or property name to sort by.
114
- * @param string $type Sort type. 'alpha' for alphabetical, 'num' for numeric. Default: 'alpha'.
115
  * @return array $items The sorted array.
116
  */
117
- function bp_sort_by_key( $items, $key, $type = 'alpha' ) {
118
- usort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) );
 
 
 
 
119
 
120
  return $items;
121
  }
@@ -630,14 +639,7 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
630
  $pages = array();
631
  }
632
 
633
- $page_titles = array(
634
- 'activity' => _x( 'Activity', 'Page title for the Activity directory.', 'buddypress' ),
635
- 'groups' => _x( 'Groups', 'Page title for the Groups directory.', 'buddypress' ),
636
- 'sites' => _x( 'Sites', 'Page title for the Sites directory.', 'buddypress' ),
637
- 'members' => _x( 'Members', 'Page title for the Members directory.', 'buddypress' ),
638
- 'activate' => _x( 'Activate', 'Page title for the user activation screen.', 'buddypress' ),
639
- 'register' => _x( 'Register', 'Page title for the user registration screen.', 'buddypress' ),
640
- );
641
 
642
  $pages_to_create = array();
643
  foreach ( array_keys( $components ) as $component_name ) {
@@ -657,8 +659,8 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
657
  }
658
 
659
  // No need for a Sites directory unless we're on multisite.
660
- if ( ! is_multisite() && isset( $pages_to_create['sites'] ) ) {
661
- unset( $pages_to_create['sites'] );
662
  }
663
 
664
  // Members must always have a page, no matter what.
@@ -693,6 +695,33 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
693
  }
694
  }
695
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
696
  /**
697
  * Remove the entry from bp_pages when the corresponding WP page is deleted.
698
  *
@@ -850,11 +879,17 @@ function bp_core_add_illegal_names() {
850
  * Get the 'search' query argument for a given component.
851
  *
852
  * @since 2.4.0
 
 
853
  *
854
- * @param string $component Component name.
855
  * @return string|bool Query argument on success. False on failure.
856
  */
857
- function bp_core_get_component_search_query_arg( $component ) {
 
 
 
 
858
  $query_arg = false;
859
  if ( isset( buddypress()->{$component}->search_query_arg ) ) {
860
  $query_arg = sanitize_title( buddypress()->{$component}->search_query_arg );
@@ -1258,6 +1293,41 @@ function bp_core_time_since( $older_date, $newer_date = false ) {
1258
  return apply_filters( 'bp_core_time_since', $output, $older_date, $newer_date );
1259
  }
1260
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1261
  /** Messages ******************************************************************/
1262
 
1263
  /**
@@ -1414,7 +1484,7 @@ function bp_core_record_activity() {
1414
  }
1415
 
1416
  // Get current time.
1417
- $current_time = bp_core_current_time();
1418
 
1419
  // Use this action to detect the very first activity for a given member.
1420
  if ( empty( $activity ) ) {
@@ -1432,8 +1502,8 @@ function bp_core_record_activity() {
1432
  }
1433
 
1434
  // If it's been more than 5 minutes, record a newer last-activity time.
1435
- if ( empty( $activity ) || ( strtotime( $current_time ) >= strtotime( '+5 minutes', $activity ) ) ) {
1436
- bp_update_user_last_activity( $user_id, $current_time );
1437
  }
1438
  }
1439
  add_action( 'wp_head', 'bp_core_record_activity' );
@@ -1673,8 +1743,8 @@ function bp_use_embed_in_private_messages() {
1673
  *
1674
  * @since 2.6.0
1675
  *
1676
- * @param string $content The content to check.
1677
- * @param string|int $type The type to check. Can also use a bitmask. See the class constants in the
1678
  * BP_Media_Extractor class for more info.
1679
  * @return array|bool If media exists, will return array of media metadata. Else, boolean false.
1680
  */
@@ -2691,7 +2761,7 @@ function bp_core_get_suggestions( $args ) {
2691
  *
2692
  * @since 2.3.0
2693
  *
2694
- * @return string
2695
  */
2696
  function bp_upload_dir() {
2697
  $bp = buddypress();
@@ -3189,8 +3259,8 @@ function bp_email_get_template( WP_Post $object ) {
3189
  *
3190
  * @since 2.5.0
3191
  *
3192
- * @param string $text
3193
- * @param array $tokens Token names and replacement values for the $text.
3194
  * @return string
3195
  */
3196
  function bp_core_replace_tokens_in_text( $text, $tokens ) {
@@ -3227,7 +3297,7 @@ function bp_core_replace_tokens_in_text( $text, $tokens ) {
3227
 
3228
  /**
3229
  * Get a list of emails for populating the email post type.
3230
- *t
3231
  * @since 2.5.1
3232
  *
3233
  * @return array
@@ -3304,7 +3374,7 @@ function bp_email_get_schema() {
3304
  /* translators: do not remove {} brackets or translate its contents. */
3305
  'post_content' => __( "Group details for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; were updated:\n<blockquote>{{changed_text}}</blockquote>", 'buddypress' ),
3306
  /* translators: do not remove {} brackets or translate its contents. */
3307
- 'post_excerpt' => __( "Group details for the group &quot;{{group.name}}&quot; were updated:\n\n{{changed_text}}\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3308
  ),
3309
  'groups-invitation' => array(
3310
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3312,7 +3382,7 @@ function bp_email_get_schema() {
3312
  /* translators: do not remove {} brackets or translate its contents. */
3313
  'post_content' => __( "<a href=\"{{{inviter.url}}}\">{{inviter.name}}</a> has invited you to join the group: &quot;{{group.name}}&quot;.\n<a href=\"{{{invites.url}}}\">Go here to accept your invitation</a> or <a href=\"{{{group.url}}}\">visit the group</a> to learn more.", 'buddypress' ),
3314
  /* translators: do not remove {} brackets or translate its contents. */
3315
- 'post_excerpt' => __( "{{inviter.name}} has invited you to join the group: &quot;{{group.name}}&quot;.\n\nTo accept your invitation, visit: {{{invites.url}}}\n\nTo learn more about the group, visit {{{group.url}}}.\nTo view {{inviter.name}}'s profile, visit: {{{inviter.url}}}", 'buddypress' ),
3316
  ),
3317
  'groups-member-promoted' => array(
3318
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3320,7 +3390,7 @@ function bp_email_get_schema() {
3320
  /* translators: do not remove {} brackets or translate its contents. */
3321
  'post_content' => __( "You have been promoted to <b>{{promoted_to}}</b> in the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot;.", 'buddypress' ),
3322
  /* translators: do not remove {} brackets or translate its contents. */
3323
- 'post_excerpt' => __( "You have been promoted to {{promoted_to}} in the group: &quot;{{group.name}}&quot;.\n\nTo visit the group, go to: {{{group.url}}}", 'buddypress' ),
3324
  ),
3325
  'groups-membership-request' => array(
3326
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3328,7 +3398,7 @@ function bp_email_get_schema() {
3328
  /* translators: do not remove {} brackets or translate its contents. */
3329
  'post_content' => __( "<a href=\"{{{profile.url}}}\">{{requesting-user.name}}</a> wants to join the group &quot;{{group.name}}&quot;. As you are an administrator of this group, you must either accept or reject the membership request.\n\n<a href=\"{{{group-requests.url}}}\">Go here to manage this</a> and all other pending requests.", 'buddypress' ),
3330
  /* translators: do not remove {} brackets or translate its contents. */
3331
- 'post_excerpt' => __( "{{requesting-user.name}} wants to join the group &quot;{{group.name}}&quot;. As you are the administrator of this group, you must either accept or reject the membership request.\n\nTo manage this and all other pending requests, visit: {{{group-requests.url}}}\n\nTo view {{requesting-user.name}}'s profile, visit: {{{profile.url}}}", 'buddypress' ),
3332
  ),
3333
  'messages-unread' => array(
3334
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3336,7 +3406,7 @@ function bp_email_get_schema() {
3336
  /* translators: do not remove {} brackets or translate its contents. */
3337
  'post_content' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n<blockquote>&quot;{{usermessage}}&quot;</blockquote>\n\n<a href=\"{{{message.url}}}\">Go to the discussion</a> to reply or catch up on the conversation.", 'buddypress' ),
3338
  /* translators: do not remove {} brackets or translate its contents. */
3339
- 'post_excerpt' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n&quot;{{usermessage}}&quot;\n\nGo to the discussion to reply or catch up on the conversation: {{{message.url}}}", 'buddypress' ),
3340
  ),
3341
  'settings-verify-email-change' => array(
3342
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3352,7 +3422,7 @@ function bp_email_get_schema() {
3352
  /* translators: do not remove {} brackets or translate its contents. */
3353
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been accepted.", 'buddypress' ),
3354
  /* translators: do not remove {} brackets or translate its contents. */
3355
- 'post_excerpt' => __( "Your membership request for the group &quot;{{group.name}}&quot; has been accepted.\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3356
  ),
3357
  'groups-membership-request-rejected' => array(
3358
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3360,7 +3430,7 @@ function bp_email_get_schema() {
3360
  /* translators: do not remove {} brackets or translate its contents. */
3361
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been rejected.", 'buddypress' ),
3362
  /* translators: do not remove {} brackets or translate its contents. */
3363
- 'post_excerpt' => __( "Your membership request for the group &quot;{{group.name}}&quot; has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ),
3364
  ),
3365
  );
3366
  }
@@ -3369,26 +3439,309 @@ function bp_email_get_schema() {
3369
  * Get a list of emails for populating email type taxonomy terms.
3370
  *
3371
  * @since 2.5.1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3372
  *
3373
- * @return array
3374
  */
3375
- function bp_email_get_type_schema() {
3376
- return array(
3377
- 'activity-comment' => __( 'A member has replied to an activity update that the recipient posted.', 'buddypress' ),
3378
- 'activity-comment-author' => __( 'A member has replied to a comment on an activity update that the recipient posted.', 'buddypress' ),
3379
- 'activity-at-message' => __( 'Recipient was mentioned in an activity update.', 'buddypress' ),
3380
- 'groups-at-message' => __( 'Recipient was mentioned in a group activity update.', 'buddypress' ),
3381
- 'core-user-registration' => __( 'Recipient has registered for an account.', 'buddypress' ),
3382
- 'core-user-registration-with-blog' => __( 'Recipient has registered for an account and site.', 'buddypress' ),
3383
- 'friends-request' => __( 'A member has sent a friend request to the recipient.', 'buddypress' ),
3384
- 'friends-request-accepted' => __( 'Recipient has had a friend request accepted by a member.', 'buddypress' ),
3385
- 'groups-details-updated' => __( "A group's details were updated.", 'buddypress' ),
3386
- 'groups-invitation' => __( 'A member has sent a group invitation to the recipient.', 'buddypress' ),
3387
- 'groups-member-promoted' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3388
- 'groups-membership-request' => __( 'A member has requested permission to join a group.', 'buddypress' ),
3389
- 'messages-unread' => __( 'Recipient has received a private message.', 'buddypress' ),
3390
- 'settings-verify-email-change' => __( 'Recipient has changed their email address.', 'buddypress' ),
3391
- 'groups-membership-request-accepted' => __( 'Recipient had requested to join a group, which was accepted.', 'buddypress' ),
3392
- 'groups-membership-request-rejected' => __( 'Recipient had requested to join a group, which was rejected.', 'buddypress' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3393
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3394
  }
108
  * your own awkward callback function for usort().
109
  *
110
  * @since 2.2.0
111
+ * @since 2.7.0 Added $preserve_keys parameter.
112
+ *
113
+ * @param array $items The items to be sorted. Its constituent items
114
+ * can be either associative arrays or objects.
115
+ * @param string|int $key The array index or property name to sort by.
116
+ * @param string $type Sort type. 'alpha' for alphabetical, 'num'
117
+ * for numeric. Default: 'alpha'.
118
+ * @param bool $preserve_keys Whether to keep the keys or not.
119
  *
 
 
 
120
  * @return array $items The sorted array.
121
  */
122
+ function bp_sort_by_key( $items, $key, $type = 'alpha', $preserve_keys = false ) {
123
+ if ( true === $preserve_keys ) {
124
+ uasort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) );
125
+ } else {
126
+ usort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) );
127
+ }
128
 
129
  return $items;
130
  }
639
  $pages = array();
640
  }
641
 
642
+ $page_titles = bp_core_get_directory_page_default_titles();
 
 
 
 
 
 
 
643
 
644
  $pages_to_create = array();
645
  foreach ( array_keys( $components ) as $component_name ) {
659
  }
660
 
661
  // No need for a Sites directory unless we're on multisite.
662
+ if ( ! is_multisite() && isset( $pages_to_create['blogs'] ) ) {
663
+ unset( $pages_to_create['blogs'] );
664
  }
665
 
666
  // Members must always have a page, no matter what.
695
  }
696
  }
697
 
698
+ /**
699
+ * Get the default page titles for BP directory pages.
700
+ *
701
+ * @since 2.7.0
702
+ *
703
+ * @return array
704
+ */
705
+ function bp_core_get_directory_page_default_titles() {
706
+ $page_default_titles = array(
707
+ 'activity' => _x( 'Activity', 'Page title for the Activity directory.', 'buddypress' ),
708
+ 'groups' => _x( 'Groups', 'Page title for the Groups directory.', 'buddypress' ),
709
+ 'blogs' => _x( 'Sites', 'Page title for the Sites directory.', 'buddypress' ),
710
+ 'members' => _x( 'Members', 'Page title for the Members directory.', 'buddypress' ),
711
+ 'activate' => _x( 'Activate', 'Page title for the user activation screen.', 'buddypress' ),
712
+ 'register' => _x( 'Register', 'Page title for the user registration screen.', 'buddypress' ),
713
+ );
714
+
715
+ /**
716
+ * Filters the default page titles array
717
+ *
718
+ * @since 2.7.0
719
+ *
720
+ * @param array $page_default_titles the array of default WP (post_title) titles.
721
+ */
722
+ return apply_filters( 'bp_core_get_directory_page_default_titles', $page_default_titles );
723
+ }
724
+
725
  /**
726
  * Remove the entry from bp_pages when the corresponding WP page is deleted.
727
  *
879
  * Get the 'search' query argument for a given component.
880
  *
881
  * @since 2.4.0
882
+ * @since 2.7.0 The `$component` parameter was made optional, with the current component
883
+ * as the fallback value.
884
  *
885
+ * @param string $component Optional. Component name. Defaults to current component.
886
  * @return string|bool Query argument on success. False on failure.
887
  */
888
+ function bp_core_get_component_search_query_arg( $component = null ) {
889
+ if ( ! $component ) {
890
+ $component = bp_current_component();
891
+ }
892
+
893
  $query_arg = false;
894
  if ( isset( buddypress()->{$component}->search_query_arg ) ) {
895
  $query_arg = sanitize_title( buddypress()->{$component}->search_query_arg );
1293
  return apply_filters( 'bp_core_time_since', $output, $older_date, $newer_date );
1294
  }
1295
 
1296
+ /**
1297
+ * Output an ISO-8601 date from a date string.
1298
+ *
1299
+ * @since 2.7.0
1300
+ *
1301
+ * @param string String of date to convert. Timezone should be UTC before using this.
1302
+ * @return string
1303
+ */
1304
+ function bp_core_iso8601_date( $timestamp = '' ) {
1305
+ echo bp_core_get_iso8601_date( $timestamp );
1306
+ }
1307
+ /**
1308
+ * Return an ISO-8601 date from a date string.
1309
+ *
1310
+ * @since 2.7.0
1311
+ *
1312
+ * @param string String of date to convert. Timezone should be UTC before using this.
1313
+ * @return string
1314
+ */
1315
+ function bp_core_get_iso8601_date( $timestamp = '' ) {
1316
+ if ( ! $timestamp ) {
1317
+ return '';
1318
+ }
1319
+
1320
+ try {
1321
+ $date = new DateTime( $timestamp, new DateTimeZone( 'UTC' ) );
1322
+
1323
+ // Not a valid date, so return blank string.
1324
+ } catch( Exception $e ) {
1325
+ return '';
1326
+ }
1327
+
1328
+ return $date->format( DateTime::ISO8601 );
1329
+ }
1330
+
1331
  /** Messages ******************************************************************/
1332
 
1333
  /**
1484
  }
1485
 
1486
  // Get current time.
1487
+ $current_time = bp_core_current_time( true, 'timestamp' );
1488
 
1489
  // Use this action to detect the very first activity for a given member.
1490
  if ( empty( $activity ) ) {
1502
  }
1503
 
1504
  // If it's been more than 5 minutes, record a newer last-activity time.
1505
+ if ( empty( $activity ) || ( $current_time >= strtotime( '+5 minutes', $activity ) ) ) {
1506
+ bp_update_user_last_activity( $user_id, date( 'Y-m-d H:i:s', $current_time ) );
1507
  }
1508
  }
1509
  add_action( 'wp_head', 'bp_core_record_activity' );
1743
  *
1744
  * @since 2.6.0
1745
  *
1746
+ * @param string $content The content to check.
1747
+ * @param string|int $type The type to check. Can also use a bitmask. See the class constants in the
1748
  * BP_Media_Extractor class for more info.
1749
  * @return array|bool If media exists, will return array of media metadata. Else, boolean false.
1750
  */
2761
  *
2762
  * @since 2.3.0
2763
  *
2764
+ * @return bool|array
2765
  */
2766
  function bp_upload_dir() {
2767
  $bp = buddypress();
3259
  *
3260
  * @since 2.5.0
3261
  *
3262
+ * @param string $text Text to replace tokens in.
3263
+ * @param array $tokens Token names and replacement values for the $text.
3264
  * @return string
3265
  */
3266
  function bp_core_replace_tokens_in_text( $text, $tokens ) {
3297
 
3298
  /**
3299
  * Get a list of emails for populating the email post type.
3300
+ *
3301
  * @since 2.5.1
3302
  *
3303
  * @return array
3374
  /* translators: do not remove {} brackets or translate its contents. */
3375
  'post_content' => __( "Group details for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; were updated:\n<blockquote>{{changed_text}}</blockquote>", 'buddypress' ),
3376
  /* translators: do not remove {} brackets or translate its contents. */
3377
+ 'post_excerpt' => __( "Group details for the group \"{{group.name}}\" were updated:\n\n{{changed_text}}\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3378
  ),
3379
  'groups-invitation' => array(
3380
  /* translators: do not remove {} brackets or translate its contents. */
3382
  /* translators: do not remove {} brackets or translate its contents. */
3383
  'post_content' => __( "<a href=\"{{{inviter.url}}}\">{{inviter.name}}</a> has invited you to join the group: &quot;{{group.name}}&quot;.\n<a href=\"{{{invites.url}}}\">Go here to accept your invitation</a> or <a href=\"{{{group.url}}}\">visit the group</a> to learn more.", 'buddypress' ),
3384
  /* translators: do not remove {} brackets or translate its contents. */
3385
+ 'post_excerpt' => __( "{{inviter.name}} has invited you to join the group: \"{{group.name}}\".\n\nTo accept your invitation, visit: {{{invites.url}}}\n\nTo learn more about the group, visit {{{group.url}}}.\nTo view {{inviter.name}}'s profile, visit: {{{inviter.url}}}", 'buddypress' ),
3386
  ),
3387
  'groups-member-promoted' => array(
3388
  /* translators: do not remove {} brackets or translate its contents. */
3390
  /* translators: do not remove {} brackets or translate its contents. */
3391
  'post_content' => __( "You have been promoted to <b>{{promoted_to}}</b> in the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot;.", 'buddypress' ),
3392
  /* translators: do not remove {} brackets or translate its contents. */
3393
+ 'post_excerpt' => __( "You have been promoted to {{promoted_to}} in the group: \"{{group.name}}\".\n\nTo visit the group, go to: {{{group.url}}}", 'buddypress' ),
3394
  ),
3395
  'groups-membership-request' => array(
3396
  /* translators: do not remove {} brackets or translate its contents. */
3398
  /* translators: do not remove {} brackets or translate its contents. */
3399
  'post_content' => __( "<a href=\"{{{profile.url}}}\">{{requesting-user.name}}</a> wants to join the group &quot;{{group.name}}&quot;. As you are an administrator of this group, you must either accept or reject the membership request.\n\n<a href=\"{{{group-requests.url}}}\">Go here to manage this</a> and all other pending requests.", 'buddypress' ),
3400
  /* translators: do not remove {} brackets or translate its contents. */
3401
+ 'post_excerpt' => __( "{{requesting-user.name}} wants to join the group \"{{group.name}}\". As you are the administrator of this group, you must either accept or reject the membership request.\n\nTo manage this and all other pending requests, visit: {{{group-requests.url}}}\n\nTo view {{requesting-user.name}}'s profile, visit: {{{profile.url}}}", 'buddypress' ),
3402
  ),
3403
  'messages-unread' => array(
3404
  /* translators: do not remove {} brackets or translate its contents. */
3406
  /* translators: do not remove {} brackets or translate its contents. */
3407
  'post_content' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n<blockquote>&quot;{{usermessage}}&quot;</blockquote>\n\n<a href=\"{{{message.url}}}\">Go to the discussion</a> to reply or catch up on the conversation.", 'buddypress' ),
3408
  /* translators: do not remove {} brackets or translate its contents. */
3409
+ 'post_excerpt' => __( "{{sender.name}} sent you a new message: \"{{usersubject}}\"\n\n\"{{usermessage}}\"\n\nGo to the discussion to reply or catch up on the conversation: {{{message.url}}}", 'buddypress' ),
3410
  ),
3411
  'settings-verify-email-change' => array(
3412
  /* translators: do not remove {} brackets or translate its contents. */
3422
  /* translators: do not remove {} brackets or translate its contents. */
3423
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been accepted.", 'buddypress' ),
3424
  /* translators: do not remove {} brackets or translate its contents. */
3425
+ 'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been accepted.\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3426
  ),
3427
  'groups-membership-request-rejected' => array(
3428
  /* translators: do not remove {} brackets or translate its contents. */
3430
  /* translators: do not remove {} brackets or translate its contents. */
3431
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been rejected.", 'buddypress' ),
3432
  /* translators: do not remove {} brackets or translate its contents. */
3433
+ 'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ),
3434
  ),
3435
  );
3436
  }
3439
  * Get a list of emails for populating email type taxonomy terms.
3440
  *
3441
  * @since 2.5.1
3442
+ * @since 2.7.0 $field argument added.
3443
+ *
3444
+ * @param string $field Optional; defaults to "description" for backwards compatibility. Other values: "all".
3445
+ * @return array {
3446
+ * The array of email types and their schema.
3447
+ *
3448
+ * @type string $description The description of the action which causes this to trigger.
3449
+ * @type array $unsubscribe {
3450
+ * Replacing this with false indicates that a user cannot unsubscribe from this type.
3451
+ *
3452
+ * @type string $meta_key The meta_key used to toggle the email setting for this notification.
3453
+ * @type string $message The message shown when the user has successfully unsubscribed.
3454
+ * }
3455
+ */
3456
+ function bp_email_get_type_schema( $field = 'description' ) {
3457
+ $activity_comment = array(
3458
+ 'description' => __( 'A member has replied to an activity update that the recipient posted.', 'buddypress' ),
3459
+ 'unsubscribe' => array(
3460
+ 'meta_key' => 'notification_activity_new_reply',
3461
+ 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ),
3462
+ ),
3463
+ );
3464
+
3465
+ $activity_comment_author = array(
3466
+ 'description' => __( 'A member has replied to a comment on an activity update that the recipient posted.', 'buddypress' ),
3467
+ 'unsubscribe' => array(
3468
+ 'meta_key' => 'notification_activity_new_reply',
3469
+ 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ),
3470
+ ),
3471
+ );
3472
+
3473
+ $activity_at_message = array(
3474
+ 'description' => __( 'Recipient was mentioned in an activity update.', 'buddypress' ),
3475
+ 'unsubscribe' => array(
3476
+ 'meta_key' => 'notification_activity_new_mention',
3477
+ 'message' => __( 'You will no longer receive emails when someone mentions you in an update.', 'buddypress' ),
3478
+ ),
3479
+ );
3480
+
3481
+ $groups_at_message = array(
3482
+ 'description' => __( 'Recipient was mentioned in a group activity update.', 'buddypress' ),
3483
+ 'unsubscribe' => array(
3484
+ 'meta_key' => 'notification_activity_new_mention',
3485
+ 'message' => __( 'You will no longer receive emails when someone mentions you in an update.', 'buddypress' ),
3486
+ ),
3487
+ );
3488
+
3489
+ $core_user_registration = array(
3490
+ 'description' => __( 'Recipient has registered for an account.', 'buddypress' ),
3491
+ 'unsubscribe' => false,
3492
+ );
3493
+
3494
+ $core_user_registration_with_blog = array(
3495
+ 'description' => __( 'Recipient has registered for an account and site.', 'buddypress' ),
3496
+ 'unsubscribe' => false,
3497
+ );
3498
+
3499
+ $friends_request = array(
3500
+ 'description' => __( 'A member has sent a friend request to the recipient.', 'buddypress' ),
3501
+ 'unsubscribe' => array(
3502
+ 'meta_key' => 'notification_friends_friendship_request',
3503
+ 'message' => __( 'You will no longer receive emails when someone sends you a friend request.', 'buddypress' ),
3504
+ ),
3505
+ );
3506
+
3507
+ $friends_request_accepted = array(
3508
+ 'description' => __( 'Recipient has had a friend request accepted by a member.', 'buddypress' ),
3509
+ 'unsubscribe' => array(
3510
+ 'meta_key' => 'notification_friends_friendship_accepted',
3511
+ 'message' => __( 'You will no longer receive emails when someone accepts your friendship request.', 'buddypress' ),
3512
+ ),
3513
+ );
3514
+
3515
+ $groups_details_updated = array(
3516
+ 'description' => __( "A group's details were updated.", 'buddypress' ),
3517
+ 'unsubscribe' => array(
3518
+ 'meta_key' => 'notification_groups_group_updated',
3519
+ 'message' => __( 'You will no longer receive emails when one of your groups is updated.', 'buddypress' ),
3520
+ ),
3521
+ );
3522
+
3523
+ $groups_details_updated = array(
3524
+ 'description' => __( "A group's details were updated.", 'buddypress' ),
3525
+ 'unsubscribe' => array(
3526
+ 'meta_key' => 'notification_groups_group_updated',
3527
+ 'message' => __( 'You will no longer receive emails when one of your groups is updated.', 'buddypress' ),
3528
+ ),
3529
+ );
3530
+
3531
+ $groups_invitation = array(
3532
+ 'description' => __( 'A member has sent a group invitation to the recipient.', 'buddypress' ),
3533
+ 'unsubscribe' => array(
3534
+ 'meta_key' => 'notification_groups_invite',
3535
+ 'message' => __( 'You will no longer receive emails when you are invited to join a group.', 'buddypress' ),
3536
+ ),
3537
+ );
3538
+
3539
+ $groups_member_promoted = array(
3540
+ 'description' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3541
+ 'unsubscribe' => array(
3542
+ 'meta_key' => 'notification_groups_admin_promotion',
3543
+ 'message' => __( 'You will no longer receive emails when you have been promoted in a group.', 'buddypress' ),
3544
+ ),
3545
+ );
3546
+
3547
+ $groups_member_promoted = array(
3548
+ 'description' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3549
+ 'unsubscribe' => array(
3550
+ 'meta_key' => 'notification_groups_admin_promotion',
3551
+ 'message' => __( 'You will no longer receive emails when you have been promoted in a group.', 'buddypress' ),
3552
+ ),
3553
+ );
3554
+
3555
+ $groups_membership_request = array(
3556
+ 'description' => __( 'A member has requested permission to join a group.', 'buddypress' ),
3557
+ 'unsubscribe' => array(
3558
+ 'meta_key' => 'notification_groups_membership_request',
3559
+ 'message' => __( 'You will no longer receive emails when someone requests to be a member of your group.', 'buddypress' ),
3560
+ ),
3561
+ );
3562
+
3563
+ $messages_unread = array(
3564
+ 'description' => __( 'Recipient has received a private message.', 'buddypress' ),
3565
+ 'unsubscribe' => array(
3566
+ 'meta_key' => 'notification_messages_new_message',
3567
+ 'message' => __( 'You will no longer receive emails when someone sends you a message.', 'buddypress' ),
3568
+ ),
3569
+ );
3570
+
3571
+ $settings_verify_email_change = array(
3572
+ 'description' => __( 'Recipient has changed their email address.', 'buddypress' ),
3573
+ 'unsubscribe' => false,
3574
+ );
3575
+
3576
+ $groups_membership_request_accepted = array(
3577
+ 'description' => __( 'Recipient had requested to join a group, which was accepted.', 'buddypress' ),
3578
+ 'unsubscribe' => array(
3579
+ 'meta_key' => 'notification_membership_request_completed',
3580
+ 'message' => __( 'You will no longer receive emails when your request to join a group has been accepted or denied.', 'buddypress' ),
3581
+ ),
3582
+ );
3583
+
3584
+ $groups_membership_request_rejected = array(
3585
+ 'description' => __( 'Recipient had requested to join a group, which was rejected.', 'buddypress' ),
3586
+ 'unsubscribe' => array(
3587
+ 'meta_key' => 'notification_membership_request_completed',
3588
+ 'message' => __( 'You will no longer receive emails when your request to join a group has been accepted or denied.', 'buddypress' ),
3589
+ ),
3590
+ );
3591
+
3592
+ $types = array(
3593
+ 'activity-comment' => $activity_comment,
3594
+ 'activity-comment-author' => $activity_comment_author,
3595
+ 'activity-at-message' => $activity_at_message,
3596
+ 'groups-at-message' => $groups_at_message,
3597
+ 'core-user-registration' => $core_user_registration,
3598
+ 'core-user-registration-with-blog' => $core_user_registration_with_blog,
3599
+ 'friends-request' => $friends_request,
3600
+ 'friends-request-accepted' => $friends_request_accepted,
3601
+ 'groups-details-updated' => $groups_details_updated,
3602
+ 'groups-invitation' => $groups_invitation,
3603
+ 'groups-member-promoted' => $groups_member_promoted,
3604
+ 'groups-membership-request' => $groups_membership_request,
3605
+ 'messages-unread' => $messages_unread,
3606
+ 'settings-verify-email-change' => $settings_verify_email_change,
3607
+ 'groups-membership-request-accepted' => $groups_membership_request_accepted,
3608
+ 'groups-membership-request-rejected' => $groups_membership_request_rejected,
3609
+ );
3610
+
3611
+ if ( $field !== 'all' ) {
3612
+ return wp_list_pluck( $types, $field );
3613
+ } else {
3614
+ return $types;
3615
+ }
3616
+ }
3617
+
3618
+ /**
3619
+ * Handles unsubscribing user from notification emails.
3620
  *
3621
+ * @since 2.7.0
3622
  */
3623
+ function bp_email_unsubscribe_handler() {
3624
+ $emails = bp_email_get_type_schema( 'all' );
3625
+ $raw_email_type = ! empty( $_GET['nt'] ) ? $_GET['nt'] : '';
3626
+ $raw_hash = ! empty( $_GET['nh'] ) ? $_GET['nh'] : '';
3627
+ $raw_user_id = ! empty( $_GET['uid'] ) ? absint( $_GET['uid'] ) : 0;
3628
+ $new_hash = hash_hmac( 'sha1', "{$raw_email_type}:{$raw_user_id}", bp_email_get_salt() );
3629
+
3630
+ // Check required values.
3631
+ if ( ! $raw_user_id || ! $raw_email_type || ! $raw_hash || ! array_key_exists( $raw_email_type, $emails ) ) {
3632
+ $redirect_to = site_url( 'wp-login.php' );
3633
+ $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3634
+ $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' );
3635
+
3636
+ // Check valid hash.
3637
+ } elseif ( ! hash_equals( $new_hash, $raw_hash ) ) {
3638
+ $redirect_to = site_url( 'wp-login.php' );
3639
+ $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3640
+ $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' );
3641
+
3642
+ // Don't let authenticated users unsubscribe other users' email notifications.
3643
+ } elseif ( is_user_logged_in() && get_current_user_id() !== $raw_user_id ) {
3644
+ $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3645
+ $unsub_msg = __( 'Please go to your notifications settings to unsubscribe from emails.', 'buddypress' );
3646
+
3647
+ if ( bp_is_active( 'settings' ) ) {
3648
+ $redirect_to = sprintf(
3649
+ '%s%s/notifications/',
3650
+ bp_core_get_user_domain( get_current_user_id() ),
3651
+ bp_get_settings_slug()
3652
+ );
3653
+ } else {
3654
+ $redirect_to = bp_core_get_user_domain( get_current_user_id() );
3655
+ }
3656
+
3657
+ } else {
3658
+ if ( bp_is_active( 'settings' ) ) {
3659
+ $redirect_to = sprintf(
3660
+ '%s%s/notifications/',
3661
+ bp_core_get_user_domain( $raw_user_id ),
3662
+ bp_get_settings_slug()
3663
+ );
3664
+ } else {
3665
+ $redirect_to = bp_core_get_user_domain( $raw_user_id );
3666
+ }
3667
+
3668
+ // Unsubscribe.
3669
+ $meta_key = $emails[ $raw_email_type ]['unsubscribe']['meta_key'];
3670
+ bp_update_user_meta( $raw_user_id, $meta_key, 'no' );
3671
+
3672
+ $result_msg = $emails[ $raw_email_type ]['unsubscribe']['message'];
3673
+ $unsub_msg = __( 'You can change this or any other email notification preferences in your email settings.', 'buddypress' );
3674
+ }
3675
+
3676
+ $message = sprintf(
3677
+ '%1$s <a href="%2$s">%3$s</a>',
3678
+ $result_msg,
3679
+ esc_url( $redirect_to ),
3680
+ esc_html( $unsub_msg )
3681
+ );
3682
+
3683
+ bp_core_add_message( $message );
3684
+ bp_core_redirect( bp_core_get_user_domain( $raw_user_id ) );
3685
+
3686
+ exit;
3687
+ }
3688
+
3689
+ /**
3690
+ * Creates unsubscribe link for notification emails.
3691
+ *
3692
+ * @since 2.7.0
3693
+ *
3694
+ * @param string $redirect_to The URL to which the unsubscribe query string is appended.
3695
+ * @param array $args {
3696
+ * Used to build unsubscribe query string.
3697
+ *
3698
+ * @type string $notification_type Which notification type is being sent.
3699
+ * @type string $user_id The ID of the user to whom the notification is sent.
3700
+ * @type string $redirect_to Optional. The url to which the user will be redirected. Default is the activity directory.
3701
+ * }
3702
+ * @return string The unsubscribe link.
3703
+ */
3704
+ function bp_email_get_unsubscribe_link( $args ) {
3705
+ $emails = bp_email_get_type_schema( 'all' );
3706
+
3707
+ if ( empty( $args['notification_type'] ) || ! array_key_exists( $args['notification_type'], $emails ) ) {
3708
+ return site_url( 'wp-login.php' );
3709
+ }
3710
+
3711
+ $email_type = $args['notification_type'];
3712
+ $redirect_to = ! empty( $args['redirect_to'] ) ? $args['redirect_to'] : site_url();
3713
+ $user_id = (int) $args['user_id'];
3714
+
3715
+ // Bail out if the activity type is not un-unsubscribable.
3716
+ if ( empty( $emails[ $email_type ]['unsubscribe'] ) ) {
3717
+ return '';
3718
+ }
3719
+
3720
+ $link = add_query_arg(
3721
+ array(
3722
+ 'action' => 'unsubscribe',
3723
+ 'nh' => hash_hmac( 'sha1', "{$email_type}:{$user_id}", bp_email_get_salt() ),
3724
+ 'nt' => $args['notification_type'],
3725
+ 'uid' => $user_id,
3726
+ ),
3727
+ $redirect_to
3728
  );
3729
+
3730
+ /**
3731
+ * Filters the unsubscribe link.
3732
+ *
3733
+ * @since 2.7.0
3734
+ */
3735
+ return apply_filters( 'bp_email_get_link', $link, $redirect_to, $args );
3736
+ }
3737
+
3738
+ /**
3739
+ * Get a persistent salt for email unsubscribe links.
3740
+ *
3741
+ * @since 2.7.0
3742
+ *
3743
+ * @return string|null Returns null if value isn't set, otherwise string.
3744
+ */
3745
+ function bp_email_get_salt() {
3746
+ return bp_get_option( 'bp-emails-unsubscribe-salt', null );
3747
  }
bp-core/bp-core-loader.php CHANGED
@@ -18,11 +18,9 @@ if ( ! buddypress()->do_autoload ) {
18
  }
19
 
20
  /**
21
- * Set up the BuddyPress Core component.
22
  *
23
  * @since 1.6.0
24
- *
25
- * @global BuddyPress $bp BuddyPress global settings object.
26
  */
27
  function bp_setup_core() {
28
  buddypress()->core = new BP_Core();
18
  }
19
 
20
  /**
21
+ * Set up the bp-core component.
22
  *
23
  * @since 1.6.0
 
 
24
  */
25
  function bp_setup_core() {
26
  buddypress()->core = new BP_Core();
bp-core/bp-core-options.php CHANGED
@@ -13,6 +13,9 @@ defined( 'ABSPATH' ) || exit;
13
  /**
14
  * Get the default site options and their values.
15
  *
 
 
 
16
  * @since 1.6.0
17
  *
18
  * @return array Filtered option names and values.
@@ -73,6 +76,9 @@ function bp_get_default_options() {
73
  // The ID for the current theme package.
74
  '_bp_theme_package_id' => 'legacy',
75
 
 
 
 
76
  /* Groups ************************************************************/
77
 
78
  // @todo Move this into the groups component
@@ -94,11 +100,14 @@ function bp_get_default_options() {
94
  // Force the BuddyBar.
95
  '_bp_force_buddybar' => false,
96
 
97
- /* Legacy theme *********************************************/
98
 
99
  // Whether to register the bp-default themes directory.
100
  '_bp_retain_bp_default' => false,
101
 
 
 
 
102
  /* Widgets **************************************************/
103
  'widget_bp_core_login_widget' => false,
104
  'widget_bp_core_members_widget' => false,
@@ -125,7 +134,6 @@ function bp_get_default_options() {
125
  * Non-destructive, so existing settings will not be overridden.
126
  *
127
  * @since 1.6.0
128
- *
129
  */
130
  function bp_add_options() {
131
 
@@ -156,7 +164,6 @@ function bp_add_options() {
156
  * Currently unused.
157
  *
158
  * @since 1.6.0
159
- *
160
  */
161
  function bp_delete_options() {
162
 
@@ -184,7 +191,6 @@ function bp_delete_options() {
184
  * Currently unused.
185
  *
186
  * @since 1.6.0
187
- *
188
  */
189
  function bp_setup_option_filters() {
190
 
@@ -242,7 +248,7 @@ function bp_pre_get_option( $value = false ) {
242
  *
243
  * The 'bp_get_option' filter is primarily for backward-compatibility.
244
  *
245
- * @since 1.2.0
246
  *
247
  * @param string $option_name The option to be retrieved.
248
  * @param string $default Optional. Default value to be returned if the option
@@ -255,7 +261,7 @@ function bp_get_option( $option_name, $default = '' ) {
255
  /**
256
  * Filters the option value for the requested option.
257
  *
258
- * @since 1.2.0
259
  *
260
  * @param mixed $value The value for the option.
261
  */
@@ -411,61 +417,16 @@ function bp_core_get_root_options() {
411
  $root_blog_options_meta = array_merge( $root_blog_options_meta, $network_options_meta );
412
  }
413
 
414
- // Missing some options, so do some one-time fixing.
415
- if ( empty( $root_blog_options_meta ) || ( count( $root_blog_options_meta ) < count( $root_blog_option_keys ) ) ) {
416
-
417
- // Get a list of the keys that are already populated.
418
- $existing_options = array();
419
- foreach( $root_blog_options_meta as $already_option ) {
420
- $existing_options[$already_option->name] = $already_option->value;
421
- }
422
-
423
- // Unset the query - We'll be resetting it soon.
424
- unset( $root_blog_options_meta );
425
-
426
- // Loop through options.
427
- foreach ( $root_blog_options as $old_meta_key => $old_meta_default ) {
428
-
429
- if ( isset( $existing_options[$old_meta_key] ) ) {
430
- continue;
431
- }
432
-
433
- // Get old site option.
434
- if ( is_multisite() ) {
435
- $old_meta_value = get_site_option( $old_meta_key );
436
- }
437
-
438
- // No site option so look in root blog.
439
- if ( empty( $old_meta_value ) ) {
440
- $old_meta_value = bp_get_option( $old_meta_key, $old_meta_default );
441
- }
442
-
443
- // Update the root blog option.
444
- bp_update_option( $old_meta_key, $old_meta_value );
445
-
446
- // Update the global array.
447
- $root_blog_options_meta[$old_meta_key] = $old_meta_value;
448
-
449
- // Clear out the value for the next time around.
450
- unset( $old_meta_value );
451
- }
452
-
453
- $root_blog_options_meta = array_merge( $root_blog_options_meta, $existing_options );
454
- unset( $existing_options );
455
-
456
- // We're all matched up.
457
- } else {
458
- // Loop through our results and make them usable.
459
- foreach ( $root_blog_options_meta as $root_blog_option ) {
460
- $root_blog_options[$root_blog_option->name] = $root_blog_option->value;
461
- }
462
 
463
- // Copy the options no the return val.
464
- $root_blog_options_meta = $root_blog_options;
465
 
466
- // Clean up our temporary copy.
467
- unset( $root_blog_options );
468
- }
469
 
470
  wp_cache_set( 'root_blog_options', $root_blog_options_meta, 'bp' );
471
  }
@@ -489,7 +450,7 @@ function bp_core_get_root_options() {
489
  *
490
  * @since 2.3.0
491
  *
492
- * @param string $option Name of the option key.
493
  * @return mixed Value, if found.
494
  */
495
  function bp_core_get_root_option( $option ) {
@@ -754,7 +715,6 @@ function bp_group_forums_root_id( $default = '0' ) {
754
  *
755
  * @since 1.6.0
756
  *
757
- *
758
  * @param bool|string $default Optional. Default: '0'.
759
  * @return int The ID of the group forums root forum.
760
  */
13
  /**
14
  * Get the default site options and their values.
15
  *
16
+ * Default values should not be set by calls to `get_option()` or `get_site_option()` due to
17
+ * these causing load order problems with `bp_core_clear_root_options_cache()`; see #BP7227.
18
+ *
19
  * @since 1.6.0
20
  *
21
  * @return array Filtered option names and values.
76
  // The ID for the current theme package.
77
  '_bp_theme_package_id' => 'legacy',
78
 
79
+ // Email unsubscribe salt.
80
+ 'bp-emails-unsubscribe-salt' => '',
81
+
82
  /* Groups ************************************************************/
83
 
84
  // @todo Move this into the groups component
100
  // Force the BuddyBar.
101
  '_bp_force_buddybar' => false,
102
 
103
+ /* Legacy *********************************************/
104
 
105
  // Whether to register the bp-default themes directory.
106
  '_bp_retain_bp_default' => false,
107
 
108
+ // Whether to load deprecated code.
109
+ '_bp_ignore_deprecated_code' => true,
110
+
111
  /* Widgets **************************************************/
112
  'widget_bp_core_login_widget' => false,
113
  'widget_bp_core_members_widget' => false,
134
  * Non-destructive, so existing settings will not be overridden.
135
  *
136
  * @since 1.6.0
 
137
  */
138
  function bp_add_options() {
139
 
164
  * Currently unused.
165
  *
166
  * @since 1.6.0
 
167
  */
168
  function bp_delete_options() {
169
 
191
  * Currently unused.
192
  *
193
  * @since 1.6.0
 
194
  */
195
  function bp_setup_option_filters() {
196
 
248
  *
249
  * The 'bp_get_option' filter is primarily for backward-compatibility.
250
  *
251
+ * @since 1.5.0
252
  *
253
  * @param string $option_name The option to be retrieved.
254
  * @param string $default Optional. Default value to be returned if the option
261
  /**
262
  * Filters the option value for the requested option.
263
  *
264
+ * @since 1.5.0
265
  *
266
  * @param mixed $value The value for the option.
267
  */
417
  $root_blog_options_meta = array_merge( $root_blog_options_meta, $network_options_meta );
418
  }
419
 
420
+ // Loop through our results and make them usable.
421
+ foreach ( $root_blog_options_meta as $root_blog_option ) {
422
+ $root_blog_options[$root_blog_option->name] = $root_blog_option->value;
423
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
 
425
+ // Copy the options no the return val.
426
+ $root_blog_options_meta = $root_blog_options;
427
 
428
+ // Clean up our temporary copy.
429
+ unset( $root_blog_options );
 
430
 
431
  wp_cache_set( 'root_blog_options', $root_blog_options_meta, 'bp' );
432
  }
450
  *
451
  * @since 2.3.0
452
  *
453
+ * @param string $option Name of the option key.
454
  * @return mixed Value, if found.
455
  */
456
  function bp_core_get_root_option( $option ) {
715
  *
716
  * @since 1.6.0
717
  *
 
718
  * @param bool|string $default Optional. Default: '0'.
719
  * @return int The ID of the group forums root forum.
720
  */
bp-core/bp-core-taxonomy.php CHANGED
@@ -21,7 +21,7 @@ defined( 'ABSPATH' ) || exit;
21
  */
22
  function bp_register_default_taxonomies() {
23
  // Member Type.
24
- register_taxonomy( 'bp_member_type', 'user', array(
25
  'public' => false,
26
  ) );
27
 
@@ -51,6 +51,7 @@ add_action( 'bp_register_taxonomies', 'bp_register_default_taxonomies' );
51
  *
52
  * @since 2.6.0
53
  *
 
54
  * @return int
55
  */
56
  function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
@@ -61,8 +62,8 @@ function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
61
  *
62
  * @since 2.6.0
63
  *
64
- * @param int $site_id
65
- * @param string $taxonomy
66
  */
67
  return (int) apply_filters( 'bp_get_taxonomy_term_site_id', $site_id, $taxonomy );
68
  }
@@ -90,13 +91,25 @@ function bp_set_object_terms( $object_id, $terms, $taxonomy, $append = false ) {
90
  $switched = true;
91
  }
92
 
93
- $retval = wp_set_object_terms( $object_id, $terms, $taxonomy, $append );
94
 
95
  if ( $switched ) {
96
  restore_current_blog();
97
  }
98
 
99
- return $retval;
 
 
 
 
 
 
 
 
 
 
 
 
100
  }
101
 
102
  /**
@@ -167,5 +180,100 @@ function bp_remove_object_terms( $object_id, $terms, $taxonomy ) {
167
  restore_current_blog();
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
170
  return $retval;
171
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  */
22
  function bp_register_default_taxonomies() {
23
  // Member Type.
24
+ register_taxonomy( bp_get_member_type_tax_name(), 'user', array(
25
  'public' => false,
26
  ) );
27
 
51
  *
52
  * @since 2.6.0
53
  *
54
+ * @param string $taxonomy Taxonomy slug to check for.
55
  * @return int
56
  */
57
  function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
62
  *
63
  * @since 2.6.0
64
  *
65
+ * @param int $site_id Site ID to cehck for.
66
+ * @param string $taxonomy Taxonomy slug to check for.
67
  */
68
  return (int) apply_filters( 'bp_get_taxonomy_term_site_id', $site_id, $taxonomy );
69
  }
91
  $switched = true;
92
  }
93
 
94
+ $tt_ids = wp_set_object_terms( $object_id, $terms, $taxonomy, $append );
95
 
96
  if ( $switched ) {
97
  restore_current_blog();
98
  }
99
 
100
+ /**
101
+ * Fires when taxonomy terms have been set on BuddyPress objects.
102
+ *
103
+ * @since 2.7.0
104
+ *
105
+ * @param int $object_id Object ID.
106
+ * @param array $terms Term or terms to remove.
107
+ * @param array $tt_ids Array of term taxonomy IDs.
108
+ * @param string $taxonomy Taxonomy name.
109
+ */
110
+ do_action( 'bp_set_object_terms', $object_id, $terms, $tt_ids, $taxonomy );
111
+
112
+ return $tt_ids;
113
  }
114
 
115
  /**
180
  restore_current_blog();
181
  }
182
 
183
+ /**
184
+ * Fires when taxonomy terms have been removed from BuddyPress objects.
185
+ *
186
+ * @since 2.7.0
187
+ *
188
+ * @param int $object_id Object ID.
189
+ * @param array $terms Term or terms to remove.
190
+ * @param string $taxonomy Taxonomy name.
191
+ */
192
+ do_action( 'bp_remove_object_terms', $object_id, $terms, $taxonomy );
193
+
194
  return $retval;
195
  }
196
+
197
+ /**
198
+ * Retrieve IDs of objects in valid taxonomies and terms for BuddyPress-related taxonomies.
199
+ *
200
+ * Note that object IDs are from the `bp_get_taxonomy_term_site_id()`, which on some
201
+ * multisite configurations may not be the same as the current site.
202
+ *
203
+ * @since 2.7.0
204
+ *
205
+ * @see get_objects_in_term() for a full description of function and parameters.
206
+ *
207
+ * @param int|array $term_ids Term id or array of term ids of terms that will be used.
208
+ * @param string|array $taxonomies String of taxonomy name or Array of string values of taxonomy names.
209
+ * @param array|string $args Change the order of the object_ids, either ASC or DESC.
210
+ *
211
+ * @return WP_Error|array If the taxonomy does not exist, then WP_Error will be returned. On success,
212
+ * the array can be empty, meaning that there are no $object_ids found. When
213
+ * object IDs are found, an array of those IDs will be returned.
214
+ */
215
+ function bp_get_objects_in_term( $term_ids, $taxonomies, $args = array() ) {
216
+ // Different taxonomies may be stored on different sites.
217
+ $taxonomy_site_map = array();
218
+ foreach ( (array) $taxonomies as $taxonomy ) {
219
+ $taxonomy_site_id = bp_get_taxonomy_term_site_id( $taxonomy );
220
+ $taxonomy_site_map[ $taxonomy_site_id ][] = $taxonomy;
221
+ }
222
+
223
+ $retval = array();
224
+ foreach ( $taxonomy_site_map as $taxonomy_site_id => $site_taxonomies ) {
225
+ $switched = false;
226
+ if ( $taxonomy_site_id !== get_current_blog_id() ) {
227
+ switch_to_blog( $taxonomy_site_id );
228
+ bp_register_taxonomies();
229
+ $switched = true;
230
+ }
231
+
232
+ $site_objects = get_objects_in_term( $term_ids, $site_taxonomies, $args );
233
+ $retval = array_merge( $retval, $site_objects );
234
+
235
+ if ( $switched ) {
236
+ restore_current_blog();
237
+ }
238
+ }
239
+
240
+ return $retval;
241
+ }
242
+
243
+ /**
244
+ * Get term data for terms in BuddyPress taxonomies.
245
+ *
246
+ * Note that term data is from the `bp_get_taxonomy_term_site_id()`, which on some
247
+ * multisite configurations may not be the same as the current site.
248
+ *
249
+ * @since 2.7.0
250
+ *
251
+ * @see get_term_by() for a full description of function and parameters.
252
+ *
253
+ * @param string $field Either 'slug', 'name', 'id' (term_id), or 'term_taxonomy_id'
254
+ * @param string|int $value Search for this term value
255
+ * @param string $taxonomy Taxonomy name. Optional, if `$field` is 'term_taxonomy_id'.
256
+ * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N
257
+ * @param string $filter Optional, default is raw or no WordPress defined filter will applied.
258
+ *
259
+ * @return WP_Term|bool WP_Term instance on success. Will return false if `$taxonomy` does not exist
260
+ * or `$term` was not found.
261
+ */
262
+ function bp_get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {
263
+ $site_id = bp_get_taxonomy_term_site_id( $taxonomy );
264
+
265
+ $switched = false;
266
+ if ( $site_id !== get_current_blog_id() ) {
267
+ switch_to_blog( $site_id );
268
+ bp_register_taxonomies();
269
+ $switched = true;
270
+ }
271
+
272
+ $term = get_term_by( $field, $value, $taxonomy, $output, $filter );
273
+
274
+ if ( $switched ) {
275
+ restore_current_blog();
276
+ }
277
+
278
+ return $term;
279
+ }
bp-core/bp-core-template-loader.php CHANGED
@@ -70,6 +70,10 @@ function bp_get_template_part( $slug, $name = null ) {
70
  * @since 2.6.0
71
  *
72
  * @see bp_get_template_part() for full documentation.
 
 
 
 
73
  */
74
  function bp_get_asset_template_part( $slug, $name = null ) {
75
  return bp_get_template_part( "assets/{$slug}", $name );
@@ -156,7 +160,7 @@ function bp_locate_template( $template_names, $load = false, $require_once = tru
156
  *
157
  * @since 2.6.0
158
  *
159
- * @param string Relative filename to search for.
160
  * @return array|bool Array of asset data if one is located (includes absolute filepath and URI).
161
  * Boolean false on failure.
162
  */
70
  * @since 2.6.0
71
  *
72
  * @see bp_get_template_part() for full documentation.
73
+ *
74
+ * @param string $slug Template slug.
75
+ * @param string|null $name Template name.
76
+ * @return string
77
  */
78
  function bp_get_asset_template_part( $slug, $name = null ) {
79
  return bp_get_template_part( "assets/{$slug}", $name );
160
  *
161
  * @since 2.6.0
162
  *
163
+ * @param string $filename Relative filename to search for.
164
  * @return array|bool Array of asset data if one is located (includes absolute filepath and URI).
165
  * Boolean false on failure.
166
  */
bp-core/bp-core-template.php CHANGED
@@ -584,6 +584,71 @@ function bp_search_form_type_select() {
584
  return apply_filters( 'bp_search_form_type_select', $selection_box );
585
  }
586
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  /**
588
  * Output the default text for the search box for a given component.
589
  *
@@ -2399,7 +2464,7 @@ function bp_is_user_change_avatar() {
2399
  *
2400
  * Eg http://example.com/members/joe/profile/change-cover-image/ (or a subpage thereof).
2401
  *
2402
- * @since 2.4.0
2403
  *
2404
  * @return bool True if the current page is a user's profile edit cover image page.
2405
  */
@@ -2621,7 +2686,7 @@ function bp_is_user_settings_profile() {
2621
  * @return True if the current page is the groups directory.
2622
  */
2623
  function bp_is_groups_directory() {
2624
- if ( bp_is_groups_component() && ! bp_current_action() && ! bp_current_item() ) {
2625
  return true;
2626
  }
2627
 
@@ -3154,7 +3219,7 @@ function bp_get_title_parts( $seplocation = 'right' ) {
3154
  *
3155
  * @since 2.4.3
3156
  *
3157
- * @param array $bp_title_parts Current BuddyPress title parts
3158
  * @return array
3159
  */
3160
  return (array) apply_filters( 'bp_get_title_parts', $bp_title_parts );
@@ -3247,6 +3312,10 @@ function bp_the_body_class() {
3247
  if ( bp_is_user_activity() ) {
3248
  $bp_classes[] = 'my-activity';
3249
  }
 
 
 
 
3250
  }
3251
 
3252
  if ( bp_is_my_profile() ) {
@@ -3724,9 +3793,9 @@ function bp_nav_menu( $args = array() ) {
3724
  /**
3725
  * Prints the Recipient Salutation.
3726
  *
3727
- * @since 2.5.0
3728
  *
3729
- * @param array $settings Email Settings.
3730
  */
3731
  function bp_email_the_salutation( $settings = array() ) {
3732
  echo bp_email_get_salutation( $settings );
@@ -3735,9 +3804,9 @@ function bp_email_the_salutation( $settings = array() ) {
3735
  /**
3736
  * Gets the Recipient Salutation.
3737
  *
3738
- * @since 2.5.0
3739
  *
3740
- * @param array $settings Email Settings.
3741
  * @return string The Recipient Salutation.
3742
  */
3743
  function bp_email_get_salutation( $settings = array() ) {
@@ -3746,7 +3815,7 @@ function bp_email_the_salutation( $settings = array() ) {
3746
  /**
3747
  * Filters The Recipient Salutation inside the Email Template.
3748
  *
3749
- * @since 2.5.0
3750
  *
3751
  * @param string $value The Recipient Salutation.
3752
  * @param array $settings Email Settings.
584
  return apply_filters( 'bp_search_form_type_select', $selection_box );
585
  }
586
 
587
+ /**
588
+ * Output the 'name' attribute for search form input element.
589
+ *
590
+ * @since 2.7.0
591
+ *
592
+ * @param string $component See bp_get_search_input_name().
593
+ */
594
+ function bp_search_input_name( $component = '' ) {
595
+ echo esc_attr( bp_get_search_input_name( $component ) );
596
+ }
597
+
598
+ /**
599
+ * Get the 'name' attribute for the search form input element.
600
+ *
601
+ * @since 2.7.0
602
+ *
603
+ * @param string $component Component name. Defaults to current component.
604
+ * @return string Text for the 'name' attribute.
605
+ */
606
+ function bp_get_search_input_name( $component = '' ) {
607
+ if ( ! $component ) {
608
+ $component = bp_current_component();
609
+ }
610
+
611
+ $bp = buddypress();
612
+
613
+ $name = '';
614
+ if ( isset( $bp->{$component}->id ) ) {
615
+ $name = $bp->{$component}->id . '_search';
616
+ }
617
+
618
+ return $name;
619
+ }
620
+
621
+ /**
622
+ * Output the placeholder text for the search box for a given component.
623
+ *
624
+ * @since 2.7.0
625
+ *
626
+ * @param string $component See bp_get_search_placeholder().
627
+ */
628
+ function bp_search_placeholder( $component = '' ) {
629
+ echo esc_attr( bp_get_search_placeholder( $component ) );
630
+ }
631
+
632
+ /**
633
+ * Get the placeholder text for the search box for a given component.
634
+ *
635
+ * @since 2.7.0
636
+ *
637
+ * @param string $component Component name. Defaults to current component.
638
+ * @return string Placeholder text for the search field.
639
+ */
640
+ function bp_get_search_placeholder( $component = '' ) {
641
+ $query_arg = bp_core_get_component_search_query_arg( $component );
642
+
643
+ if ( $query_arg && ! empty( $_REQUEST[ $query_arg ] ) ) {
644
+ $placeholder = wp_unslash( $_REQUEST[ $query_arg ] );
645
+ } else {
646
+ $placeholder = bp_get_search_default_text( $component );
647
+ }
648
+
649
+ return $placeholder;
650
+ }
651
+
652
  /**
653
  * Output the default text for the search box for a given component.
654
  *
2464
  *
2465
  * Eg http://example.com/members/joe/profile/change-cover-image/ (or a subpage thereof).
2466
  *
2467
+ * @since 2.4.0
2468
  *
2469
  * @return bool True if the current page is a user's profile edit cover image page.
2470
  */
2686
  * @return True if the current page is the groups directory.
2687
  */
2688
  function bp_is_groups_directory() {
2689
+ if ( bp_is_groups_component() && ! bp_is_group() && ( ! bp_current_action() || ( bp_action_variable() && bp_is_current_action( bp_get_groups_group_type_base() ) ) ) ) {
2690
  return true;
2691
  }
2692
 
3219
  *
3220
  * @since 2.4.3
3221
  *
3222
+ * @param array $bp_title_parts Current BuddyPress title parts.
3223
  * @return array
3224
  */
3225
  return (array) apply_filters( 'bp_get_title_parts', $bp_title_parts );
3312
  if ( bp_is_user_activity() ) {
3313
  $bp_classes[] = 'my-activity';
3314
  }
3315
+ } else {
3316
+ if ( bp_get_current_member_type() ) {
3317
+ $bp_classes[] = 'type';
3318
+ }
3319
  }
3320
 
3321
  if ( bp_is_my_profile() ) {
3793
  /**
3794
  * Prints the Recipient Salutation.
3795
  *
3796
+ * @since 2.5.0
3797
  *
3798
+ * @param array $settings Email Settings.
3799
  */
3800
  function bp_email_the_salutation( $settings = array() ) {
3801
  echo bp_email_get_salutation( $settings );
3804
  /**
3805
  * Gets the Recipient Salutation.
3806
  *
3807
+ * @since 2.5.0
3808
  *
3809
+ * @param array $settings Email Settings.
3810
  * @return string The Recipient Salutation.
3811
  */
3812
  function bp_email_get_salutation( $settings = array() ) {
3815
  /**
3816
  * Filters The Recipient Salutation inside the Email Template.
3817
  *
3818
+ * @since 2.5.0
3819
  *
3820
  * @param string $value The Recipient Salutation.
3821
  * @param array $settings Email Settings.
bp-core/bp-core-theme-compatibility.php CHANGED
@@ -319,8 +319,8 @@ function bp_set_theme_compat_original_template( $template = '' ) {
319
  *
320
  * @since 2.4.0
321
  *
322
- * @param string $theme_id The theme id (eg: legacy).
323
- * @param array $feature An associative array (eg: array( name => 'feature_name', 'settings' => array() )).
324
  */
325
  function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
326
  if ( empty( $theme_id ) || empty( $feature['name'] ) ) {
@@ -379,8 +379,8 @@ function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
379
  *
380
  * @since 2.4.0
381
  *
382
- * @param string $feature The feature (eg: cover_image).
383
- * @return object The feature settings.
384
  */
385
  function bp_get_theme_compat_feature( $feature = '' ) {
386
  // Get current theme compat theme.
@@ -397,7 +397,7 @@ function bp_get_theme_compat_feature( $feature = '' ) {
397
  }
398
 
399
  /**
400
- * Setup the theme's features
401
  *
402
  * Note: BP Legacy's buddypress-functions.php is not loaded in WP Administration
403
  * as it's loaded using bp_locate_template(). That's why this function is here.
@@ -646,7 +646,7 @@ function bp_theme_compat_reset_post( $args = array() ) {
646
  unset( $dummy );
647
 
648
  /**
649
- * Force the header back to 200 status if not a deliberate 404
650
  *
651
  * @see https://bbpress.trac.wordpress.org/ticket/1973
652
  */
@@ -957,10 +957,12 @@ function bp_comments_open( $open, $post_id = 0 ) {
957
  function bp_theme_compat_toggle_is_page( $retval = '' ) {
958
  global $wp_query;
959
 
960
- $wp_query->is_page = false;
 
961
 
962
- // Set a switch so we know that we've toggled these WP_Query properties.
963
- buddypress()->theme_compat->is_page_toggled = true;
 
964
 
965
  return $retval;
966
  }
319
  *
320
  * @since 2.4.0
321
  *
322
+ * @param string $theme_id The theme id (eg: legacy).
323
+ * @param array $feature An associative array (eg: array( name => 'feature_name', 'settings' => array() )).
324
  */
325
  function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
326
  if ( empty( $theme_id ) || empty( $feature['name'] ) ) {
379
  *
380
  * @since 2.4.0
381
  *
382
+ * @param string $feature The feature (eg: cover_image).
383
+ * @return object The feature settings.
384
  */
385
  function bp_get_theme_compat_feature( $feature = '' ) {
386
  // Get current theme compat theme.
397
  }
398
 
399
  /**
400
+ * Setup the theme's features.
401
  *
402
  * Note: BP Legacy's buddypress-functions.php is not loaded in WP Administration
403
  * as it's loaded using bp_locate_template(). That's why this function is here.
646
  unset( $dummy );
647
 
648
  /**
649
+ * Force the header back to 200 status if not a deliberate 404.
650
  *
651
  * @see https://bbpress.trac.wordpress.org/ticket/1973
652
  */
957
  function bp_theme_compat_toggle_is_page( $retval = '' ) {
958
  global $wp_query;
959
 
960
+ if ( $wp_query->is_page ) {
961
+ $wp_query->is_page = false;
962
 
963
+ // Set a switch so we know that we've toggled these WP_Query properties.
964
+ buddypress()->theme_compat->is_page_toggled = true;
965
+ }
966
 
967
  return $retval;
968
  }
bp-core/bp-core-update.php CHANGED
@@ -139,7 +139,6 @@ function bp_is_deactivation( $basename = '' ) {
139
  * Update the BP version stored in the database to the current version.
140
  *
141
  * @since 1.6.0
142
- *
143
  */
144
  function bp_version_bump() {
145
  bp_update_option( '_bp_db_version', bp_get_db_version() );
@@ -192,10 +191,11 @@ function bp_version_updater() {
192
  'notifications' => 1,
193
  ) );
194
 
 
195
  require_once( buddypress()->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
196
  $switched_to_root_blog = false;
197
 
198
- // Make sure the current blog is set to the root blog
199
  if ( ! bp_is_root_blog() ) {
200
  switch_to_blog( bp_get_root_blog_id() );
201
  bp_register_taxonomies();
@@ -218,51 +218,56 @@ function bp_version_updater() {
218
  // Run the schema install to update tables.
219
  bp_core_install();
220
 
221
- // 1.5.0
222
  if ( $raw_db_version < 1801 ) {
223
  bp_update_to_1_5();
224
  bp_core_add_page_mappings( $default_components, 'delete' );
225
  }
226
 
227
- // 1.6.0
228
  if ( $raw_db_version < 6067 ) {
229
  bp_update_to_1_6();
230
  }
231
 
232
- // 1.9.0
233
  if ( $raw_db_version < 7553 ) {
234
  bp_update_to_1_9();
235
  }
236
 
237
- // 1.9.2
238
  if ( $raw_db_version < 7731 ) {
239
  bp_update_to_1_9_2();
240
  }
241
 
242
- // 2.0.0
243
  if ( $raw_db_version < 7892 ) {
244
  bp_update_to_2_0();
245
  }
246
 
247
- // 2.0.1
248
  if ( $raw_db_version < 8311 ) {
249
  bp_update_to_2_0_1();
250
  }
251
 
252
- // 2.2.0
253
  if ( $raw_db_version < 9181 ) {
254
  bp_update_to_2_2();
255
  }
256
 
257
- // 2.3.0
258
  if ( $raw_db_version < 9615 ) {
259
  bp_update_to_2_3();
260
  }
261
 
262
- // 2.5.0
263
  if ( $raw_db_version < 10440 ) {
264
  bp_update_to_2_5();
265
  }
 
 
 
 
 
266
  }
267
 
268
  /* All done! *************************************************************/
@@ -331,7 +336,7 @@ function bp_update_to_1_5() {
331
  }
332
 
333
  /**
334
- * Remove unused metadata from database when upgrading from < 1.6.
335
  *
336
  * Database update methods based on version numbers.
337
  *
@@ -380,7 +385,7 @@ function bp_update_to_1_9() {
380
  }
381
 
382
  /**
383
- * Perform database updates for BP 1.9.2
384
  *
385
  * In 1.9, BuddyPress stopped registering its theme directory when it detected
386
  * that bp-default (or a child theme) was not currently being used, in effect
@@ -389,6 +394,7 @@ function bp_update_to_1_9() {
389
  * bp-default would no longer be available, with no obvious way (outside of
390
  * a manual filter) to restore it. In 1.9.2, we add an option that flags
391
  * whether bp-default or a child theme is active at the time of upgrade; if so,
 
392
  * the theme directory will continue to be registered even if the theme is
393
  * deactivated temporarily. Thus, new installations will not see bp-default,
394
  * but legacy installations using the theme will continue to see it.
@@ -440,8 +446,6 @@ function bp_update_to_2_0() {
440
  * 2.0.1 database upgrade routine.
441
  *
442
  * @since 2.0.1
443
- *
444
- * @return void
445
  */
446
  function bp_update_to_2_0_1() {
447
 
@@ -501,6 +505,43 @@ function bp_update_to_2_5() {
501
  bp_core_install_emails();
502
  }
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  /**
505
  * Updates the component field for new_members type.
506
  *
@@ -539,7 +580,6 @@ function bp_migrate_new_member_activity_component() {
539
  * Remove all hidden friendship activities.
540
  *
541
  * @since 2.2.0
542
- *
543
  */
544
  function bp_cleanup_friendship_activities() {
545
  bp_activity_delete( array(
@@ -549,13 +589,61 @@ function bp_cleanup_friendship_activities() {
549
  ) );
550
  }
551
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
  /**
553
  * Redirect user to BP's What's New page on first page load after activation.
554
  *
555
  * @since 1.7.0
556
  *
557
  * @internal Used internally to redirect BuddyPress to the about page on activation.
558
- *
559
  */
560
  function bp_add_activation_redirect() {
561
 
@@ -624,7 +712,6 @@ function bp_core_maybe_install_signups() {
624
  * Runs on BuddyPress activation.
625
  *
626
  * @since 1.6.0
627
- *
628
  */
629
  function bp_activation() {
630
 
@@ -637,13 +724,13 @@ function bp_activation() {
637
  /**
638
  * Fires during the activation of BuddyPress.
639
  *
640
- * Use as of (1.6.0)
641
  *
642
  * @since 1.6.0
643
  */
644
  do_action( 'bp_activation' );
645
 
646
- // @deprecated as of (1.6)
647
  do_action( 'bp_loader_activate' );
648
  }
649
 
@@ -653,7 +740,6 @@ function bp_activation() {
653
  * Runs on BuddyPress deactivation.
654
  *
655
  * @since 1.6.0
656
- *
657
  */
658
  function bp_deactivation() {
659
 
@@ -671,13 +757,13 @@ function bp_deactivation() {
671
  /**
672
  * Fires during the deactivation of BuddyPress.
673
  *
674
- * Use as of (1.6.0)
675
  *
676
  * @since 1.6.0
677
  */
678
  do_action( 'bp_deactivation' );
679
 
680
- // @deprecated as of (1.6)
681
  do_action( 'bp_loader_deactivate' );
682
  }
683
 
@@ -687,7 +773,6 @@ function bp_deactivation() {
687
  * Runs when uninstalling BuddyPress.
688
  *
689
  * @since 1.6.0
690
- *
691
  */
692
  function bp_uninstall() {
693
 
139
  * Update the BP version stored in the database to the current version.
140
  *
141
  * @since 1.6.0
 
142
  */
143
  function bp_version_bump() {
144
  bp_update_option( '_bp_db_version', bp_get_db_version() );
191
  'notifications' => 1,
192
  ) );
193
 
194
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
195
  require_once( buddypress()->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
196
  $switched_to_root_blog = false;
197
 
198
+ // Make sure the current blog is set to the root blog.
199
  if ( ! bp_is_root_blog() ) {
200
  switch_to_blog( bp_get_root_blog_id() );
201
  bp_register_taxonomies();
218
  // Run the schema install to update tables.
219
  bp_core_install();
220
 
221
+ // Version 1.5.0.
222
  if ( $raw_db_version < 1801 ) {
223
  bp_update_to_1_5();
224
  bp_core_add_page_mappings( $default_components, 'delete' );
225
  }
226
 
227
+ // Version 1.6.0.
228
  if ( $raw_db_version < 6067 ) {
229
  bp_update_to_1_6();
230
  }
231
 
232
+ // Version 1.9.0.
233
  if ( $raw_db_version < 7553 ) {
234
  bp_update_to_1_9();
235
  }
236
 
237
+ // Version 1.9.2.
238
  if ( $raw_db_version < 7731 ) {
239
  bp_update_to_1_9_2();
240
  }
241
 
242
+ // Version 2.0.0.
243
  if ( $raw_db_version < 7892 ) {
244
  bp_update_to_2_0();
245
  }
246
 
247
+ // Version 2.0.1.
248
  if ( $raw_db_version < 8311 ) {
249
  bp_update_to_2_0_1();
250
  }
251
 
252
+ // Version 2.2.0.
253
  if ( $raw_db_version < 9181 ) {
254
  bp_update_to_2_2();
255
  }
256
 
257
+ // Version 2.3.0.
258
  if ( $raw_db_version < 9615 ) {
259
  bp_update_to_2_3();
260
  }
261
 
262
+ // Version 2.5.0.
263
  if ( $raw_db_version < 10440 ) {
264
  bp_update_to_2_5();
265
  }
266
+
267
+ // Version 2.7.0.
268
+ if ( $raw_db_version < 11105 ) {
269
+ bp_update_to_2_7();
270
+ }
271
  }
272
 
273
  /* All done! *************************************************************/
336
  }
337
 
338
  /**
339
+ * Remove unused metadata from database when upgrading from < 1.6.0.
340
  *
341
  * Database update methods based on version numbers.
342
  *
385
  }
386
 
387
  /**
388
+ * Perform database updates for BP 1.9.2.
389
  *
390
  * In 1.9, BuddyPress stopped registering its theme directory when it detected
391
  * that bp-default (or a child theme) was not currently being used, in effect
394
  * bp-default would no longer be available, with no obvious way (outside of
395
  * a manual filter) to restore it. In 1.9.2, we add an option that flags
396
  * whether bp-default or a child theme is active at the time of upgrade; if so,
397
+ *
398
  * the theme directory will continue to be registered even if the theme is
399
  * deactivated temporarily. Thus, new installations will not see bp-default,
400
  * but legacy installations using the theme will continue to see it.
446
  * 2.0.1 database upgrade routine.
447
  *
448
  * @since 2.0.1
 
 
449
  */
450
  function bp_update_to_2_0_1() {
451
 
505
  bp_core_install_emails();
506
  }
507
 
508
+ /**
509
+ * 2.7.0 update routine.
510
+ *
511
+ * - Add email unsubscribe salt.
512
+ * - Save legacy directory titles to the corresponding WP pages.
513
+ * - Add ignore deprecated code option (false for updates).
514
+ *
515
+ * @since 2.7.0
516
+ */
517
+ function bp_update_to_2_7() {
518
+ bp_add_option( 'bp-emails-unsubscribe-salt', base64_encode( wp_generate_password( 64, true, true ) ) );
519
+
520
+ // Update post_titles
521
+ bp_migrate_directory_page_titles();
522
+
523
+ /*
524
+ * Add `parent_id` column to groups table.
525
+ * Also handled by `bp_core_install()`.
526
+ */
527
+ if ( bp_is_active( 'groups' ) ) {
528
+ bp_core_install_groups();
529
+
530
+ // Invalidate all cached group objects.
531
+ global $wpdb;
532
+ $bp = buddypress();
533
+
534
+ $group_ids = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name}" );
535
+
536
+ foreach ( $group_ids as $group_id ) {
537
+ wp_cache_delete( $group_id, 'bp_groups' );
538
+ }
539
+ }
540
+
541
+ // Load deprecated code for existing installs.
542
+ bp_add_option( '_bp_ignore_deprecated_code', false );
543
+ }
544
+
545
  /**
546
  * Updates the component field for new_members type.
547
  *
580
  * Remove all hidden friendship activities.
581
  *
582
  * @since 2.2.0
 
583
  */
584
  function bp_cleanup_friendship_activities() {
585
  bp_activity_delete( array(
589
  ) );
590
  }
591
 
592
+ /**
593
+ * Update WP pages so that their post_title matches the legacy component directory title.
594
+ *
595
+ * As of 2.7.0, component directory titles come from the `post_title` attribute of the corresponding WP post object,
596
+ * instead of being hardcoded. To ensure that directory titles don't change for existing installations, we update these
597
+ * WP posts with the formerly hardcoded titles.
598
+ *
599
+ * @since 2.7.0
600
+ */
601
+ function bp_migrate_directory_page_titles() {
602
+ $bp_pages = bp_core_get_directory_page_ids( 'all' );
603
+
604
+ $default_titles = bp_core_get_directory_page_default_titles();
605
+
606
+ $legacy_titles = array(
607
+ 'activity' => _x( 'Site-Wide Activity', 'component directory title', 'buddypress' ),
608
+ 'blogs' => _x( 'Sites', 'component directory title', 'buddypress' ),
609
+ 'groups' => _x( 'Groups', 'component directory title', 'buddypress' ),
610
+ 'members' => _x( 'Members', 'component directory title', 'buddypress' ),
611
+ );
612
+
613
+ foreach ( $bp_pages as $component => $page_id ) {
614
+ if ( ! isset( $legacy_titles[ $component ] ) ) {
615
+ continue;
616
+ }
617
+
618
+ $page = get_post( $page_id );
619
+ if ( ! $page ) {
620
+ continue;
621
+ }
622
+
623
+ // If the admin has changed the default title, don't touch it.
624
+ if ( isset( $default_titles[ $component ] ) && $default_titles[ $component ] !== $page->post_title ) {
625
+ continue;
626
+ }
627
+
628
+ // If the saved page title is the same as the legacy title, there's nothing to do.
629
+ if ( $legacy_titles[ $component ] == $page->post_title ) {
630
+ continue;
631
+ }
632
+
633
+ // Update the page with the legacy title.
634
+ wp_update_post( array(
635
+ 'ID' => $page_id,
636
+ 'post_title' => $legacy_titles[ $component ],
637
+ ) );
638
+ }
639
+ }
640
+
641
  /**
642
  * Redirect user to BP's What's New page on first page load after activation.
643
  *
644
  * @since 1.7.0
645
  *
646
  * @internal Used internally to redirect BuddyPress to the about page on activation.
 
647
  */
648
  function bp_add_activation_redirect() {
649
 
712
  * Runs on BuddyPress activation.
713
  *
714
  * @since 1.6.0
 
715
  */
716
  function bp_activation() {
717
 
724
  /**
725
  * Fires during the activation of BuddyPress.
726
  *
727
+ * Use as of 1.6.0.
728
  *
729
  * @since 1.6.0
730
  */
731
  do_action( 'bp_activation' );
732
 
733
+ // @deprecated as of 1.6.0
734
  do_action( 'bp_loader_activate' );
735
  }
736
 
740
  * Runs on BuddyPress deactivation.
741
  *
742
  * @since 1.6.0
 
743
  */
744
  function bp_deactivation() {
745
 
757
  /**
758
  * Fires during the deactivation of BuddyPress.
759
  *
760
+ * Use as of 1.6.0.
761
  *
762
  * @since 1.6.0
763
  */
764
  do_action( 'bp_deactivation' );
765
 
766
+ // @deprecated as of 1.6.0
767
  do_action( 'bp_loader_deactivate' );
768
  }
769
 
773
  * Runs when uninstalling BuddyPress.
774
  *
775
  * @since 1.6.0
 
776
  */
777
  function bp_uninstall() {
778
 
bp-core/bp-core-wpabstraction.php CHANGED
@@ -52,7 +52,6 @@ if ( !is_multisite() ) {
52
  * @param int $blog_id Blog ID to fetch for. Not used.
53
  * @param string $option_name Option name to fetch.
54
  * @param bool $default Whether or not default.
55
- *
56
  * @return mixed
57
  */
58
  function get_blog_option( $blog_id, $option_name, $default = false ) {
@@ -72,7 +71,6 @@ if ( !is_multisite() ) {
72
  * @param int $blog_id Blog ID to add for. Not used.
73
  * @param string $option_name Option name to add.
74
  * @param mixed $option_value Option value to add.
75
- *
76
  * @return mixed
77
  */
78
  function add_blog_option( $blog_id, $option_name, $option_value ) {
@@ -92,7 +90,6 @@ if ( !is_multisite() ) {
92
  * @param int $blog_id Blog ID to update for. Not used.
93
  * @param string $option_name Option name to update.
94
  * @param mixed $value Option value to update.
95
- *
96
  * @return mixed
97
  */
98
  function update_blog_option( $blog_id, $option_name, $value ) {
@@ -111,7 +108,6 @@ if ( !is_multisite() ) {
111
  *
112
  * @param int $blog_id Blog ID to delete for. Not used.
113
  * @param string $option_name Option name to delete.
114
- *
115
  * @return mixed
116
  */
117
  function delete_blog_option( $blog_id, $option_name ) {
@@ -130,7 +126,6 @@ if ( !is_multisite() ) {
130
  *
131
  * @param mixed $new_blog New blog to switch to. Not used.
132
  * @param null $deprecated Whether or not deprecated. Not used.
133
- *
134
  * @return int
135
  */
136
  function switch_to_blog( $new_blog, $deprecated = null ) {
@@ -165,7 +160,6 @@ if ( !is_multisite() ) {
165
  *
166
  * @param int $user_id ID of the user. Not used.
167
  * @param bool $all Whether or not to return all. Not used.
168
- *
169
  * @return false
170
  */
171
  function get_blogs_of_user( $user_id, $all = false ) {
@@ -186,7 +180,6 @@ if ( !is_multisite() ) {
186
  * @param mixed $pref Preference. Not used.
187
  * @param string $value Value. Not used.
188
  * @param null $deprecated Whether or not deprecated. Not used.
189
- *
190
  * @return true
191
  */
192
  function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
52
  * @param int $blog_id Blog ID to fetch for. Not used.
53
  * @param string $option_name Option name to fetch.
54
  * @param bool $default Whether or not default.
 
55
  * @return mixed
56
  */
57
  function get_blog_option( $blog_id, $option_name, $default = false ) {
71
  * @param int $blog_id Blog ID to add for. Not used.
72
  * @param string $option_name Option name to add.
73
  * @param mixed $option_value Option value to add.
 
74
  * @return mixed
75
  */
76
  function add_blog_option( $blog_id, $option_name, $option_value ) {
90
  * @param int $blog_id Blog ID to update for. Not used.
91
  * @param string $option_name Option name to update.
92
  * @param mixed $value Option value to update.
 
93
  * @return mixed
94
  */
95
  function update_blog_option( $blog_id, $option_name, $value ) {
108
  *
109
  * @param int $blog_id Blog ID to delete for. Not used.
110
  * @param string $option_name Option name to delete.
 
111
  * @return mixed
112
  */
113
  function delete_blog_option( $blog_id, $option_name ) {
126
  *
127
  * @param mixed $new_blog New blog to switch to. Not used.
128
  * @param null $deprecated Whether or not deprecated. Not used.
 
129
  * @return int
130
  */
131
  function switch_to_blog( $new_blog, $deprecated = null ) {
160
  *
161
  * @param int $user_id ID of the user. Not used.
162
  * @param bool $all Whether or not to return all. Not used.
 
163
  * @return false
164
  */
165
  function get_blogs_of_user( $user_id, $all = false ) {
180
  * @param mixed $pref Preference. Not used.
181
  * @param string $value Value. Not used.
182
  * @param null $deprecated Whether or not deprecated. Not used.
 
183
  * @return true
184
  */
185
  function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
bp-core/classes/class-bp-admin.php CHANGED
@@ -193,8 +193,6 @@ class BP_Admin {
193
  * Contextually hooked to site or network-admin depending on current configuration.
194
  *
195
  * @since 1.6.0
196
- *
197
- * section.
198
  */
199
  public function admin_menus() {
200
 
@@ -615,82 +613,123 @@ class BP_Admin {
615
  <?php endif; ?>
616
 
617
  <div class="bp-headline-feature">
618
- <h3 class="headline-title"><?php esc_html_e( 'Activity Embeds', 'buddypress' ); ?></h3>
 
 
 
 
 
 
 
 
 
 
619
 
620
- <?php if ( $embedded_activity ) :
621
- wp_enqueue_script( 'wp-embed' );
622
- ?>
623
- <div class="embed-container">
624
- <?php echo $embedded_activity ; ?>
625
- </div>
626
 
627
- <?php else : ?>
628
 
629
- <div class="featured-image">
630
- <a href="http://wordpress.tv/2016/06/15/buddypress-2-6-introducing-buddypress-activity-embeds/" title="<?php esc_attr_e( 'View the Activity Embeds demo', 'buddypress' ); ?>">
631
- <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/activity-embeds.png' ); ?>" alt="<?php esc_attr_e( 'Embed activities into your WordPress posts or pages.', 'buddypress' ); ?>">
632
- </a>
633
- </div>
634
 
635
- <?php endif ; ?>
 
 
 
 
 
 
 
 
636
 
637
- <p class="introduction"><?php _e( 'Embed activities into your WordPress posts or pages.', 'buddypress' ); ?> </p>
638
- <p><?php _e( 'Copy the permalink URL of the activity of your choice, paste it into the content editor of your WordPress post or page, and <em>voilà</em>&#33;, you&#39;ve embedded an activity update.', 'buddypress' ); ?> <a href="http://wordpress.tv/2016/06/15/buddypress-2-6-introducing-buddypress-activity-embeds/"><?php esc_html_e( 'View the Activity Embeds demo', 'buddypress' ); ?></a></p>
 
 
 
 
 
 
 
639
 
640
- <div class="clear"></div>
641
- </div>
 
 
 
642
 
643
- <hr />
 
 
 
 
644
 
645
- <div class="bp-features-section">
646
- <h3 class="headline-title"><?php esc_html_e( 'Features', 'buddypress' ); ?></h3>
 
 
 
647
 
648
  <div class="bp-feature">
649
- <h4 class="feature-title"><?php esc_html_e( 'Custom Front Page for Member Profile ', 'buddypress' ); ?></h4>
650
- <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/user-frontpage.png' ); ?>" alt="<?php esc_attr_e( 'A member custom front page using widgets.', 'buddypress' ); ?>">
651
- <p><?php _e( 'Theme developers or site owners can create custom front pages for their community&#39;s members by adding a <code>front.php</code> template to their template overrides. A specific template hierarchy is also available to make them even more unique.', 'buddypress' ); ?> <a href="https://bpdevel.wordpress.com/2016/05/24/custom-front-pages-for-your-users-profiles/"><?php esc_html_e( 'Read all about this new feature.', 'buddypress' ); ?></a></p>
652
  </div>
653
 
654
  <div class="bp-feature opposite">
655
- <h4 class="feature-title"><?php esc_html_e( 'Group Types API', 'buddypress' ); ?></h4>
656
- <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/group-type-pop.png' ); ?>" alt="<?php esc_attr_e( 'Group types metabox in Groups admin page.', 'buddypress' ); ?>">
657
- <p><?php esc_html_e( 'Registering group types finally enables a strict separation of different and explicit types of groups. This new feature is available to plugin developers starting with BuddyPress 2.6.', 'buddypress' ); ?> <a href="https://codex.buddypress.org/developer/group-types/"><?php esc_html_e( 'Learn how to set up Group Types.', 'buddypress' ); ?></a></p>
658
  </div>
659
 
660
  <div class="bp-feature">
661
- <h4 class="feature-title"><?php esc_html_e( 'New Navigation API', 'buddypress' ); ?></h4>
662
- <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/new-nav-api.png' ); ?>" alt="<?php esc_attr_e( 'Sample code for using the new navigation API', 'buddypress' ); ?>">
663
- <p><?php esc_html_e( 'The member and group navigation system has been totally rewritten, making it easier than ever to customize BuddyPress nav items.', 'buddypress' ); ?> <a href="https://codex.buddypress.org/developer/navigation-api/"><?php esc_html_e( 'Read the informative commit message.', 'buddypress' ); ?></a></p>
 
 
 
664
  </div>
665
 
666
  <div class="bp-feature opposite">
667
- <h4 class="feature-title"><?php esc_html_e( 'Stylesheets for Twenty Eleven and Twenty Ten', 'buddypress' ); ?></h4>
668
- <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/default-themes.png' ); ?>" alt="<?php esc_attr_e( 'Styled BuddyPress components in Twenty Eleven and Twenty Ten', 'buddypress' ); ?>">
669
- <p><?php esc_html_e( 'BuddyPress feels right at home now in the classic default themes, Twenty Ten and Twenty Eleven.', 'buddypress' ); ?></p>
670
  </div>
671
- </div>
672
 
673
- <div class="bp-changelog-section">
674
- <h3 class="changelog-title"><?php esc_html_e( 'Under The Hood', 'buddypress' ); ?></h3>
675
-
676
- <div class="bp-changelog col two-col">
677
- <div>
678
- <h4 class="title"><?php esc_html_e( 'Performance Enhancements', 'buddypress' ); ?></h4>
679
- <p><?php esc_html_e( 'Class autoloading reduces the memory needed to run BuddyPress on your server. Improved caching strategies for group membership statuses mean fewer round trips to your overworked database server.', 'buddypress' ); ?></p>
680
- <h4 class="title"><?php esc_html_e( 'Localization Improvements', 'buddypress' ); ?></h4>
681
- <p><?php esc_html_e( 'Improved localization strings and comments help translators do their much-appreciated work: making BuddyPress available in many languages.', 'buddypress' ); ?></p>
682
- </div>
683
 
684
- <div class="last-feature">
685
- <h4 class="title"><?php esc_html_e( 'Notifications Updates', 'buddypress' ); ?></h4>
686
- <p><?php esc_html_e( 'Adjustments to the notifications component allow members to receive timely and relevant updates about activity in your community.', 'buddypress' ); ?></p>
687
- <h4 class="title"><?php esc_html_e( 'Accessibility Upgrades', 'buddypress' ); ?></h4>
688
- <p><?php esc_html_e( 'Continued improvements help make BuddyPress&#39; back- and front-end screens usable for everyone &#40;and on more devices&#41;.', 'buddypress' ); ?></p>
689
- <h4 class="title"><?php esc_html_e( 'Developer Reference', 'buddypress' ); ?></h4>
690
- <p><?php esc_html_e( 'Regular updates to inline code documentation make it easier for developers to understand how BuddyPress works.', 'buddypress' ); ?></p>
691
- </div>
692
  </div>
693
 
 
 
 
 
 
 
 
 
 
 
 
 
694
  </div>
695
 
696
  <div class="bp-assets">
@@ -726,7 +765,7 @@ class BP_Admin {
726
  <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h3>
727
  <ul class="wp-people-group " id="wp-people-group-project-leaders">
728
  <li class="wp-person" id="wp-person-johnjamesjacoby">
729
- <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/81ec16063d89b162d55efe72165c105f?s=60">
730
  John James Jacoby</a>
731
  <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span>
732
  </li>
@@ -742,8 +781,13 @@ class BP_Admin {
742
  </li>
743
  </ul>
744
 
745
- <h3 class="wp-people-group"><?php _e( 'Core Team', 'buddypress' ); ?></h3>
746
  <ul class="wp-people-group " id="wp-people-group-core-team">
 
 
 
 
 
747
  <li class="wp-person" id="wp-person-r-a-y">
748
  <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bfa556a62b5bfac1012b6ba5f42ebfa?s=60">
749
  Ray</a>
@@ -754,11 +798,6 @@ class BP_Admin {
754
  Mathieu Viet</a>
755
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
756
  </li>
757
- <li class="wp-person" id="wp-person-mercime">
758
- <a class="web" href="https://profiles.wordpress.org/mercime"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/fae451be6708241627983570a1a1817a?s=60">
759
- Mercime</a>
760
- <span class="title"><?php _e( 'Navigator', 'buddypress' ); ?></span>
761
- </li>
762
  <li class="wp-person" id="wp-person-dcavins">
763
  <a class="web" href="https://profiles.wordpress.org/dcavins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5fa7e83d59cb45ebb616235a176595a?s=60">
764
  David Cavins</a>
@@ -774,22 +813,25 @@ class BP_Admin {
774
  Hugo</a>
775
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
776
  </li>
777
- </ul>
778
-
779
- <h3 class="wp-people-group"><?php _e( '&#x1f31f;Recent Rockstars&#x1f31f;', 'buddypress' ); ?></h3>
780
- <ul class="wp-people-group " id="wp-people-group-rockstars">
781
  <li class="wp-person" id="wp-person-henry-wright">
782
  <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=60">
783
  Henry Wright</a>
 
784
  </li>
785
  <li class="wp-person" id="wp-person-danbp">
786
  <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=60">
787
  danbp</a>
 
788
  </li>
789
  <li class="wp-person" id="wp-person-shanebp">
790
  <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=60">
791
  shanebp</a>
 
792
  </li>
 
 
 
 
793
  <li class="wp-person" id="wp-person-netweb">
794
  <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=60">
795
  Stephen Edgar</a>
@@ -814,53 +856,52 @@ class BP_Admin {
814
  <a class="web" href="https://profiles.wordpress.org/ramiy"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ce2a269e424156d79cb0c4e1d4d82db1?s=60">
815
  Rami Yushuvaev</a>
816
  </li>
817
-
 
 
 
818
  </ul>
819
 
820
  <h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3>
821
  <p class="wp-credits-list">
822
- <a href="https://profiles.wordpress.org/abweb/">abweb</a>,
 
823
  <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>,
824
- <a href="https://profiles.wordpress.org/thebrandonallen/">Brandon Allen (thebrandonallen)</a>,
825
- <a href="https://profiles.wordpress.org/chherbst/">chherbst</a>,
826
- <a href="https://profiles.wordpress.org/danbrellis/">danbrellis</a>,
 
827
  <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>,
 
828
  <a href="https://profiles.wordpress.org/wpdennis/">Dennis (wpdennis)</a>,
829
- <a href="https://profiles.wordpress.org/emrikol/">emrikol</a>,
830
- <a href="https://profiles.wordpress.org/wdfee/">Fee (wdfee)</a>,
831
- <a href="https://profiles.wordpress.org/garrett-eclipse/">Garrett Hyder (garrett-eclipse)</a>,
832
- <a href="https://profiles.wordpress.org/pento/">Gary Pendergast (pento)</a>,
833
- <a href="https://profiles.wordpress.org/Mamaduka/">George Mamadashvili (Mamaduka)</a>,
834
  <a href="https://profiles.wordpress.org/henrywright/">Henry Wright (henry.wright)</a>,
 
835
  <a href="https://profiles.wordpress.org/hnla/">Hugo (hnla)</a>,
 
836
  <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>,
837
- <a href="https://profiles.wordpress.org/kmbdeamorg/">Klaus (kmbdeamorg)</a>,
838
- <a href="https://profiles.wordpress.org/sooskriszta/">OC2PS (sooskriszta)</a>,
839
  <a href="https://profiles.wordpress.org/lakrisgubben/">lakrisgubben</a>,
840
  <a href="https://profiles.wordpress.org/Offereins">Laurens Offereins (Offereins)</a>,
841
- <a href="https://profiles.wordpress.org/mahadri/">mahadri</a>,
842
  <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>,
843
  <a href="https://profiles.wordpress.org/mercime/">mercime</a>,
844
  <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith (tw2113)</a>,
845
- <a href="https://profiles.wordpress.org/mmcachran/">mmcachran</a>,
846
- <a href="https://profiles.wordpress.org/modemlooper/">modemlooper</a>,
847
- <a href="https://profiles.wordpress.org/nickmomrik/">Nick Momrik (nickmomrik)</a>,
848
- <a href="https://profiles.wordpress.org/OakCreative/">OakCreative</a>,
849
- <a href="https://profiles.wordpress.org/oksankaa/">oksankaa</a>,
850
  <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>,
851
- <a href="https://profiles.wordpress.org/ramiy/">Rami Yushuvaev (ramiy)</a>,
852
  <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>,
853
- <a href="https://profiles.wordpress.org/rekmla/">rekmla</a>,
854
- <a href="https://profiles.wordpress.org/r0z/">r0z</a>,
855
- <a href="https://profiles.wordpress.org/SergeyBiryukov/">Sergey Biryukov (SergeyBiryukov)</a>,
856
- <a href="https://profiles.wordpress.org/singhleo/">singhleo</a>,
857
- <a href="https://profiles.wordpress.org/slaffik/">Slava UA (slaffik)</a>,
858
  <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>,
 
859
  <a href="https://profiles.wordpress.org/tharsheblows/">tharsheblows</a>,
860
- <a href="https://profiles.wordpress.org/VibeThemes/">VibeThemes</a>,
861
- <a href="https://profiles.wordpress.org/vortfu/">vortfu</a>,
862
- <a href="https://profiles.wordpress.org/WeddyWood/">WeddyWood</a>,
863
- <a href="https://profiles.wordpress.org/w3dzign/">w3dzign</a>.
864
  </p>
865
 
866
  <h3 class="wp-people-group"><?php _e( '&#x1f496;With our thanks to these Open Source projects&#x1f496;', 'buddypress' ); ?></h3>
@@ -868,10 +909,12 @@ class BP_Admin {
868
  <a href="https://github.com/ichord/At.js">At.js</a>,
869
  <a href="https://bbpress.org">bbPress</a>,
870
  <a href="https://github.com/ichord/Caret.js">Caret.js</a>,
871
- <a href="http://tedgoas.github.io/Cerberus/">Cerberus</a>,
872
- <a href="http://ionicons.com/">Ionicons</a>,
873
  <a href="https://github.com/carhartl/jquery-cookie">jquery.cookie</a>,
 
874
  <a href="https://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>,
 
875
  <a href="https://wordpress.org">WordPress</a>.
876
  </p>
877
 
@@ -889,7 +932,7 @@ class BP_Admin {
889
 
890
  // Switch welcome text based on whether this is a new installation or not.
891
  $welcome_text = ( self::is_new_install() )
892
- ? __( 'Thank you for installing BuddyPress! BuddyPress helps you build any type of community website using WordPress, with member profiles, activity streams, user groups, messaging, and more.', 'buddypress' )
893
  : __( 'Thank you for updating! BuddyPress %s has many new features that you will enjoy.', 'buddypress' );
894
 
895
  ?>
@@ -939,7 +982,7 @@ class BP_Admin {
939
  *
940
  * @since 2.6.0
941
  *
942
- * @param array $columns Current column data.
943
  * @return array
944
  */
945
  public function emails_register_situation_column( $columns = array() ) {
193
  * Contextually hooked to site or network-admin depending on current configuration.
194
  *
195
  * @since 1.6.0
 
 
196
  */
197
  public function admin_menus() {
198
 
613
  <?php endif; ?>
614
 
615
  <div class="bp-headline-feature">
616
+ <div class="bp-headline">
617
+ <span class="dashicons dashicons-list-view" aria-hidden="true"></span>
618
+ <h3 class="headline-title"><?php esc_html_e( 'Groups Query Overhaul', 'buddypress' ); ?></h3>
619
+
620
+ <p class="introduction"><?php
621
+ /* translators: %s: URL to the development post about this feature */
622
+ printf( __( 'Huge performance improvements on sites using persistent caching. <a href="%s">Learn more about the Groups Query rewrite</a>.', 'buddypress' ),
623
+ 'https://bpdevel.wordpress.com/2016/09/19/group-queries-have-been-rewritten-for-bp-2-7/' );
624
+ ?></p>
625
+ </div>
626
+ </div>
627
 
628
+ <div class="bp-features-section">
 
 
 
 
 
629
 
630
+ <h3 class="headline-title"><?php esc_html_e( 'For Developers &amp; Site Builders', 'buddypress' ); ?></h3>
631
 
632
+ <div class="bp-feature">
633
+ <span class="dashicons dashicons-calendar" aria-hidden="true"></span>
634
+ <h4 class="feature-title"><?php esc_html_e( 'Improved Profile Date Field', 'buddypress' ); ?></h4>
635
+ <p><?php _e( 'New Date Field settings, "Date format" and "Range", make it easier for site administrators to decide how date-based data will be collected and displayed.', 'buddypress' ); ?></p>
636
+ </div>
637
 
638
+ <div class="bp-feature opposite">
639
+ <span class="dashicons dashicons-groups" aria-hidden="true"></span>
640
+ <h4 class="feature-title"><?php esc_html_e( 'Group Types Integration in Templates', 'buddypress' ); ?></h4>
641
+ <p><?php
642
+ /* translators: %s: URL to the BuddyPress Codex article */
643
+ printf( __( 'Enable developers to show Group Types on the front end as well as control where the group type information is rendered. <a href="%s">Learn how to implement this feature</a>.', 'buddypress' ),
644
+ 'https://codex.buddypress.org/developer/group-types/' );
645
+ ?></p>
646
+ </div>
647
 
648
+ <div class="bp-feature">
649
+ <span class="dashicons dashicons-admin-multisite" aria-hidden="true"></span>
650
+ <h4 class="feature-title"><?php esc_html_e( 'Use the Site Icon as Your Site&#8217;s Profile Photo', 'buddypress' ); ?></h4>
651
+ <p><?php
652
+ /* translators: %s: URL to the WordPress Codex article */
653
+ printf( __( 'BuddyPress sets the site admin&#8217;s profile photo as the default site profile photo on the Sites Directory page. You can now <a href="%s">use the Site Icon introduced in WordPress 4.3</a> instead.', 'buddypress' ),
654
+ 'https://codex.wordpress.org/Creating_a_Favicon#WordPress_Version_4.3_or_later' );
655
+ ?></p>
656
+ </div>
657
 
658
+ <div class="bp-feature opposite">
659
+ <span class="dashicons dashicons-filter" aria-hidden="true"></span>
660
+ <h4 class="title"><?php esc_html_e( 'Member Type and Group Type Filters in Users and Groups Admin Screens', 'buddypress' ); ?></h4>
661
+ <p><?php esc_html_e( 'Easily filter your members and groups by type and set types in bulk on the users and groups list tables in the dashboard.', 'buddypress' ); ?></p>
662
+ </div>
663
 
664
+ <div class="bp-feature">
665
+ <span class="dashicons dashicons-clock" aria-hidden="true"></span>
666
+ <h4 class="feature-title"><?php esc_html_e( 'Localized Timestamps', 'buddypress' ); ?></h4>
667
+ <p><?php esc_html_e( 'Fix inaccurate timestamps due to time zones or page caching with new client-side timestamp handling.', 'buddypress' ); ?></p>
668
+ </div>
669
 
670
+ <div class="bp-feature opposite">
671
+ <span class="dashicons dashicons-email" aria-hidden="true"></span>
672
+ <h4 class="feature-title"><?php esc_html_e( 'Links to Unsubscribe from Emails', 'buddypress' ); ?></h4>
673
+ <p><?php esc_html_e( 'Improve user experience by facilitating the removal of any or all subscriptions via new email tokens and unsubscribe links.', 'buddypress' ); ?></p>
674
+ </div>
675
 
676
  <div class="bp-feature">
677
+ <span class="dashicons dashicons-admin-page" aria-hidden="true"></span>
678
+ <h4 class="title"><?php esc_html_e( 'Use WP Page Names for Headings of BP Directory Pages', 'buddypress' ); ?></h4>
679
+ <p><?php esc_html_e( 'Whatever you choose as the title of your Activity, Sites, Members, or Groups directory pages on the back end, is what you&#8217;ll get as the heading on the front end.', 'buddypress' ); ?></p>
680
  </div>
681
 
682
  <div class="bp-feature opposite">
683
+ <span class="dashicons dashicons-universal-access" aria-hidden="true"></span>
684
+ <h4 class="title"><?php esc_html_e( 'Accessibility Updates for the Front End and Back End', 'buddypress' ); ?></h4>
685
+ <p><?php esc_html_e( 'Continued improvements for universal access help make BuddyPress back- and front-end screens usable for everyone (and on more devices).', 'buddypress' ); ?></p>
686
  </div>
687
 
688
  <div class="bp-feature">
689
+ <span class="dashicons dashicons-screenoptions" aria-hidden="true"></span>
690
+ <h4 class="title"><?php
691
+ /* translators: %s: BP_Button */
692
+ printf( __( 'Refactored %s Class to Accept New Arguments', 'buddypress' ), '<code>BP_Button</code>' );
693
+ ?></h4>
694
+ <p><?php esc_html_e( 'Provides developers with improved syntax and more control over the rendering of buttons.', 'buddypress' ); ?></p>
695
  </div>
696
 
697
  <div class="bp-feature opposite">
698
+ <span class="dashicons dashicons-image-filter" aria-hidden="true"></span>
699
+ <h4 class="title"><?php esc_html_e( 'Improvements to a Single Group&#8217;s Management Screens', 'buddypress' ); ?></h4>
700
+ <p><?php esc_html_e( 'Improved markup, new modular group management templates, and a new member search form are just some of the enhancements added to the single group admin screens.', 'buddypress' ); ?></p>
701
  </div>
 
702
 
703
+ <div class="bp-feature">
704
+ <span class="dashicons dashicons-groups" aria-hidden="true"></span>
705
+ <h4 class="title"><?php
706
+ /* translators: %s: parent_id */
707
+ printf( __( 'Support for Querying for Groups by New Column %s', 'buddypress' ), '<code>parent_id</code>' );
708
+ ?></h4>
709
+ <p><?php esc_html_e( 'Query support for hierarchical groups makes it much easier for developers to add custom front-end functionality.', 'buddypress' ); ?></p>
710
+ </div>
 
 
711
 
712
+ <div class="bp-feature opposite">
713
+ <span class="dashicons dashicons-chart-bar" aria-hidden="true"></span>
714
+ <h4 class="title"><?php esc_html_e( 'Many, Many Performance Improvements', 'buddypress' ); ?></h4>
715
+ <p><?php
716
+ /* translators: %s: bp_get_user_groups() */
717
+ printf( __( 'Improved performance by removing extra database queries, adding new cache calls, and removing the number of loops in %s.', 'buddypress' ), '<code>bp_get_user_groups()</code>' );
718
+ ?></p>
 
719
  </div>
720
 
721
+
722
+ <div class="clear"></div>
723
+ </div>
724
+
725
+ <div class="bp-changelog-section">
726
+ <h3 class="changelog-title"><?php esc_html_e( 'And so much more!', 'buddypress' ); ?></h3>
727
+ <p class="bp-changelog-url"><?php
728
+ /* translators: %s: URL to the BuddyPress Codex article */
729
+ printf( __( '<a href="%s">Changelog for BuddyPress 2.7.</a>', 'buddypress' ),
730
+ 'https://codex.buddypress.org/releases/version-2-7-0/' );
731
+ ?></p>
732
+
733
  </div>
734
 
735
  <div class="bp-assets">
765
  <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h3>
766
  <ul class="wp-people-group " id="wp-people-group-project-leaders">
767
  <li class="wp-person" id="wp-person-johnjamesjacoby">
768
+ <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7a2644fb53ae2f7bfd7143b504af396c?s=60">
769
  John James Jacoby</a>
770
  <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span>
771
  </li>
781
  </li>
782
  </ul>
783
 
784
+ <h3 class="wp-people-group"><?php _e( 'BuddyPress Team', 'buddypress' ); ?></h3>
785
  <ul class="wp-people-group " id="wp-people-group-core-team">
786
+ <li class="wp-person" id="wp-person-mercime">
787
+ <a class="web" href="https://profiles.wordpress.org/mercime"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/fae451be6708241627983570a1a1817a?s=60">
788
+ Mercime</a>
789
+ <span class="title"><?php _e( '2.7 Release Lead', 'buddypress' ); ?></span>
790
+ </li>
791
  <li class="wp-person" id="wp-person-r-a-y">
792
  <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bfa556a62b5bfac1012b6ba5f42ebfa?s=60">
793
  Ray</a>
798
  Mathieu Viet</a>
799
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
800
  </li>
 
 
 
 
 
801
  <li class="wp-person" id="wp-person-dcavins">
802
  <a class="web" href="https://profiles.wordpress.org/dcavins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5fa7e83d59cb45ebb616235a176595a?s=60">
803
  David Cavins</a>
813
  Hugo</a>
814
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
815
  </li>
 
 
 
 
816
  <li class="wp-person" id="wp-person-henry-wright">
817
  <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=60">
818
  Henry Wright</a>
819
+ <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
820
  </li>
821
  <li class="wp-person" id="wp-person-danbp">
822
  <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=60">
823
  danbp</a>
824
+ <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
825
  </li>
826
  <li class="wp-person" id="wp-person-shanebp">
827
  <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=60">
828
  shanebp</a>
829
+ <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
830
  </li>
831
+ </ul>
832
+
833
+ <h3 class="wp-people-group"><?php _e( '&#x1f31f;Recent Rockstars&#x1f31f;', 'buddypress' ); ?></h3>
834
+ <ul class="wp-people-group " id="wp-people-group-rockstars">
835
  <li class="wp-person" id="wp-person-netweb">
836
  <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=60">
837
  Stephen Edgar</a>
856
  <a class="web" href="https://profiles.wordpress.org/ramiy"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ce2a269e424156d79cb0c4e1d4d82db1?s=60">
857
  Rami Yushuvaev</a>
858
  </li>
859
+ <li class="wp-person" id="wp-person-slaffik">
860
+ <a class="web" href="https://profiles.wordpress.org/slaffik/"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/61fb07ede3247b63f19015f200b3eb2c?s=60">
861
+ Slava Abakumov</a>
862
+ </li>
863
  </ul>
864
 
865
  <h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3>
866
  <p class="wp-credits-list">
867
+ <a href="https://profiles.wordpress.org/jorbin/">Aaron Jorbin (jorbin)</a>,
868
+ <a href="https://profiles.wordpress.org/abwebstudio1/">abwebstudio1</a>,
869
  <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>,
870
+ <a href="https://profiles.wordpress.org/sbrajesh/">Brajesh Singh (sbrajesh)</a>,
871
+ <a href="https://profiles.wordpress.org/needle/">Christian Wach (needle)</a>,
872
+ <a href="https://profiles.wordpress.org/danbp/">danbp</a>,
873
+ <a href="https://profiles.wordpress.org/danielhuesken/">Daniel Hüsken (danielhuesken)</a>,
874
  <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>,
875
+ <a href="https://profiles.wordpress.org/demon_ru/">demon_ru</a>,
876
  <a href="https://profiles.wordpress.org/wpdennis/">Dennis (wpdennis)</a>,
877
+ <a href="https://profiles.wordpress.org/ericlewis/">Eric Andrew Lewis (ericlewis)</a>,
 
 
 
 
878
  <a href="https://profiles.wordpress.org/henrywright/">Henry Wright (henry.wright)</a>,
879
+ <a href="https://profiles.wordpress.org/herbovec/">herbovec</a>,
880
  <a href="https://profiles.wordpress.org/hnla/">Hugo (hnla)</a>,
881
+ <a href="https://profiles.wordpress.org/jdgrimes/">J.D. Grimes (jdgrimes)</a>,
882
  <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>,
883
+ <a href="https://profiles.wordpress.org/dunhakdis/">Joseph G. (dunhakdis)</a>,
884
+ <a href="https://profiles.wordpress.org/kitsunesolar/">kitsunesolar</a>,
885
  <a href="https://profiles.wordpress.org/lakrisgubben/">lakrisgubben</a>,
886
  <a href="https://profiles.wordpress.org/Offereins">Laurens Offereins (Offereins)</a>,
 
887
  <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>,
888
  <a href="https://profiles.wordpress.org/mercime/">mercime</a>,
889
  <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith (tw2113)</a>,
890
+ <a href="https://profiles.wordpress.org/michaelbeil/">Michael Beil (michaelbeil)</a>,
891
+ <a href="https://profiles.wordpress.org/swissspidy/">Pascal Birchler (swissspidy)</a>,
 
 
 
892
  <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>,
 
893
  <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>,
894
+ <a href="https://profiles.wordpress.org/espellcaste/">Renato Alves (espellcaste)</a>,
895
+ <a href="https://profiles.wordpress.org/scharc/">scharc</a>,
896
+ <a href="https://profiles.wordpress.org/slaffik/">Slava Abakumov (slaffik)</a>,
897
+ <a href="https://profiles.wordpress.org/spenser4551/">spenser4551</a>,
 
898
  <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>,
899
+ <a href="https://profiles.wordpress.org/svenl77/">Sven Lehnert (svenl77)</a>,
900
  <a href="https://profiles.wordpress.org/tharsheblows/">tharsheblows</a>,
901
+ <a href="https://profiles.wordpress.org/thomaslhotta/">thomaslhotta</a>,
902
+ <a href="https://profiles.wordpress.org/tomas711/">tomas711</a>,
903
+ <a href="https://profiles.wordpress.org/venturavan2/">venturavan2</a>,
904
+ <a href="https://profiles.wordpress.org/wordpressrene/">wordpressrene</a>.
905
  </p>
906
 
907
  <h3 class="wp-people-group"><?php _e( '&#x1f496;With our thanks to these Open Source projects&#x1f496;', 'buddypress' ); ?></h3>
909
  <a href="https://github.com/ichord/At.js">At.js</a>,
910
  <a href="https://bbpress.org">bbPress</a>,
911
  <a href="https://github.com/ichord/Caret.js">Caret.js</a>,
912
+ <a href="https://tedgoas.github.io/Cerberus/">Cerberus</a>,
913
+ <a href="https://ionicons.com/">Ionicons</a>,
914
  <a href="https://github.com/carhartl/jquery-cookie">jquery.cookie</a>,
915
+ <a href="https://mattbradley.github.io/livestampjs/">Livestamp.js</a>,
916
  <a href="https://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>,
917
+ <a href="http://momentjs.com/">Moment.js</a>,
918
  <a href="https://wordpress.org">WordPress</a>.
919
  </p>
920
 
932
 
933
  // Switch welcome text based on whether this is a new installation or not.
934
  $welcome_text = ( self::is_new_install() )
935
+ ? __( 'Thank you for installing BuddyPress! BuddyPress helps site builders and WordPress developers add community features to their websites, with user profile fields, activity streams, messaging, and notifications.', 'buddypress' )
936
  : __( 'Thank you for updating! BuddyPress %s has many new features that you will enjoy.', 'buddypress' );
937
 
938
  ?>
982
  *
983
  * @since 2.6.0
984
  *
985
+ * @param array $columns Current column data.
986
  * @return array
987
  */
988
  public function emails_register_situation_column( $columns = array() ) {
bp-core/classes/class-bp-attachment-avatar.php CHANGED
@@ -61,7 +61,6 @@ class BP_Attachment_Avatar extends BP_Attachment {
61
  * Set Upload Dir data for avatars.
62
  *
63
  * @since 2.3.0
64
- *
65
  */
66
  public function set_upload_dir() {
67
  if ( bp_core_avatar_upload_path() && bp_core_avatar_url() ) {
@@ -81,8 +80,7 @@ class BP_Attachment_Avatar extends BP_Attachment {
81
  *
82
  * @since 2.3.0
83
  *
84
- *
85
- * @param array $file the temporary file attributes (before it has been moved).
86
  * @return array the file with extra errors if needed.
87
  */
88
  public function validate_upload( $file = array() ) {
@@ -110,7 +108,6 @@ class BP_Attachment_Avatar extends BP_Attachment {
110
  * @since 2.3.0
111
  * @since 2.4.0 Add the $ui_available_width parameter, to inform about the Avatar UI width.
112
  *
113
- *
114
  * @param string $file The absolute path to the file.
115
  * @param int $ui_available_width Available width for the UI.
116
  * @return mixed
61
  * Set Upload Dir data for avatars.
62
  *
63
  * @since 2.3.0
 
64
  */
65
  public function set_upload_dir() {
66
  if ( bp_core_avatar_upload_path() && bp_core_avatar_url() ) {
80
  *
81
  * @since 2.3.0
82
  *
83
+ * @param array $file the temporary file attributes (before it has been moved).
 
84
  * @return array the file with extra errors if needed.
85
  */
86
  public function validate_upload( $file = array() ) {
108
  * @since 2.3.0
109
  * @since 2.4.0 Add the $ui_available_width parameter, to inform about the Avatar UI width.
110
  *
 
111
  * @param string $file The absolute path to the file.
112
  * @param int $ui_available_width Available width for the UI.
113
  * @return mixed
bp-core/classes/class-bp-attachment.php CHANGED
@@ -197,17 +197,17 @@ abstract class BP_Attachment {
197
  *
198
  * @since 2.3.0
199
  *
200
- *
201
- * @param array $file The appropriate entry the from $_FILES superglobal.
202
- * @param string $upload_dir_filter A specific filter to be applied to 'upload_dir' (optional).
203
- * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null.
204
  * @return array On success, returns an associative array of file attributes.
205
  * On failure, returns an array containing the error message
206
  * (eg: array( 'error' => $message ) )
207
  */
208
  public function upload( $file, $upload_dir_filter = '', $time = null ) {
209
  /**
210
- * Upload action and the file input name are required parameters
 
211
  * @see BP_Attachment:__construct()
212
  */
213
  if ( empty( $this->action ) || empty( $this->file_input ) ) {
@@ -320,7 +320,7 @@ abstract class BP_Attachment {
320
  *
321
  * @since 2.3.0
322
  *
323
- * @param array $file The temporary file attributes (before it has been moved).
324
  * @return array The file.
325
  */
326
  public function validate_upload( $file = array() ) {
@@ -345,7 +345,7 @@ abstract class BP_Attachment {
345
  *
346
  * regarding to context
347
  *
348
- * @param array $upload_dir The original Uploads dir.
349
  * @return array The upload directory data.
350
  */
351
  public function upload_dir_filter( $upload_dir = array() ) {
@@ -522,9 +522,9 @@ abstract class BP_Attachment {
522
  /**
523
  * Get full data for an image
524
  *
525
- * @since 2.4.0
526
  *
527
- * @param string $file Absolute path to the uploaded image.
528
  * @return bool|array An associate array containing the width, height and metadatas.
529
  * False in case an important image attribute is missing.
530
  */
@@ -574,9 +574,9 @@ abstract class BP_Attachment {
574
  /**
575
  * Filter here to add/remove/edit data to the image full data
576
  *
577
- * @since 2.4.0
578
  *
579
- * @param array $image_data An associate array containing the width, height and metadatas.
580
  */
581
  return apply_filters( 'bp_attachments_get_image_data', $image_data );
582
  }
@@ -584,7 +584,7 @@ abstract class BP_Attachment {
584
  /**
585
  * Edit an image file to resize it or rotate it
586
  *
587
- * @since 2.4.0
588
  *
589
  * @param string $attachment_type The attachment type (eg: avatar or cover_image). Required.
590
  * @param array $args {
197
  *
198
  * @since 2.3.0
199
  *
200
+ * @param array $file The appropriate entry the from $_FILES superglobal.
201
+ * @param string $upload_dir_filter A specific filter to be applied to 'upload_dir' (optional).
202
+ * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null.
 
203
  * @return array On success, returns an associative array of file attributes.
204
  * On failure, returns an array containing the error message
205
  * (eg: array( 'error' => $message ) )
206
  */
207
  public function upload( $file, $upload_dir_filter = '', $time = null ) {
208
  /**
209
+ * Upload action and the file input name are required parameters.
210
+ *
211
  * @see BP_Attachment:__construct()
212
  */
213
  if ( empty( $this->action ) || empty( $this->file_input ) ) {
320
  *
321
  * @since 2.3.0
322
  *
323
+ * @param array $file The temporary file attributes (before it has been moved).
324
  * @return array The file.
325
  */
326
  public function validate_upload( $file = array() ) {
345
  *
346
  * regarding to context
347
  *
348
+ * @param array $upload_dir The original Uploads dir.
349
  * @return array The upload directory data.
350
  */
351
  public function upload_dir_filter( $upload_dir = array() ) {
522
  /**
523
  * Get full data for an image
524
  *
525
+ * @since 2.4.0
526
  *
527
+ * @param string $file Absolute path to the uploaded image.
528
  * @return bool|array An associate array containing the width, height and metadatas.
529
  * False in case an important image attribute is missing.
530
  */
574
  /**
575
  * Filter here to add/remove/edit data to the image full data
576
  *
577
+ * @since 2.4.0
578
  *
579
+ * @param array $image_data An associate array containing the width, height and metadatas.
580
  */
581
  return apply_filters( 'bp_attachments_get_image_data', $image_data );
582
  }
584
  /**
585
  * Edit an image file to resize it or rotate it
586
  *
587
+ * @since 2.4.0
588
  *
589
  * @param string $attachment_type The attachment type (eg: avatar or cover_image). Required.
590
  * @param array $args {
bp-core/classes/class-bp-button.php CHANGED
@@ -14,35 +14,35 @@ defined( 'ABSPATH' ) || exit;
14
  * API to create BuddyPress buttons.
15
  *
16
  * @since 1.2.6
 
 
 
 
17
  *
18
  * @param array $args {
19
  * Array of arguments.
20
  *
21
  * @type string $id String describing the button type.
22
- * @type string $component The name of the component the button belongs to.
23
- * Default: 'core'.
24
- * @type bool $must_be_logged_in Optional. Does the user need to be logged
25
- * in to see this button? Default: true.
26
- * @type bool $block_self Optional. True if the button should be hidden
27
- * when a user is viewing his own profile.
28
- * Default: true.
29
- * @type string|bool $wrapper Optional. HTML element type that should wrap
30
- * the button: 'div', 'span', 'p', or 'li'.
31
- * False for no wrapper at all. Default: 'div'.
32
- * @type string $wrapper_id Optional. DOM ID of the button wrapper element.
33
- * Default: ''.
34
- * @type string $wrapper_class Optional. DOM class of the button wrapper
35
- * element. Default: ''.
36
- * @type string $link_href Optional. Destination link of the button.
37
- * Default: ''.
38
- * @type string $link_class Optional. DOM class of the button. Default: ''.
39
- * @type string $link_id Optional. DOM ID of the button. Default: ''.
40
- * @type string $link_rel Optional. DOM 'rel' attribute of the button.
41
- * Default: ''.
42
- * @type string $link_title Optional. Title attribute of the button.
43
- * Default: ''.
44
- * @type string $link_text Optional. Text to appear on the button.
45
- * Default: ''.
46
  * }
47
  */
48
  class BP_Button {
@@ -52,6 +52,8 @@ class BP_Button {
52
  /**
53
  * The button ID.
54
  *
 
 
55
  * @var string
56
  */
57
  public $id = '';
@@ -59,6 +61,8 @@ class BP_Button {
59
  /**
60
  * The name of the component that the button belongs to.
61
  *
 
 
62
  * @var string
63
  */
64
  public $component = 'core';
@@ -66,6 +70,8 @@ class BP_Button {
66
  /**
67
  * Does the user need to be logged in to see this button?
68
  *
 
 
69
  * @var bool
70
  */
71
  public $must_be_logged_in = true;
@@ -73,22 +79,88 @@ class BP_Button {
73
  /**
74
  * Whether the button should be hidden when viewing your own profile.
75
  *
 
 
76
  * @var bool
77
  */
78
  public $block_self = true;
79
 
80
  /** Wrapper ***************************************************************/
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * The type of DOM element to use for a wrapper.
84
  *
85
- * @var string|bool 'div', 'span', 'p', 'li', or false for no wrapper.
 
 
 
86
  */
87
  public $wrapper = 'div';
88
 
89
  /**
90
  * The DOM class of the button wrapper.
91
  *
 
 
 
92
  * @var string
93
  */
94
  public $wrapper_class = '';
@@ -96,15 +168,19 @@ class BP_Button {
96
  /**
97
  * The DOM ID of the button wrapper.
98
  *
 
 
 
99
  * @var string
100
  */
101
  public $wrapper_id = '';
102
 
103
- /** Button ****************************************************************/
104
-
105
  /**
106
  * The destination link of the button.
107
  *
 
 
 
108
  * @var string
109
  */
110
  public $link_href = '';
@@ -112,6 +188,9 @@ class BP_Button {
112
  /**
113
  * The DOM class of the button link.
114
  *
 
 
 
115
  * @var string
116
  */
117
  public $link_class = '';
@@ -119,6 +198,9 @@ class BP_Button {
119
  /**
120
  * The DOM ID of the button link.
121
  *
 
 
 
122
  * @var string
123
  */
124
  public $link_id = '';
@@ -126,6 +208,9 @@ class BP_Button {
126
  /**
127
  * The DOM rel value of the button link.
128
  *
 
 
 
129
  * @var string
130
  */
131
  public $link_rel = '';
@@ -133,22 +218,12 @@ class BP_Button {
133
  /**
134
  * Title of the button link.
135
  *
136
- * @var string
137
- */
138
- public $link_title = '';
139
-
140
- /**
141
- * The contents of the button link.
142
  *
143
  * @var string
144
  */
145
- public $link_text = '';
146
-
147
- /** HTML result
148
- *
149
- * @var string
150
- */
151
- public $contents = '';
152
 
153
  /** Methods ***************************************************************/
154
 
@@ -163,76 +238,95 @@ class BP_Button {
163
 
164
  $r = wp_parse_args( $args, get_class_vars( __CLASS__ ) );
165
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  // Required button properties.
167
  $this->id = $r['id'];
168
  $this->component = $r['component'];
169
  $this->must_be_logged_in = (bool) $r['must_be_logged_in'];
170
  $this->block_self = (bool) $r['block_self'];
171
- $this->wrapper = $r['wrapper'];
172
 
173
- // $id and $component are required
174
- if ( empty( $r['id'] ) || empty( $r['component'] ) )
175
- return false;
176
-
177
- // No button if component is not active.
178
- if ( ! bp_is_active( $this->component ) )
179
  return false;
 
180
 
181
  // No button for guests if must be logged in.
182
- if ( true == $this->must_be_logged_in && ! is_user_logged_in() )
183
  return false;
 
184
 
185
  // The block_self property.
186
  if ( true == $this->block_self ) {
187
- // No button if you are the current user in a members loop
188
- // This condition takes precedence, because members loops
189
- // can be found on user profiles.
 
 
 
190
  if ( bp_get_member_user_id() ) {
191
  if ( is_user_logged_in() && bp_loggedin_user_id() == bp_get_member_user_id() ) {
192
  return false;
193
  }
194
 
195
- // No button if viewing your own profile (and not in
196
- // a members loop).
197
  } elseif ( bp_is_my_profile() ) {
198
  return false;
199
  }
200
  }
201
 
202
- // Wrapper properties.
203
- if ( false !== $this->wrapper ) {
204
-
205
- // Wrapper ID.
206
- if ( !empty( $r['wrapper_id'] ) ) {
207
- $this->wrapper_id = ' id="' . $r['wrapper_id'] . '"';
208
  }
209
 
210
- // Wrapper class.
211
- if ( !empty( $r['wrapper_class'] ) ) {
212
- $this->wrapper_class = ' class="generic-button ' . $r['wrapper_class'] . '"';
213
- } else {
214
- $this->wrapper_class = ' class="generic-button"';
 
215
  }
216
 
 
 
 
 
 
 
217
  // Set before and after.
218
- $before = '<' . $r['wrapper'] . $this->wrapper_class . $this->wrapper_id . '>';
219
- $after = '</' . $r['wrapper'] . '>';
220
 
221
- // No wrapper.
222
  } else {
223
  $before = $after = '';
224
  }
225
 
226
- // Link properties.
227
- if ( !empty( $r['link_id'] ) ) $this->link_id = ' id="' . $r['link_id'] . '"';
228
- if ( !empty( $r['link_href'] ) ) $this->link_href = ' href="' . $r['link_href'] . '"';
229
- if ( !empty( $r['link_title'] ) ) $this->link_title = ' title="' . $r['link_title'] . '"';
230
- if ( !empty( $r['link_rel'] ) ) $this->link_rel = ' rel="' . $r['link_rel'] . '"';
231
- if ( !empty( $r['link_class'] ) ) $this->link_class = ' class="' . $r['link_class'] . '"';
232
- if ( !empty( $r['link_text'] ) ) $this->link_text = $r['link_text'];
 
 
 
233
 
234
  // Build the button.
235
- $this->contents = $before . '<a'. $this->link_href . $this->link_title . $this->link_id . $this->link_rel . $this->link_class . '>' . $this->link_text . '</a>' . $after;
236
 
237
  /**
238
  * Filters the button based on class parameters.
@@ -241,15 +335,76 @@ class BP_Button {
241
  * allows button to be manipulated externally.
242
  *
243
  * @since 1.2.6
 
244
  *
245
  * @param string $contents HTML being used for the button.
246
  * @param BP_Button $this Current BP_Button instance.
247
  * @param string $before HTML appended before the actual button.
248
  * @param string $after HTML appended after the actual button.
 
249
  */
250
- $this->contents = apply_filters( 'bp_button_' . $this->component . '_' . $this->id, $this->contents, $this, $before, $after );
251
  }
252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  /**
254
  * Return the markup for the generated button.
255
  *
14
  * API to create BuddyPress buttons.
15
  *
16
  * @since 1.2.6
17
+ * @since 2.7.0 Introduced $parent_element, $parent_attr, $button_element, $button_attr as
18
+ * $args parameters.
19
+ * Deprecated $wrapper, $wrapper_id, $wrapper_class, $link_href, $link_class,
20
+ * $link_id, $link_rel, $link_title as $args params.
21
  *
22
  * @param array $args {
23
  * Array of arguments.
24
  *
25
  * @type string $id String describing the button type.
26
+ * @type string $component The name of the component the button belongs to. Default: 'core'.
27
+ * @type bool $must_be_logged_in Optional. Does the user need to be logged in to see this button? Default:
28
+ * true.
29
+ * @type bool $block_self Optional. True if the button should be hidden when a user is viewing his
30
+ * own profile. Default: true.
31
+ * @type string $parent_element Optional. Parent element to wrap button around. Default: 'div'.
32
+ * @type array $parent_attr Optional. Element attributes for parent element. Set whatever attributes
33
+ * like 'id', 'class' as array keys.
34
+ * @type string $button_element Optional. Button element. Default: 'a'.
35
+ * @type array $button_attr Optional. Button attributes. Set whatever attributes like 'id', 'class' as
36
+ * array keys.
37
+ * @type string $link_text Optional. Text to appear on the button. Default: ''.
38
+ * @type string|bool $wrapper Deprecated. Use $parent_element instead.
39
+ * @type string $wrapper_id Deprecated. Use $parent_attr and set 'id' as array key.
40
+ * @type string $wrapper_class Deprecated. Use $parent_attr and set 'class' as array key.
41
+ * @type string $link_href Deprecated. Use $button_attr and set 'href' as array key.
42
+ * @type string $link_class Deprecated. Use $button_attr and set 'class' as array key.
43
+ * @type string $link_id Deprecated. Use $button_attr and set 'id' as array key.
44
+ * @type string $link_rel Deprecated. Use $button_attr and set 'rel' as array key.
45
+ * @type string $link_title Deprecated. Use $button_attr and set 'title' as array key.
 
 
 
 
46
  * }
47
  */
48
  class BP_Button {
52
  /**
53
  * The button ID.
54
  *
55
+ * @since 1.2.6
56
+ *
57
  * @var string
58
  */
59
  public $id = '';
61
  /**
62
  * The name of the component that the button belongs to.
63
  *
64
+ * @since 1.2.6
65
+ *
66
  * @var string
67
  */
68
  public $component = 'core';
70
  /**
71
  * Does the user need to be logged in to see this button?
72
  *
73
+ * @since 1.2.6
74
+ *
75
  * @var bool
76
  */
77
  public $must_be_logged_in = true;
79
  /**
80
  * Whether the button should be hidden when viewing your own profile.
81
  *
82
+ * @since 1.2.6
83
+ *
84
  * @var bool
85
  */
86
  public $block_self = true;
87
 
88
  /** Wrapper ***************************************************************/
89
 
90
+ /**
91
+ * Parent element to wrap button around.
92
+ *
93
+ * @since 2.7.0
94
+ *
95
+ * @var string Default: 'div'.
96
+ */
97
+ public $parent_element = '';
98
+
99
+ /**
100
+ * Element attributes for parent element.
101
+ *
102
+ * @since 2.7.0
103
+ *
104
+ * @var array Set whatever attributes like 'id', 'class' as array key.
105
+ */
106
+ public $parent_attr = array();
107
+
108
+ /** Button ****************************************************************/
109
+
110
+ /**
111
+ * Button element.
112
+ *
113
+ * @since 2.7.0
114
+ *
115
+ * @var string Default: 'a'.
116
+ */
117
+ public $button_element = 'a';
118
+
119
+ /**
120
+ * Button attributes.
121
+ *
122
+ * @since 2.7.0
123
+ *
124
+ * @var array Set whatever attributes like 'id', 'href' as array key.
125
+ */
126
+ public $button_attr = array();
127
+
128
+ /**
129
+ * The contents of the button link.
130
+ *
131
+ * @since 1.2.6
132
+ *
133
+ * @var string
134
+ */
135
+ public $link_text = '';
136
+
137
+ /**
138
+ * HTML result.
139
+ *
140
+ * @since 1.2.6
141
+ *
142
+ * @var string
143
+ */
144
+ public $contents = '';
145
+
146
+ /** Deprecated ***********************************************************/
147
+
148
  /**
149
  * The type of DOM element to use for a wrapper.
150
  *
151
+ * @since 1.2.6
152
+ * @deprecated 2.7.0 Use $parent_element instead.
153
+ *
154
+ * @var string|bool
155
  */
156
  public $wrapper = 'div';
157
 
158
  /**
159
  * The DOM class of the button wrapper.
160
  *
161
+ * @since 1.2.6
162
+ * @deprecated 2.7.0 Set 'class' key in $parent_attr instead.
163
+ *
164
  * @var string
165
  */
166
  public $wrapper_class = '';
168
  /**
169
  * The DOM ID of the button wrapper.
170
  *
171
+ * @since 1.2.6
172
+ * @deprecated 2.7.0 Set 'id' key in $parent_attr instead.
173
+ *
174
  * @var string
175
  */
176
  public $wrapper_id = '';
177
 
 
 
178
  /**
179
  * The destination link of the button.
180
  *
181
+ * @since 1.2.6
182
+ * @deprecated 2.7.0 Set 'href' key in $button_attr instead.
183
+ *
184
  * @var string
185
  */
186
  public $link_href = '';
188
  /**
189
  * The DOM class of the button link.
190
  *
191
+ * @since 1.2.6
192
+ * @deprecated 2.7.0 Set 'class' key in $button_attr instead.
193
+ *
194
  * @var string
195
  */
196
  public $link_class = '';
198
  /**
199
  * The DOM ID of the button link.
200
  *
201
+ * @since 1.2.6
202
+ * @deprecated 2.7.0 Set 'id' key in $button_attr instead.
203
+ *
204
  * @var string
205
  */
206
  public $link_id = '';
208
  /**
209
  * The DOM rel value of the button link.
210
  *
211
+ * @since 1.2.6
212
+ * @deprecated 2.7.0 Set 'rel' key in $button_attr instead.
213
+ *
214
  * @var string
215
  */
216
  public $link_rel = '';
218
  /**
219
  * Title of the button link.
220
  *
221
+ * @since 1.2.6
222
+ * @deprecated 2.7.0 Set 'title' key in $button_attr instead.
 
 
 
 
223
  *
224
  * @var string
225
  */
226
+ public $link_title = '';
 
 
 
 
 
 
227
 
228
  /** Methods ***************************************************************/
229
 
238
 
239
  $r = wp_parse_args( $args, get_class_vars( __CLASS__ ) );
240
 
241
+ // Backward compatibility with deprecated parameters.
242
+ $r = $this->backward_compatibility_args( $r );
243
+
244
+ // Deprecated. Subject to removal in a future release.
245
+ $this->wrapper = $r['wrapper'];
246
+ if ( !empty( $r['link_id'] ) ) $this->link_id = ' id="' . $r['link_id'] . '"';
247
+ if ( !empty( $r['link_href'] ) ) $this->link_href = ' href="' . $r['link_href'] . '"';
248
+ if ( !empty( $r['link_title'] ) ) $this->link_title = ' title="' . $r['link_title'] . '"';
249
+ if ( !empty( $r['link_rel'] ) ) $this->link_rel = ' rel="' . $r['link_rel'] . '"';
250
+ if ( !empty( $r['link_class'] ) ) $this->link_class = ' class="' . $r['link_class'] . '"';
251
+ if ( !empty( $r['link_text'] ) ) $this->link_text = $r['link_text'];
252
+
253
  // Required button properties.
254
  $this->id = $r['id'];
255
  $this->component = $r['component'];
256
  $this->must_be_logged_in = (bool) $r['must_be_logged_in'];
257
  $this->block_self = (bool) $r['block_self'];
 
258
 
259
+ // $id and $component are required and component must be active.
260
+ if ( empty( $r['id'] ) || empty( $r['component'] ) || ! bp_is_active( $this->component ) ) {
 
 
 
 
261
  return false;
262
+ }
263
 
264
  // No button for guests if must be logged in.
265
+ if ( true == $this->must_be_logged_in && ! is_user_logged_in() ) {
266
  return false;
267
+ }
268
 
269
  // The block_self property.
270
  if ( true == $this->block_self ) {
271
+ /*
272
+ * No button if you are the current user in a members loop.
273
+ *
274
+ * This condition takes precedence, because members loops can be found on user
275
+ * profiles.
276
+ */
277
  if ( bp_get_member_user_id() ) {
278
  if ( is_user_logged_in() && bp_loggedin_user_id() == bp_get_member_user_id() ) {
279
  return false;
280
  }
281
 
282
+ // No button if viewing your own profile (and not in a members loop).
 
283
  } elseif ( bp_is_my_profile() ) {
284
  return false;
285
  }
286
  }
287
 
288
+ // Should we use a parent element?
289
+ if ( ! empty( $r['parent_element'] ) ) {
290
+ if ( ! isset( $r['parent_attr']['class'] ) ) {
291
+ $r['parent_attr']['class'] = '';
 
 
292
  }
293
 
294
+ // Always add 'generic-button' class.
295
+ if ( false === strpos( $r['parent_attr']['class'], 'generic-button' ) ) {
296
+ if ( ! empty( $r['parent_attr']['class'] ) ) {
297
+ $r['parent_attr']['class'] .= ' ';
298
+ }
299
+ $r['parent_attr']['class'] .= 'generic-button';
300
  }
301
 
302
+ // Render parent element attributes.
303
+ $parent_elem = new BP_Core_HTML_Element( array(
304
+ 'element' => $r['parent_element'],
305
+ 'attr' => $r['parent_attr']
306
+ ) );
307
+
308
  // Set before and after.
309
+ $before = $parent_elem->get( 'open_tag' );
310
+ $after = $parent_elem->get( 'close_tag' );
311
 
312
+ // No parent element.
313
  } else {
314
  $before = $after = '';
315
  }
316
 
317
+ // Button properties.
318
+ $button = '';
319
+ if ( ! empty( $r['button_element'] ) ) {
320
+ $button = new BP_Core_HTML_Element( array(
321
+ 'element' => $r['button_element'],
322
+ 'attr' => $r['button_attr'],
323
+ 'inner_html' => ! empty( $r['link_text'] ) ? $r['link_text'] : ''
324
+ ) );
325
+ $button = $button->contents();
326
+ }
327
 
328
  // Build the button.
329
+ $this->contents = $before . $button . $after;
330
 
331
  /**
332
  * Filters the button based on class parameters.
335
  * allows button to be manipulated externally.
336
  *
337
  * @since 1.2.6
338
+ * @since 2.7.0 Added $r as a parameter.
339
  *
340
  * @param string $contents HTML being used for the button.
341
  * @param BP_Button $this Current BP_Button instance.
342
  * @param string $before HTML appended before the actual button.
343
  * @param string $after HTML appended after the actual button.
344
+ * @param array $r Parsed button arguments.
345
  */
346
+ $this->contents = apply_filters( 'bp_button_' . $this->component . '_' . $this->id, $this->contents, $this, $before, $after, $r );
347
  }
348
 
349
+
350
+ /**
351
+ * Provide backward compatibility for deprecated button arguments.
352
+ *
353
+ * @since 2.7.0.
354
+ *
355
+ * @param array $r See {@link BP_Button} class for full documentation.
356
+ * @return array
357
+ */
358
+ protected function backward_compatibility_args( $r = array() ) {
359
+ // Array of deprecated arguments.
360
+ $backpat_args = array(
361
+ 'wrapper', 'wrapper_class', 'wrapper_id',
362
+ 'link_href', 'link_class', 'link_id', 'link_rel', 'link_title'
363
+ );
364
+
365
+ foreach ( $backpat_args as $prop ) {
366
+ if ( empty( $r[ $prop ] ) ) {
367
+ continue;
368
+ }
369
+
370
+ $parent = $child = false;
371
+ $sep = strpos( $prop, '_' );
372
+
373
+ // Check if this is an attribute.
374
+ if ( false !== $sep ) {
375
+ $child = true;
376
+ $parent = substr( $prop, 0, $sep );
377
+ } else {
378
+ $parent = $prop;
379
+ }
380
+
381
+ if ( 'wrapper' === $parent ) {
382
+ $parent = 'parent';
383
+ } else {
384
+ $parent = 'button';
385
+ }
386
+
387
+ // Set element.
388
+ if ( false === $child && empty( $r[ "{$parent}_element" ] ) ) {
389
+ $r[ "{$parent}_element" ] = $r[ $prop ];
390
+
391
+ // Set attributes.
392
+ } elseif ( true === $child ) {
393
+ $new_prop = substr( $prop, strpos( $prop, '_' ) +1 );
394
+ if ( empty( $r[ "{$parent}_attr" ] ) ) {
395
+ $r[ "{$parent}_attr" ] = array();
396
+ }
397
+
398
+ if ( empty( $r[ "{$parent}_attr" ][ $new_prop ] ) ) {
399
+ $r[ "{$parent}_attr" ][ $new_prop ] = $r[ $prop ];
400
+ }
401
+ }
402
+ }
403
+
404
+ return $r;
405
+ }
406
+
407
+
408
  /**
409
  * Return the markup for the generated button.
410
  *
bp-core/classes/class-bp-core-html-element.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Core component classes.
4
+ *
5
+ * @package BuddyPress
6
+ * @subpackage Core
7
+ * @since 2.7.0
8
+ */
9
+
10
+ /**
11
+ * Generate markup for an HTML element.
12
+ *
13
+ * @since 2.7.0
14
+ */
15
+ class BP_Core_HTML_Element {
16
+ /**
17
+ * Open tag for an element.
18
+ *
19
+ * This would include attributes if applicable. eg. '<a href="" class="">'
20
+ *
21
+ * @since 2.7.0
22
+ *
23
+ * @var string
24
+ */
25
+ public $open_tag = '';
26
+
27
+ /**
28
+ * Inner HTML for an element.
29
+ *
30
+ * For example, this could be anchor text within an <a> element.
31
+ *
32
+ * @since 2.7.0
33
+ *
34
+ * @var string
35
+ */
36
+ public $inner_html = '';
37
+
38
+ /**
39
+ * Closing tag for an element.
40
+ *
41
+ * For example, "</a>".
42
+ *
43
+ * @since 2.7.0
44
+ *
45
+ * @var string
46
+ */
47
+ public $close_tag = '';
48
+
49
+ /**
50
+ * Constructor.
51
+ *
52
+ * @since 2.7.0
53
+ *
54
+ * @param array $r {
55
+ * An array of arguments.
56
+ * @type string $element The element to render. eg. 'a' for the anchor element.
57
+ * @type array $attr Optional. The element's attributes set as key/value pairs. eg.
58
+ * array( 'href' => 'http://example.com', 'class' => 'my-class' )
59
+ * @type string $inner_html Optional. The inner HTML for the element if applicable. Please note that
60
+ * this isn't sanitized, so you should use your own sanitization routine
61
+ * before using this parameter.
62
+ * }
63
+ */
64
+ public function __construct( $r = array() ) {
65
+ $elem = sanitize_html_class( $r['element'] );
66
+ if ( empty( $elem ) ) {
67
+ return;
68
+ }
69
+
70
+ // Render attributes.
71
+ $attributes = '';
72
+ foreach( (array) $r['attr'] as $attr => $val ) {
73
+ // If attribute is empty, skip.
74
+ if ( empty( $val ) ) {
75
+ continue;
76
+ }
77
+
78
+ if ( 'href' === $attr || 'formaction' === $attr || 'src' === $attr ) {
79
+ $val = esc_url( $val );
80
+ } elseif ( 'id' === $attr ) {
81
+ $val = sanitize_html_class( $val );
82
+ } else {
83
+ $val = esc_attr( $val );
84
+ }
85
+
86
+ $attributes .= sprintf( '%s="%s" ', sanitize_html_class( $attr ), $val );
87
+ }
88
+
89
+ // <input> / <img> is self-closing.
90
+ if ( 'input' === $elem || 'img' === $elem ) {
91
+ $this->open_tag = sprintf( '<%1$s %2$s />', $elem, $attributes );
92
+
93
+ // All other elements.
94
+ } else {
95
+ $this->open_tag = sprintf( '<%1$s %2$s>', $elem, $attributes );
96
+ $this->inner_html = ! empty( $r['inner_html'] ) ? $r['inner_html'] : '';
97
+ $this->close_tag = sprintf( '</%1$s>', $elem );
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Returns a property from this class.
103
+ *
104
+ * @since 2.7.0
105
+ *
106
+ * @param string $prop Property name. Either 'open_tag', 'inner_html', 'close_tag'.
107
+ * @return string
108
+ */
109
+ public function get( $prop = '' ) {
110
+ if ( ! isset( $this->{$prop} ) ) {
111
+ return '';
112
+ }
113
+
114
+ return $this->{$prop};
115
+ }
116
+
117
+ /**
118
+ * Returns full contents of HTML element.
119
+ *
120
+ * @since 2.7.0
121
+ *
122
+ * @return string
123
+ */
124
+ public function contents() {
125
+ return $this->open_tag . $this->inner_html . $this->close_tag;
126
+ }
127
+ }
bp-core/classes/class-bp-core-nav.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
- * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
@@ -56,7 +56,7 @@ class BP_Core_Nav {
56
  *
57
  * @since 2.6.0
58
  *
59
- * @param string $key The requested nav slug.
60
  * @return bool True if the nav item is set, false otherwise.
61
  */
62
  public function __isset( $key ) {
@@ -68,7 +68,7 @@ class BP_Core_Nav {
68
  *
69
  * @since 2.6.0
70
  *
71
- * @param string $key The requested nav slug.
72
  * @return mixed The value corresponding to the requested nav item.
73
  */
74
  public function __get( $key ) {
@@ -84,8 +84,8 @@ class BP_Core_Nav {
84
  *
85
  * @since 2.6.0
86
  *
87
- * @param string $key The requested nav slug.
88
- * @param mixed $value The value of the nav item.
89
  */
90
  public function __set( $key, $value ) {
91
  if ( is_array( $value ) ) {
@@ -100,7 +100,7 @@ class BP_Core_Nav {
100
  *
101
  * @since 2.6.0
102
  *
103
- * @param string $key The nav item slug to get. Optional.
104
  * @return mixed An array of nav item, a single nav item, or null if none found.
105
  */
106
  public function get( $key = '' ) {
@@ -276,7 +276,7 @@ class BP_Core_Nav {
276
  unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
277
 
278
  // Return the deleted item's screen functions.
279
- return array_unique( $screen_functions );
280
  }
281
  }
282
 
@@ -320,14 +320,14 @@ class BP_Core_Nav {
320
  *
321
  * @since 2.6.0
322
  *
323
- * @param array $args Filters to select the specific primary items. See wp_list_filter().
324
- * @param bool $sort True to sort the nav items. False otherwise.
325
  * @return array The list of primary objects nav
326
  */
327
  public function get_primary( $args = array(), $sort = true ) {
328
  $params = wp_parse_args( $args, array( 'primary' => true ) );
329
 
330
- // This parameter is not overridable
331
  if ( empty( $params['primary'] ) ) {
332
  return false;
333
  }
@@ -350,14 +350,14 @@ class BP_Core_Nav {
350
  *
351
  * @since 2.6.0
352
  *
353
- * @param array $args Filters to select the specific secondary items. See wp_list_filter().
354
- * @param bool $sort True to sort the nav items. False otherwise.
355
  * @return array The list of secondary objects nav
356
  */
357
  public function get_secondary( $args = array(), $sort = true ) {
358
  $params = wp_parse_args( $args, array( 'parent_slug' => '' ) );
359
 
360
- // No need to search children if the parent is not set
361
  if ( empty( $params['parent_slug'] ) && empty( $params['secondary'] ) ) {
362
  return false;
363
  }
@@ -387,11 +387,11 @@ class BP_Core_Nav {
387
 
388
  if ( $primary_nav_items ) {
389
  foreach( $primary_nav_items as $key_nav => $primary_nav ) {
390
- // Try to get the children
391
  $children = $this->get_secondary( array( 'parent_slug' => $primary_nav->slug, 'user_has_access' => true ) );
392
 
393
  if ( $children ) {
394
- $primary_nav_items[ $key_nav ] = clone( $primary_nav );
395
  $primary_nav_items[ $key_nav ]->children = $children;
396
  }
397
  }
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
+ * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
56
  *
57
  * @since 2.6.0
58
  *
59
+ * @param string $key The requested nav slug.
60
  * @return bool True if the nav item is set, false otherwise.
61
  */
62
  public function __isset( $key ) {
68
  *
69
  * @since 2.6.0
70
  *
71
+ * @param string $key The requested nav slug.
72
  * @return mixed The value corresponding to the requested nav item.
73
  */
74
  public function __get( $key ) {
84
  *
85
  * @since 2.6.0
86
  *
87
+ * @param string $key The requested nav slug.
88
+ * @param mixed $value The value of the nav item.
89
  */
90
  public function __set( $key, $value ) {
91
  if ( is_array( $value ) ) {
100
  *
101
  * @since 2.6.0
102
  *
103
+ * @param string $key The nav item slug to get. Optional.
104
  * @return mixed An array of nav item, a single nav item, or null if none found.
105
  */
106
  public function get( $key = '' ) {
276
  unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
277
 
278
  // Return the deleted item's screen functions.
279
+ return $screen_functions;
280
  }
281
  }
282
 
320
  *
321
  * @since 2.6.0
322
  *
323
+ * @param array $args Filters to select the specific primary items. See wp_list_filter().
324
+ * @param bool $sort True to sort the nav items. False otherwise.
325
  * @return array The list of primary objects nav
326
  */
327
  public function get_primary( $args = array(), $sort = true ) {
328
  $params = wp_parse_args( $args, array( 'primary' => true ) );
329
 
330
+ // This parameter is not overridable.
331
  if ( empty( $params['primary'] ) ) {
332
  return false;
333
  }
350
  *
351
  * @since 2.6.0
352
  *
353
+ * @param array $args Filters to select the specific secondary items. See wp_list_filter().
354
+ * @param bool $sort True to sort the nav items. False otherwise.
355
  * @return array The list of secondary objects nav
356
  */
357
  public function get_secondary( $args = array(), $sort = true ) {
358
  $params = wp_parse_args( $args, array( 'parent_slug' => '' ) );
359
 
360
+ // No need to search children if the parent is not set.
361
  if ( empty( $params['parent_slug'] ) && empty( $params['secondary'] ) ) {
362
  return false;
363
  }
387
 
388
  if ( $primary_nav_items ) {
389
  foreach( $primary_nav_items as $key_nav => $primary_nav ) {
390
+ // Try to get the children.
391
  $children = $this->get_secondary( array( 'parent_slug' => $primary_nav->slug, 'user_has_access' => true ) );
392
 
393
  if ( $children ) {
394
+ $primary_nav_items[ $key_nav ] = clone $primary_nav;
395
  $primary_nav_items[ $key_nav ]->children = $children;
396
  }
397
  }
bp-core/classes/class-bp-core-oembed-extension.php CHANGED
@@ -4,6 +4,7 @@
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
 
7
  */
8
 
9
  // Exit if accessed directly.
@@ -71,6 +72,7 @@ abstract class BP_Core_oEmbed_Extension {
71
  *
72
  * @since 2.6.0
73
  *
 
74
  * @return int Your item ID
75
  */
76
  abstract protected function validate_url_to_item_id( $url );
@@ -80,7 +82,7 @@ abstract class BP_Core_oEmbed_Extension {
80
  *
81
  * @since 2.6.0
82
  *
83
- * @param int $item_id Your item ID to do checks against.
84
  * @return array Should contain 'content', 'title', 'author_url', 'author_name' as array
85
  * keys. 'author_url' and 'author_name' is optional; the rest are required.
86
  */
@@ -94,7 +96,7 @@ abstract class BP_Core_oEmbed_Extension {
94
  *
95
  * @since 2.6.0
96
  *
97
- * @param int $item_id Your item ID to do checks against.
98
  * @return string Fallback HTML you want to output.
99
  */
100
  abstract protected function set_fallback_html( $item_id );
@@ -122,7 +124,6 @@ abstract class BP_Core_oEmbed_Extension {
122
  * @since 2.6.0
123
  *
124
  * @param int $item_id The item ID to do checks for.
125
- * @return string
126
  */
127
  protected function set_iframe_title( $item_id ) {}
128
 
@@ -145,7 +146,7 @@ abstract class BP_Core_oEmbed_Extension {
145
  protected function set_permalink() {
146
  $url = bp_get_requested_url();
147
 
148
- // Remove querystring from bp_get_requested_url()
149
  if ( false !== strpos( bp_get_requested_url(), '?' ) ) {
150
  $url = substr( bp_get_requested_url(), 0, strpos( bp_get_requested_url(), '?' ) );
151
  }
@@ -239,7 +240,7 @@ abstract class BP_Core_oEmbed_Extension {
239
  *
240
  * @since 2.6.0
241
  *
242
- * @param string $template File path to current embed template.
243
  * @return string
244
  */
245
  public function setup_template_parts( $template ) {
@@ -263,6 +264,9 @@ abstract class BP_Core_oEmbed_Extension {
263
  * and inject our own template for BuddyPress use.
264
  *
265
  * @since 2.6.0
 
 
 
266
  */
267
  public function content_buffer_start( $slug, $name ) {
268
  if ( 'embed' !== $slug || 'content' !== $name ) {
@@ -280,6 +284,8 @@ abstract class BP_Core_oEmbed_Extension {
280
  * and inject our own template for BuddyPress use.
281
  *
282
  * @since 2.6.0
 
 
283
  */
284
  public function content_buffer_end( $name ) {
285
  if ( 'embed' !== $name || is_404() ) {
@@ -318,7 +324,7 @@ abstract class BP_Core_oEmbed_Extension {
318
  *
319
  * @since 2.6.0
320
  *
321
- * @param string $retval Current discovery links.
322
  * @return string
323
  */
324
  public function add_oembed_discovery_links( $retval ) {
@@ -353,8 +359,8 @@ abstract class BP_Core_oEmbed_Extension {
353
  *
354
  * @link http://oembed.com/ View the 'Response parameters' section for more details.
355
  *
356
- * @param array $item Custom oEmbed response data.
357
- * @param int $width The requested width.
358
  * @return array
359
  */
360
  protected function get_oembed_response_data( $item, $width ) {
@@ -403,7 +409,7 @@ abstract class BP_Core_oEmbed_Extension {
403
  *
404
  * @since 2.6.0
405
  *
406
- * @param WP_REST_Request $request Full data about the request.
407
  * @return WP_Error|array oEmbed response data or WP_Error on failure.
408
  */
409
  public function get_item( $request ) {
@@ -508,7 +514,7 @@ abstract class BP_Core_oEmbed_Extension {
508
  *
509
  * @see bp_activity_embed_rest_route_callback()
510
  *
511
- * @param string $retval Current embed URL
512
  * @return string
513
  */
514
  public function filter_embed_url( $retval ) {
@@ -520,7 +526,7 @@ abstract class BP_Core_oEmbed_Extension {
520
  $url = trailingslashit( $url );
521
 
522
  // This is for the 'WordPress Embed' block
523
- // @see bp_activity_embed_comments_button()
524
  if ( 'the_permalink' !== current_filter() ) {
525
  $url = add_query_arg( 'embed', 'true', trailingslashit( $url ) );
526
 
@@ -540,7 +546,7 @@ abstract class BP_Core_oEmbed_Extension {
540
  *
541
  * @since 2.6.0
542
  *
543
- * @param string $retval Current embed HTML
544
  * @return string
545
  */
546
  public function filter_embed_html( $retval ) {
@@ -567,7 +573,7 @@ abstract class BP_Core_oEmbed_Extension {
567
  $retval = str_replace( '<iframe', '<iframe style="max-width:100%"', $retval );
568
  }
569
 
570
- // Remove default <blockquote>
571
  $retval = substr( $retval, strpos( $retval, '</blockquote>' ) + 13 );
572
 
573
  // Set up new fallback HTML
@@ -594,7 +600,7 @@ abstract class BP_Core_oEmbed_Extension {
594
  *
595
  * @see add_oembed_discovery_links()
596
  *
597
- * @param string $retval Current oEmbed endpoint URL
598
  * @return string
599
  */
600
  public function filter_rest_url( $retval = '' ) {
@@ -613,4 +619,4 @@ abstract class BP_Core_oEmbed_Extension {
613
 
614
  $this->content();
615
  }
616
- }
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
+ * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
72
  *
73
  * @since 2.6.0
74
  *
75
+ * @param string $url URL to validate.
76
  * @return int Your item ID
77
  */
78
  abstract protected function validate_url_to_item_id( $url );
82
  *
83
  * @since 2.6.0
84
  *
85
+ * @param int $item_id Your item ID to do checks against.
86
  * @return array Should contain 'content', 'title', 'author_url', 'author_name' as array
87
  * keys. 'author_url' and 'author_name' is optional; the rest are required.
88
  */
96
  *
97
  * @since 2.6.0
98
  *
99
+ * @param int $item_id Your item ID to do checks against.
100
  * @return string Fallback HTML you want to output.
101
  */
102
  abstract protected function set_fallback_html( $item_id );
124
  * @since 2.6.0
125
  *
126
  * @param int $item_id The item ID to do checks for.
 
127
  */
128
  protected function set_iframe_title( $item_id ) {}
129
 
146
  protected function set_permalink() {
147
  $url = bp_get_requested_url();
148
 
149
+ // Remove querystring from bp_get_requested_url().
150
  if ( false !== strpos( bp_get_requested_url(), '?' ) ) {
151
  $url = substr( bp_get_requested_url(), 0, strpos( bp_get_requested_url(), '?' ) );
152
  }
240
  *
241
  * @since 2.6.0
242
  *
243
+ * @param string $template File path to current embed template.
244
  * @return string
245
  */
246
  public function setup_template_parts( $template ) {
264
  * and inject our own template for BuddyPress use.
265
  *
266
  * @since 2.6.0
267
+ *
268
+ * @param string $slug Template slug.
269
+ * @param string $name Template name.
270
  */
271
  public function content_buffer_start( $slug, $name ) {
272
  if ( 'embed' !== $slug || 'content' !== $name ) {
284
  * and inject our own template for BuddyPress use.
285
  *
286
  * @since 2.6.0
287
+ *
288
+ * @param string $name Template name.
289
  */
290
  public function content_buffer_end( $name ) {
291
  if ( 'embed' !== $name || is_404() ) {
324
  *
325
  * @since 2.6.0
326
  *
327
+ * @param string $retval Current discovery links.
328
  * @return string
329
  */
330
  public function add_oembed_discovery_links( $retval ) {
359
  *
360
  * @link http://oembed.com/ View the 'Response parameters' section for more details.
361
  *
362
+ * @param array $item Custom oEmbed response data.
363
+ * @param int $width The requested width.
364
  * @return array
365
  */
366
  protected function get_oembed_response_data( $item, $width ) {
409
  *
410
  * @since 2.6.0
411
  *
412
+ * @param WP_REST_Request $request Full data about the request.
413
  * @return WP_Error|array oEmbed response data or WP_Error on failure.
414
  */
415
  public function get_item( $request ) {
514
  *
515
  * @see bp_activity_embed_rest_route_callback()
516
  *
517
+ * @param string $retval Current embed URL.
518
  * @return string
519
  */
520
  public function filter_embed_url( $retval ) {
526
  $url = trailingslashit( $url );
527
 
528
  // This is for the 'WordPress Embed' block
529
+ // @see bp_activity_embed_comments_button().
530
  if ( 'the_permalink' !== current_filter() ) {
531
  $url = add_query_arg( 'embed', 'true', trailingslashit( $url ) );
532
 
546
  *
547
  * @since 2.6.0
548
  *
549
+ * @param string $retval Current embed HTML.
550
  * @return string
551
  */
552
  public function filter_embed_html( $retval ) {
573
  $retval = str_replace( '<iframe', '<iframe style="max-width:100%"', $retval );
574
  }
575
 
576
+ // Remove default <blockquote>.
577
  $retval = substr( $retval, strpos( $retval, '</blockquote>' ) + 13 );
578
 
579
  // Set up new fallback HTML
600
  *
601
  * @see add_oembed_discovery_links()
602
  *
603
+ * @param string $retval Current oEmbed endpoint URL.
604
  * @return string
605
  */
606
  public function filter_rest_url( $retval = '' ) {
619
 
620
  $this->content();
621
  }
622
+ }
bp-core/classes/class-bp-core-user.php CHANGED
@@ -811,6 +811,13 @@ class BP_Core_User {
811
  $retval = array();
812
  foreach ( $user_ids as $user_id ) {
813
  $retval[ $user_id ] = wp_cache_get( $user_id, 'bp_last_activity' );
 
 
 
 
 
 
 
814
  }
815
 
816
  return $retval;
@@ -905,6 +912,16 @@ class BP_Core_User {
905
  // Set cache.
906
  wp_cache_set( $user_id, $activity[ $user_id ], 'bp_last_activity' );
907
 
 
 
 
 
 
 
 
 
 
 
908
  return $updated;
909
  }
910
 
811
  $retval = array();
812
  foreach ( $user_ids as $user_id ) {
813
  $retval[ $user_id ] = wp_cache_get( $user_id, 'bp_last_activity' );
814
+
815
+ if ( isset( $retval['user_id'] ) ) {
816
+ $retval[ $user_id ]['user_id'] = (int) $retval[ $user_id ]['user_id'];
817
+ }
818
+ if ( isset( $retval['activity_id'] ) ) {
819
+ $retval[ $user_id ]['activity_id'] = (int) $retval[ $user_id ]['activity_id'];
820
+ }
821
  }
822
 
823
  return $retval;
912
  // Set cache.
913
  wp_cache_set( $user_id, $activity[ $user_id ], 'bp_last_activity' );
914
 
915
+ /**
916
+ * Fires when a user's last_activity value has been updated.
917
+ *
918
+ * @since 2.7.0
919
+ *
920
+ * @param int $user_id ID of the user.
921
+ * @param string $time Last activity timestamp, in 'Y-m-d H:i:s' format.
922
+ */
923
+ do_action( 'bp_core_user_updated_last_activity', $user_id, $time );
924
+
925
  return $updated;
926
  }
927
 
bp-core/classes/class-bp-theme-compat.php CHANGED
@@ -50,7 +50,7 @@ class BP_Theme_Compat {
50
  *
51
  * @param array $properties Array of properties for BP_Theme_Compat.
52
  */
53
- public function __construct( Array $properties = array() ) {
54
  $this->_data = $properties;
55
  }
56
 
50
  *
51
  * @param array $properties Array of properties for BP_Theme_Compat.
52
  */
53
+ public function __construct( Array $properties = array() ) {
54
  $this->_data = $properties;
55
  }
56
 
bp-core/classes/class-bp-user-query.php CHANGED
@@ -364,7 +364,11 @@ class BP_User_Query {
364
  // 'include' - User ids to include in the results.
365
  $include = false !== $include ? wp_parse_id_list( $include ) : array();
366
  $include_ids = $this->get_include_ids( $include );
367
- if ( ! empty( $include_ids ) ) {
 
 
 
 
368
  $include_ids = implode( ',', wp_parse_id_list( $include_ids ) );
369
  $sql['where'][] = "u.{$this->uid_name} IN ({$include_ids})";
370
  }
@@ -591,11 +595,14 @@ class BP_User_Query {
591
  // Match up to the user ids from the main query.
592
  foreach ( $this->user_ids as $key => $uid ) {
593
  if ( isset( $r[ $uid ] ) ) {
 
 
 
594
  $this->results[ $uid ] = $r[ $uid ];
595
 
596
  // The BP template functions expect an 'id'
597
  // (as opposed to 'ID') property.
598
- $this->results[ $uid ]->id = $uid;
599
 
600
  // Remove user ID from original user_ids property.
601
  } else {
@@ -780,7 +787,7 @@ class BP_User_Query {
780
 
781
  $tax_query = new WP_Tax_Query( array(
782
  array(
783
- 'taxonomy' => 'bp_member_type',
784
  'field' => 'name',
785
  'operator' => $operator,
786
  'terms' => $types,
@@ -788,7 +795,7 @@ class BP_User_Query {
788
  ) );
789
 
790
  // Switch to the root blog, where member type taxonomies live.
791
- $site_id = bp_get_taxonomy_term_site_id( 'bp_member_type' );
792
  $switched = false;
793
  if ( $site_id !== get_current_blog_id() ) {
794
  switch_to_blog( $site_id );
364
  // 'include' - User ids to include in the results.
365
  $include = false !== $include ? wp_parse_id_list( $include ) : array();
366
  $include_ids = $this->get_include_ids( $include );
367
+
368
+ // An array containing nothing but 0 should always fail.
369
+ if ( 1 === count( $include_ids ) && 0 == reset( $include_ids ) ) {
370
+ $sql['where'][] = $this->no_results['where'];
371
+ } elseif ( ! empty( $include_ids ) ) {
372
  $include_ids = implode( ',', wp_parse_id_list( $include_ids ) );
373
  $sql['where'][] = "u.{$this->uid_name} IN ({$include_ids})";
374
  }
595
  // Match up to the user ids from the main query.
596
  foreach ( $this->user_ids as $key => $uid ) {
597
  if ( isset( $r[ $uid ] ) ) {
598
+ $r[ $uid ]->ID = (int) $uid;
599
+ $r[ $uid ]->user_status = (int) $r[ $uid ]->user_status;
600
+
601
  $this->results[ $uid ] = $r[ $uid ];
602
 
603
  // The BP template functions expect an 'id'
604
  // (as opposed to 'ID') property.
605
+ $this->results[ $uid ]->id = (int) $uid;
606
 
607
  // Remove user ID from original user_ids property.
608
  } else {
787
 
788
  $tax_query = new WP_Tax_Query( array(
789
  array(
790
+ 'taxonomy' => bp_get_member_type_tax_name(),
791
  'field' => 'name',
792
  'operator' => $operator,
793
  'terms' => $types,
795
  ) );
796
 
797
  // Switch to the root blog, where member type taxonomies live.
798
+ $site_id = bp_get_taxonomy_term_site_id( bp_get_member_type_tax_name() );
799
  $switched = false;
800
  if ( $site_id !== get_current_blog_id() ) {
801
  switch_to_blog( $site_id );
bp-core/css/admin-bar-rtl.css CHANGED
@@ -56,3 +56,16 @@
56
  height: 64px;
57
  width: 64px;
58
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  height: 64px;
57
  width: 64px;
58
  }
59
+
60
+ /* Remove additional arrows from appearing on the BuddyPress' `my_account_menu`
61
+ * on large screens. Add back arrows for screen widths 600px and lower.
62
+ */
63
+ #wpadminbar .wp-admin-bar-arrow-right {
64
+ display: none;
65
+ }
66
+
67
+ @media screen and (max-width: 600px) {
68
+ #wpadminbar .wp-admin-bar-arrow-right {
69
+ display: block;
70
+ }
71
+ }
bp-core/css/admin-bar-rtl.min.css CHANGED
@@ -1 +1 @@
1
- #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px -5px 0 10px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{right:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
1
+ #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px -5px 0 10px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{right:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}#wpadminbar .wp-admin-bar-arrow-right{display:none}@media screen and (max-width:600px){#wpadminbar .wp-admin-bar-arrow-right{display:block}}
bp-core/css/admin-bar.css CHANGED
@@ -56,3 +56,16 @@
56
  height: 64px;
57
  width: 64px;
58
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  height: 64px;
57
  width: 64px;
58
  }
59
+
60
+ /* Remove additional arrows from appearing on the BuddyPress' `my_account_menu`
61
+ * on large screens. Add back arrows for screen widths 600px and lower.
62
+ */
63
+ #wpadminbar .wp-admin-bar-arrow-right {
64
+ display: none;
65
+ }
66
+
67
+ @media screen and (max-width: 600px) {
68
+ #wpadminbar .wp-admin-bar-arrow-right {
69
+ display: block;
70
+ }
71
+ }
bp-core/css/admin-bar.min.css CHANGED
@@ -1 +1 @@
1
- #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 10px 0 -5px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
1
+ #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 10px 0 -5px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}#wpadminbar .wp-admin-bar-arrow-right{display:none}@media screen and (max-width:600px){#wpadminbar .wp-admin-bar-arrow-right{display:block}}
bp-core/css/avatar-rtl.css CHANGED
@@ -145,6 +145,16 @@ div.bp-avatar-nav {
145
  text-align: inherit;
146
  }
147
 
 
 
 
 
 
 
 
 
 
 
148
  .drag-drop #drag-drop-area {
149
  box-sizing: border-box;
150
  display: table;
@@ -164,8 +174,12 @@ div.bp-avatar-nav {
164
  display: block;
165
  }
166
 
 
 
 
 
167
  .drag-drop .drag-drop-inside p {
168
- color: #aaa;
169
  font-size: 110%;
170
  margin: 5px 0;
171
  text-align: center;
145
  text-align: inherit;
146
  }
147
 
148
+ .moxie-shim.moxie-shim-html5 {
149
+ top: 108px !important;
150
+ right: 40.1% !important;
151
+ width: 12em;
152
+ }
153
+
154
+ .moxie-shim.moxie-shim-html5 input {
155
+ cursor: pointer;
156
+ }
157
+
158
  .drag-drop #drag-drop-area {
159
  box-sizing: border-box;
160
  display: table;
174
  display: block;
175
  }
176
 
177
+ p.drag-drop-buttons input#bp-browse-button {
178
+ width: 12em;
179
+ }
180
+
181
  .drag-drop .drag-drop-inside p {
182
+ color: #767676;
183
  font-size: 110%;
184
  margin: 5px 0;
185
  text-align: center;
bp-core/css/avatar-rtl.min.css CHANGED
@@ -1 +1 @@
1
- div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:left;height:22px;line-height:2em;margin:6px 0 2px 10px;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:right!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-right-radius:4px;border-top-left-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#aaa;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:right}#bp-webcam-avatar #avatar-to-crop{float:right;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:right;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:right;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:right;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:right;float:left;margin:0 0 10px 40px;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-right:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:right;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:right;margin-left:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:left}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:right;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:right;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:right;margin-right:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
1
+ div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:left;height:22px;line-height:2em;margin:6px 0 2px 10px;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:right!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-right-radius:4px;border-top-left-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.moxie-shim.moxie-shim-html5{top:108px!important;right:40.1%!important;width:12em}.moxie-shim.moxie-shim-html5 input{cursor:pointer}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}p.drag-drop-buttons input#bp-browse-button{width:12em}.drag-drop .drag-drop-inside p{color:#767676;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:right}#bp-webcam-avatar #avatar-to-crop{float:right;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:right;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:right;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:right;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:right;float:left;margin:0 0 10px 40px;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-right:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:right;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:right;margin-left:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:left}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:right;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:right;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:right;margin-right:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
bp-core/css/avatar.css CHANGED
@@ -145,6 +145,16 @@ div.bp-avatar-nav {
145
  text-align: inherit;
146
  }
147
 
 
 
 
 
 
 
 
 
 
 
148
  .drag-drop #drag-drop-area {
149
  box-sizing: border-box;
150
  display: table;
@@ -164,8 +174,12 @@ div.bp-avatar-nav {
164
  display: block;
165
  }
166
 
 
 
 
 
167
  .drag-drop .drag-drop-inside p {
168
- color: #aaa;
169
  font-size: 110%;
170
  margin: 5px 0;
171
  text-align: center;
145
  text-align: inherit;
146
  }
147
 
148
+ .moxie-shim.moxie-shim-html5 {
149
+ top: 108px !important;
150
+ left: 40.1% !important;
151
+ width: 12em;
152
+ }
153
+
154
+ .moxie-shim.moxie-shim-html5 input {
155
+ cursor: pointer;
156
+ }
157
+
158
  .drag-drop #drag-drop-area {
159
  box-sizing: border-box;
160
  display: table;
174
  display: block;
175
  }
176
 
177
+ p.drag-drop-buttons input#bp-browse-button {
178
+ width: 12em;
179
+ }
180
+
181
  .drag-drop .drag-drop-inside p {
182
+ color: #767676;
183
  font-size: 110%;
184
  margin: 5px 0;
185
  text-align: center;
bp-core/css/avatar.min.css CHANGED
@@ -1 +1 @@
1
- div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:right;height:22px;line-height:2em;margin:6px 10px 2px 0;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:left!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#aaa;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:left}#bp-webcam-avatar #avatar-to-crop{float:left;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:left;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:left;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:left;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:left;float:right;margin:0 40px 10px 0;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-left:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:left;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:left;margin-right:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:right}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:left;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:left;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:left;margin-left:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
1
+ div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:right;height:22px;line-height:2em;margin:6px 10px 2px 0;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:left!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.moxie-shim.moxie-shim-html5{top:108px!important;left:40.1%!important;width:12em}.moxie-shim.moxie-shim-html5 input{cursor:pointer}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}p.drag-drop-buttons input#bp-browse-button{width:12em}.drag-drop .drag-drop-inside p{color:#767676;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:left}#bp-webcam-avatar #avatar-to-crop{float:left;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:left;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:left;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:left;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:left;float:right;margin:0 40px 10px 0;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-left:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:left;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:left;margin-right:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:right}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:left;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:left;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:left;margin-left:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
bp-core/deprecated/2.7.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Deprecated functions.
4
+ *
5
+ * @deprecated 2.7.0
6
+ */
7
+
8
+ // Exit if accessed directly.
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ /**
12
+ * Get the DB schema to use for BuddyPress components.
13
+ *
14
+ * @since 1.1.0
15
+ * @deprecated 2.7.0
16
+ *
17
+ * @return string The default database character-set, if set.
18
+ */
19
+ function bp_core_set_charset() {
20
+ global $wpdb;
21
+
22
+ _deprecated_function( __FUNCTION__, '2.7', 'wpdb::get_charset_collate()' );
23
+
24
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
25
+ return !empty( $wpdb->charset ) ? "DEFAULT CHARACTER SET {$wpdb->charset}" : '';
26
+ }
bp-core/js/bp-plupload.min.js CHANGED
@@ -1 +1 @@
1
- window.wp=window.wp||{},window.bp=window.bp||{},function(a,b){"undefined"!=typeof BP_Uploader&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Uploader={},bp.Uploader.uploader=function(){var a=this,c=-1!==navigator.userAgent.indexOf("Trident/")||-1!==navigator.userAgent.indexOf("MSIE ");return this.params=BP_Uploader.settings,this.strings=BP_Uploader.strings,this.supports={upload:this.params.browser.supported},this.supported=this.supports.upload,this.supported?(c||"flash"!==plupload.predictRuntime(this.params.defaults)||this.params.defaults.required_features&&this.params.defaults.required_features.hasOwnProperty("send_binary_string")||(this.params.defaults.required_features=this.params.defaults.required_features||{},this.params.defaults.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.params.defaults),this.uploader.bind("Init",function(c){var d=b("#"+a.params.defaults.container),e=b("#"+a.params.defaults.drop_element);"html4"===c.runtime&&(c.settings.multipart_params.html4=!0),"bp_avatar_upload"===c.settings.multipart_params.action&&(c.settings.multipart_params.bp_params.ui_available_width=d.width()),c.features.dragdrop&&!a.params.browser.mobile?(d.addClass("drag-drop"),e.bind("dragover.wp-uploader",function(){d.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){d.removeClass("drag-over")})):(d.removeClass("drag-drop"),e.unbind(".wp-uploader"))}),this.uploader.init(),this.feedback=function(a,b,c){!_.isNull(c)&&c.item&&c.item.clear(),bp.Uploader.filesError.unshift({message:a,data:b,file:c})},this.uploader.bind("FilesAdded",function(c,d){var e=104857600,f=parseInt(c.settings.max_file_size,10),g=this;if(!c.settings.multi_selection&&d.length>1){for(var h in d)c.removeFile(d[h]);return void b(a).trigger("bp-uploader-warning",a.strings.unique_file_warning)}_.each(d,function(a){var b;plupload.FAILED!==a.status&&(f>e&&a.size>e&&"html5"!==c.runtime?g.uploadSizeError(c,a,!0):(b=_.extend({id:a.id,file:a,uploading:!0,date:new Date,filename:a.name},_.pick(a,"loaded","size","percent")),a.item=new bp.Models.File(b),bp.Uploader.filesQueue.add(a.item)))}),c.refresh(),c.start()}),this.uploader.bind("UploadProgress",function(a,b){b.item.set(_.pick(b,"loaded","percent"))}),this.uploader.bind("FileUploaded",function(b,c,d){var e=a.strings.default_error;try{d=JSON.parse(d.response)}catch(f){return a.feedback(e,f,c)}return!_.isObject(d)||_.isUndefined(d.success)?a.feedback(e,null,c):d.success?(_.each(["file","loaded","size","percent"],function(a){c.item.unset(a)}),c.item.set(_.extend(d.data,{uploading:!1})),void bp.Uploader.filesUploaded.add(c.item)):(d.data&&d.data.message&&(e=d.data.message),a.feedback(e,d.data,c))}),this.uploader.bind("BeforeUpload",function(c,d){b(a).trigger("bp-uploader-new-upload",c,d)}),this.uploader.bind("UploadComplete",function(c,d){b(a).trigger("bp-uploader-upload-complete",c,d),bp.Uploader.filesQueue.reset()}),void this.uploader.bind("Error",function(c,d){var e,f=a.strings.default_error,g={FAILED:a.strings.upload_failed,FILE_EXTENSION_ERROR:a.strings.invalid_filetype,IMAGE_FORMAT_ERROR:a.strings.not_an_image,IMAGE_MEMORY_ERROR:a.strings.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:a.strings.image_dimensions_exceeded,GENERIC_ERROR:a.strings.upload_failed,IO_ERROR:a.strings.io_error,HTTP_ERROR:a.strings.http_error,SECURITY_ERROR:a.strings.security_error,FILE_SIZE_ERROR:a.strings.file_exceeds_size_limit.replace("%s",d.file.name)};for(e in g)if(d.code===plupload[e]){f=g[e];break}b(a).trigger("bp-uploader-warning",f),c.refresh()})):void(BP_Uploader=void 0)},bp.Models.File=Backbone.Model.extend({file:{}}),b.extend(bp.Uploader,{filesQueue:new Backbone.Collection,filesUploaded:new Backbone.Collection,filesError:new Backbone.Collection}),bp.View=bp.Backbone.View.extend({inject:function(a){this.render(),b(a).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Uploader=bp.View.extend({className:"bp-uploader-window",template:bp.template("upload-window"),defaults:_.pick(BP_Uploader.settings.defaults,"container","drop_element","browse_button"),initialize:function(){this.warnings=[],this.model=new Backbone.Model(this.defaults),this.on("ready",this.initUploader)},initUploader:function(){this.uploader=new bp.Uploader.uploader,b(this.uploader).on("bp-uploader-warning",_.bind(this.setWarning,this)),b(this.uploader).on("bp-uploader-new-upload",_.bind(this.resetWarning,this))},setWarning:function(a,b){if(!_.isUndefined(b)){var c=new bp.Views.uploaderWarning({value:b}).render();this.warnings.push(c),this.$el.after(c.el)}},resetWarning:function(){0!==this.warnings.length&&(_.each(this.warnings,function(a){a.remove()}),this.warnings=[])}}),bp.Views.uploaderWarning=bp.View.extend({tagName:"p",className:"warning",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.uploaderStatus=bp.View.extend({className:"files",initialize:function(){_.each(this.collection.models,this.addFile,this),this.collection.on("change:percent",this.progress,this),bp.Uploader.filesError.on("add",this.feedback,this)},addFile:function(a){this.views.add(new bp.Views.uploaderProgress({model:a}))},progress:function(a){_.isUndefined(a.get("percent"))||b("#"+a.get("id")+" .bp-progress .bp-bar").css("width",a.get("percent")+"%")},feedback:function(a){_.isUndefined(a.get("message"))||_.isUndefined(a.get("file"))||b("#"+a.get("file").id).html(a.get("message")).addClass("error")}}),bp.Views.uploaderProgress=bp.View.extend({className:"bp-uploader-progress",template:bp.template("progress-window")}))}(bp,jQuery);
1
+ window.wp=window.wp||{},window.bp=window.bp||{},function(a,b){"undefined"!=typeof BP_Uploader&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Uploader={},bp.Uploader.uploader=function(){var a=this,c=navigator.userAgent.indexOf("Trident/")!==-1||navigator.userAgent.indexOf("MSIE ")!==-1;return this.params=BP_Uploader.settings,this.strings=BP_Uploader.strings,this.supports={upload:this.params.browser.supported},this.supported=this.supports.upload,this.supported?(c||"flash"!==plupload.predictRuntime(this.params.defaults)||this.params.defaults.required_features&&this.params.defaults.required_features.hasOwnProperty("send_binary_string")||(this.params.defaults.required_features=this.params.defaults.required_features||{},this.params.defaults.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.params.defaults),this.uploader.bind("Init",function(c){var d=b("#"+a.params.defaults.container),e=b("#"+a.params.defaults.drop_element);"html4"===c.runtime&&(c.settings.multipart_params.html4=!0),"bp_avatar_upload"===c.settings.multipart_params.action&&(c.settings.multipart_params.bp_params.ui_available_width=d.width()),c.features.dragdrop&&!a.params.browser.mobile?(d.addClass("drag-drop"),e.bind("dragover.wp-uploader",function(){d.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){d.removeClass("drag-over")})):(d.removeClass("drag-drop"),e.unbind(".wp-uploader"))}),this.uploader.init(),this.feedback=function(a,b,c){!_.isNull(c)&&c.item&&c.item.clear(),bp.Uploader.filesError.unshift({message:a,data:b,file:c})},this.uploader.bind("FilesAdded",function(c,d){var e=104857600,f=parseInt(c.settings.max_file_size,10),g=this;if(!c.settings.multi_selection&&d.length>1){for(var h in d)c.removeFile(d[h]);return void b(a).trigger("bp-uploader-warning",a.strings.unique_file_warning)}_.each(d,function(a){var b;plupload.FAILED!==a.status&&(f>e&&a.size>e&&"html5"!==c.runtime?g.uploadSizeError(c,a,!0):(b=_.extend({id:a.id,file:a,uploading:!0,date:new Date,filename:a.name},_.pick(a,"loaded","size","percent")),a.item=new bp.Models.File(b),bp.Uploader.filesQueue.add(a.item)))}),c.refresh(),c.start()}),this.uploader.bind("UploadProgress",function(a,b){b.item.set(_.pick(b,"loaded","percent"))}),this.uploader.bind("FileUploaded",function(b,c,d){var e=a.strings.default_error;try{d=JSON.parse(d.response)}catch(b){return a.feedback(e,b,c)}return!_.isObject(d)||_.isUndefined(d.success)?a.feedback(e,null,c):d.success?(_.each(["file","loaded","size","percent"],function(a){c.item.unset(a)}),c.item.set(_.extend(d.data,{uploading:!1})),void bp.Uploader.filesUploaded.add(c.item)):(d.data&&d.data.message&&(e=d.data.message),a.feedback(e,d.data,c))}),this.uploader.bind("BeforeUpload",function(c,d){b(a).trigger("bp-uploader-new-upload",c,d)}),this.uploader.bind("UploadComplete",function(c,d){b(a).trigger("bp-uploader-upload-complete",c,d),bp.Uploader.filesQueue.reset()}),void this.uploader.bind("Error",function(c,d){var e,f=a.strings.default_error,g={FAILED:a.strings.upload_failed,FILE_EXTENSION_ERROR:a.strings.invalid_filetype,IMAGE_FORMAT_ERROR:a.strings.not_an_image,IMAGE_MEMORY_ERROR:a.strings.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:a.strings.image_dimensions_exceeded,GENERIC_ERROR:a.strings.upload_failed,IO_ERROR:a.strings.io_error,HTTP_ERROR:a.strings.http_error,SECURITY_ERROR:a.strings.security_error,FILE_SIZE_ERROR:a.strings.file_exceeds_size_limit.replace("%s",d.file.name)};for(e in g)if(d.code===plupload[e]){f=g[e];break}b(a).trigger("bp-uploader-warning",f),c.refresh()})):void(BP_Uploader=void 0)},bp.Models.File=Backbone.Model.extend({file:{}}),b.extend(bp.Uploader,{filesQueue:new Backbone.Collection,filesUploaded:new Backbone.Collection,filesError:new Backbone.Collection}),bp.View=bp.Backbone.View.extend({inject:function(a){this.render(),b(a).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Uploader=bp.View.extend({className:"bp-uploader-window",template:bp.template("upload-window"),defaults:_.pick(BP_Uploader.settings.defaults,"container","drop_element","browse_button"),initialize:function(){this.warnings=[],this.model=new Backbone.Model(this.defaults),this.on("ready",this.initUploader)},initUploader:function(){this.uploader=new bp.Uploader.uploader,b(this.uploader).on("bp-uploader-warning",_.bind(this.setWarning,this)),b(this.uploader).on("bp-uploader-new-upload",_.bind(this.resetWarning,this))},setWarning:function(a,b){if(!_.isUndefined(b)){var c=new bp.Views.uploaderWarning({value:b}).render();this.warnings.push(c),this.$el.after(c.el)}},resetWarning:function(){0!==this.warnings.length&&(_.each(this.warnings,function(a){a.remove()}),this.warnings=[])}}),bp.Views.uploaderWarning=bp.View.extend({tagName:"p",className:"warning",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.uploaderStatus=bp.View.extend({className:"files",initialize:function(){_.each(this.collection.models,this.addFile,this),this.collection.on("change:percent",this.progress,this),bp.Uploader.filesError.on("add",this.feedback,this)},addFile:function(a){this.views.add(new bp.Views.uploaderProgress({model:a}))},progress:function(a){_.isUndefined(a.get("percent"))||b("#"+a.get("id")+" .bp-progress .bp-bar").css("width",a.get("percent")+"%")},feedback:function(a){_.isUndefined(a.get("message"))||_.isUndefined(a.get("file"))||b("#"+a.get("file").id).html(a.get("message")).addClass("error")}}),bp.Views.uploaderProgress=bp.View.extend({className:"bp-uploader-progress",template:bp.template("progress-window")}))}(bp,jQuery);
bp-core/js/confirm.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery("a.confirm").click(function(){return confirm(BP_Confirm.are_you_sure)?!0:!1})});
1
+ jQuery(document).ready(function(){jQuery("a.confirm").click(function(){return!!confirm(BP_Confirm.are_you_sure)})});
bp-core/js/jquery.atwho.min.js DELETED
@@ -1 +0,0 @@
1
- !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b,c,d,e,f,g,h,i=[].slice;c=function(){function b(b){this.current_flag=null,this.controllers={},this.alias_maps={},this.$inputor=a(b),this.setIframe(),this.listen()}return b.prototype.createContainer=function(b){return 0===(this.$el=a("#atwho-container",b)).length?a(b.body).append(this.$el=a("<div id='atwho-container'></div>")):void 0},b.prototype.setIframe=function(a,b){var c;return null==b&&(b=!1),a?(this.window=a.contentWindow,this.document=a.contentDocument||this.window.document,this.iframe=a):(this.document=document,this.window=window,this.iframe=null),(this.iframeStandalone=b)?(null!=(c=this.$el)&&c.remove(),this.createContainer(this.document)):this.createContainer(document)},b.prototype.controller=function(a){var b,c,d,e;if(this.alias_maps[a])c=this.controllers[this.alias_maps[a]];else{e=this.controllers;for(d in e)if(b=e[d],d===a){c=b;break}}return c?c:this.controllers[this.current_flag]},b.prototype.set_context_for=function(a){return this.current_flag=a,this},b.prototype.reg=function(a,b){var c,e;return c=(e=this.controllers)[a]||(e[a]=new d(this,a)),b.alias&&(this.alias_maps[b.alias]=a),c.init(b),this},b.prototype.listen=function(){return this.$inputor.on("keyup.atwhoInner",function(a){return function(b){return a.on_keyup(b)}}(this)).on("keydown.atwhoInner",function(a){return function(b){return a.on_keydown(b)}}(this)).on("scroll.atwhoInner",function(a){return function(b){var c;return null!=(c=a.controller())?c.view.hide(b):void 0}}(this)).on("blur.atwhoInner",function(a){return function(b){var c;return(c=a.controller())?c.view.hide(b,c.get_opt("display_timeout")):void 0}}(this)).on("click.atwhoInner",function(a){return function(b){return a.dispatch()}}(this))},b.prototype.shutdown=function(){var a,b,c;c=this.controllers;for(b in c)a=c[b],a.destroy(),delete this.controllers[b];return this.$inputor.off(".atwhoInner"),this.$el.remove()},b.prototype.dispatch=function(){return a.map(this.controllers,function(a){return function(b){var c;return(c=b.get_opt("delay"))?(clearTimeout(a.delayedCallback),a.delayedCallback=setTimeout(function(){return b.look_up()?a.set_context_for(b.at):void 0},c)):b.look_up()?a.set_context_for(b.at):void 0}}(this))},b.prototype.on_keyup=function(b){var c;switch(b.keyCode){case f.ESC:b.preventDefault(),null!=(c=this.controller())&&c.view.hide();break;case f.DOWN:case f.UP:case f.CTRL:a.noop();break;case f.P:case f.N:b.ctrlKey||this.dispatch();break;default:this.dispatch()}},b.prototype.on_keydown=function(b){var c,d;if(c=null!=(d=this.controller())?d.view:void 0,c&&c.visible())switch(b.keyCode){case f.ESC:b.preventDefault(),c.hide(b);break;case f.UP:b.preventDefault(),c.prev();break;case f.DOWN:b.preventDefault(),c.next();break;case f.P:if(!b.ctrlKey)return;b.preventDefault(),c.prev();break;case f.N:if(!b.ctrlKey)return;b.preventDefault(),c.next();break;case f.TAB:case f.ENTER:if(!c.visible())return;b.preventDefault(),c.choose(b);break;default:a.noop()}},b}(),d=function(){function b(b,c){this.app=b,this.at=c,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.setting=null,this.query=null,this.pos=0,this.cur_rect=null,this.range=null,0===(this.$el=a("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=a("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new g(this),this.view=new h(this)}return b.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},b.prototype.init=function(b){return this.setting=a.extend({},this.setting||a.fn.atwho["default"],b),this.view.init(),this.model.reload(this.setting.data)},b.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},b.prototype.call_default=function(){var b,c,d;d=arguments[0],b=2<=arguments.length?i.call(arguments,1):[];try{return e[d].apply(this,b)}catch(f){return c=f,a.error(""+c+" Or maybe At.js doesn't have function "+d)}},b.prototype.trigger=function(a,b){var c,d;return null==b&&(b=[]),b.push(this),c=this.get_opt("alias"),d=c?""+a+"-"+c+".atwho":""+a+".atwho",this.$inputor.trigger(d,b)},b.prototype.callbacks=function(a){return this.get_opt("callbacks")[a]||e[a]},b.prototype.get_opt=function(a,b){var c;try{return this.setting[a]}catch(d){return c=d,null}},b.prototype.content=function(){var a;if(this.$inputor.is("textarea, input"))return this.$inputor.val();if(a=this.mark_range())return(a.startContainer.textContent||"").slice(0,a.startOffset)},b.prototype.catch_query=function(){var a,b,c,d,e,f;return b=this.content(),a=this.$inputor.caret("pos",{iframe:this.app.iframe}),f=b.slice(0,a),d=this.callbacks("matcher").call(this,this.at,f,this.get_opt("start_with_space")),"string"==typeof d&&d.length<=this.get_opt("max_len",20)?(e=a-d.length,c=e+d.length,this.pos=e,d={text:d,head_pos:e,end_pos:c},this.trigger("matched",[this.at,d.text])):(d=null,this.view.hide()),this.query=d},b.prototype.rect=function(){var b,c,d;if(b=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeStandalone&&(c=a(this.app.iframe).offset(),b.left+=c.left,b.top+=c.top),this.$inputor.is("[contentEditable]")&&(b=this.cur_rect||(this.cur_rect=b)),d=this.app.document.selection?0:2,{left:b.left,top:b.top,bottom:b.top+b.height+d}},b.prototype.reset_rect=function(){return this.$inputor.is("[contentEditable]")?this.cur_rect=null:void 0},b.prototype.mark_range=function(){var a;if(this.$inputor.is("[contentEditable]"))return this.app.window.getSelection&&(a=this.app.window.getSelection()).rangeCount>0?this.range=a.getRangeAt(0):this.app.document.selection?this.ie8_range=this.app.document.selection.createRange():void 0},b.prototype.insert_content_for=function(b){var c,d,e;return d=b.data("value"),e=this.get_opt("insert_tpl"),this.$inputor.is("textarea, input")||!e?d:(c=a.extend({},b.data("item-data"),{"atwho-data-value":d,"atwho-at":this.at}),this.callbacks("tpl_eval").call(this,e,c))},b.prototype.insert=function(b,c){var d,e,f,g,h,i,j,k,l,m,n,o;if(d=this.$inputor,l=this.callbacks("inserting_wrapper").call(this,d,b,this.get_opt("suffix")),d.is("textarea, input"))i=d.val(),j=i.slice(0,Math.max(this.query.head_pos-this.at.length,0)),k=""+j+l+i.slice(this.query.end_pos||0),d.val(k),d.caret("pos",j.length+l.length,{iframe:this.app.iframe});else if(g=this.range){for(f=g.startOffset-(this.query.end_pos-this.query.head_pos)-this.at.length,g.setStart(g.endContainer,Math.max(f,0)),g.setEnd(g.endContainer,g.endOffset),g.deleteContents(),o=a(l,this.app.document),m=0,n=o.length;n>m;m++)e=o[m],g.insertNode(e),g.setEndAfter(e),g.collapse(!1);h=this.app.window.getSelection(),h.removeAllRanges(),h.addRange(g)}else(g=this.ie8_range)&&(g.moveStart("character",this.query.end_pos-this.query.head_pos-this.at.length),g.pasteHTML(l),g.collapse(!1),g.select());return d.is(":focus")||d.focus(),d.change()},b.prototype.render_view=function(a){var b;return b=this.get_opt("search_key"),a=this.callbacks("sorter").call(this,this.query.text,a.slice(0,1001),b),this.view.render(a.slice(0,this.get_opt("limit")))},b.prototype.look_up=function(){var b,c;if(b=this.catch_query())return c=function(a){return a&&a.length>0?this.render_view(a):this.view.hide()},this.model.query(b.text,a.proxy(c,this)),b},b}(),g=function(){function b(a){this.context=a,this.at=this.context.at,this.storage=this.context.$inputor}return b.prototype.destroy=function(){return this.storage.data(this.at,null)},b.prototype.saved=function(){return this.fetch()>0},b.prototype.query=function(a,b){var c,d,e;return c=this.fetch(),d=this.context.get_opt("search_key"),c=this.context.callbacks("filter").call(this.context,a,c,d)||[],e=this.context.callbacks("remote_filter"),c.length>0||!e&&0===c.length?b(c):e.call(this.context,a,b)},b.prototype.fetch=function(){return this.storage.data(this.at)||[]},b.prototype.save=function(a){return this.storage.data(this.at,this.context.callbacks("before_save").call(this.context,a||[]))},b.prototype.load=function(a){return!this.saved()&&a?this._load(a):void 0},b.prototype.reload=function(a){return this._load(a)},b.prototype._load=function(b){return"string"==typeof b?a.ajax(b,{dataType:"json"}).done(function(a){return function(b){return a.save(b)}}(this)):this.save(b)},b}(),h=function(){function b(b){this.context=b,this.$el=a("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.timeout_id=null,this.context.$el.append(this.$el),this.bind_event()}return b.prototype.init=function(){var a;return a=this.context.get_opt("alias")||this.context.at.charCodeAt(0),this.$el.attr({id:"at-view-"+a})},b.prototype.destroy=function(){return this.$el.remove()},b.prototype.bind_event=function(){var b;return b=this.$el.find("ul"),b.on("mouseenter.atwho-view","li",function(c){return b.find(".cur").removeClass("cur"),a(c.currentTarget).addClass("cur")}).on("click.atwho-view","li",function(c){return function(d){return b.find(".cur").removeClass("cur"),a(d.currentTarget).addClass("cur"),c.choose(d),d.preventDefault()}}(this))},b.prototype.visible=function(){return this.$el.is(":visible")},b.prototype.choose=function(a){var b,c;return(b=this.$el.find(".cur")).length&&(c=this.context.insert_content_for(b),this.context.insert(this.context.callbacks("before_insert").call(this.context,c,b),b),this.context.trigger("inserted",[b,a]),this.hide(a)),this.context.get_opt("hide_without_suffix")?this.stop_showing=!0:void 0},b.prototype.reposition=function(b){var c,d,e,f;return f=this.context.app.iframeStandalone?this.context.app.window:window,b.bottom+this.$el.height()-a(f).scrollTop()>a(f).height()&&(b.bottom=b.top-this.$el.height()),b.left>(d=a(f).width()-this.$el.width()-5)&&(b.left=d),c={left:b.left,top:b.bottom},null!=(e=this.context.callbacks("before_reposition"))&&e.call(this.context,c),this.$el.offset(c),this.context.trigger("reposition",[c])},b.prototype.next=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.next(),b.length||(b=this.$el.find("li:first")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.prev=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.prev(),b.length||(b=this.$el.find("li:last")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.show=function(){var a;return this.stop_showing?void(this.stop_showing=!1):(this.context.mark_range(),this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(a=this.context.rect())?this.reposition(a):void 0)},b.prototype.hide=function(a,b){var c;if(this.visible())return isNaN(b)?(this.context.reset_rect(),this.$el.hide(),this.context.trigger("hidden",[a])):(c=function(a){return function(){return a.hide()}}(this),clearTimeout(this.timeout_id),this.timeout_id=setTimeout(c,b))},b.prototype.render=function(b){var c,d,e,f,g,h,i;if(!(a.isArray(b)&&b.length>0))return void this.hide();for(this.$el.find("ul").empty(),d=this.$el.find("ul"),g=this.context.get_opt("tpl"),h=0,i=b.length;i>h;h++)e=b[h],e=a.extend({},e,{"atwho-at":this.context.at}),f=this.context.callbacks("tpl_eval").call(this.context,g,e),c=a(this.context.callbacks("highlighter").call(this.context,f,this.context.query.text)),c.data("item-data",e),d.append(c);return this.show(),this.context.get_opt("highlight_first")?d.find("li:first").addClass("cur"):void 0},b}(),f={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78},e={before_save:function(b){var c,d,e,f;if(!a.isArray(b))return b;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],a.isPlainObject(c)?f.push(c):f.push({name:c});return f},matcher:function(a,b,c){var d,e,f,g;return a=a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),c&&(a="(?:^|\\s)"+a),f=decodeURI("%C3%80"),g=decodeURI("%C3%BF"),e=new RegExp(""+a+"([A-Za-z"+f+"-"+g+"0-9_+-]*)$|"+a+"([^\\x00-\\xff]*)$","gi"),d=e.exec(b),d?d[2]||d[1]:null},filter:function(a,b,c){var d,e,f,g;for(g=[],e=0,f=b.length;f>e;e++)d=b[e],~new String(d[c]).toLowerCase().indexOf(a.toLowerCase())&&g.push(d);return g},remote_filter:null,sorter:function(a,b,c){var d,e,f,g;if(!a)return b;for(g=[],e=0,f=b.length;f>e;e++)d=b[e],d.atwho_order=new String(d[c]).toLowerCase().indexOf(a.toLowerCase()),d.atwho_order>-1&&g.push(d);return g.sort(function(a,b){return a.atwho_order-b.atwho_order})},tpl_eval:function(a,b){var c;try{return a.replace(/\$\{([^\}]*)\}/g,function(a,c,d){return b[c]})}catch(d){return c=d,""}},highlighter:function(a,b){var c;return b?(c=new RegExp(">\\s*(\\w*?)("+b.replace("+","\\+")+")(\\w*)\\s*<","ig"),a.replace(c,function(a,b,c,d){return"> "+b+"<strong>"+c+"</strong>"+d+" <"})):a},before_insert:function(a,b){return a},inserting_wrapper:function(a,b,c){var d;return c=""===c?c:c||" ",a.is("textarea, input")?""+b+c:"true"===a.attr("contentEditable")?(c=" "===c?"&nbsp;":c,/firefox/i.test(navigator.userAgent)?d="<span>"+b+c+"</span>":(c="<span contenteditable='false'>"+c+"</span>",d="<span contenteditable='false'>"+b+c+"</span>"),this.app.document.selection&&(d="<span contenteditable='true'>"+b+"</span>"),d+"<span></span>"):void 0}},b={load:function(a,b){var c;return(c=this.controller(a))?c.model.load(b):void 0},setIframe:function(a,b){return this.setIframe(a,b),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},a.fn.atwho=function(d){var e,f;return f=arguments,e=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var g,h;return(h=(g=a(this)).data("atwho"))||g.data("atwho",h=new c(this)),"object"!=typeof d&&d?b[d]&&h?e=b[d].apply(h,Array.prototype.slice.call(f,1)):a.error("Method "+d+" does not exist on jQuery.caret"):h.reg(d.at,d)}),e||this},a.fn.atwho["default"]={at:void 0,alias:void 0,data:null,tpl:"<li data-value='${atwho-at}${name}'>${name}</li>",insert_tpl:"<span id='${id}'>${atwho-data-value}</span>",callbacks:e,search_key:"name",suffix:void 0,hide_without_suffix:!1,start_with_space:!0,highlight_first:!0,limit:5,max_len:20,display_timeout:300,delay:null}});
 
bp-core/js/{jquery-cookie.js → vendor/jquery-cookie.js} RENAMED
File without changes
bp-core/js/{jquery-cookie.min.js → vendor/jquery-cookie.min.js} RENAMED
@@ -1 +1 @@
1
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(a){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;n<o;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)&&(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
bp-core/js/{jquery-scroll-to.js → vendor/jquery-scroll-to.js} RENAMED
File without changes
bp-core/js/{jquery-scroll-to.min.js → vendor/jquery-scroll-to.min.js} RENAMED
@@ -1 +1 @@
1
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(b){return a.isFunction(b)||"object"==typeof b?b:{top:b,left:b}}var c=a.scrollTo=function(b,c,d){return a(window).scrollTo(b,c,d)};return c.defaults={axis:"xy",duration:parseFloat(a.fn.jquery)>=1.3?0:1,limit:!0},c.window=function(){return a(window)._scrollable()},a.fn._scrollable=function(){return this.map(function(){var b=this,c=!b.nodeName||-1!==a.inArray(b.nodeName.toLowerCase(),["iframe","#document","html","body"]);if(!c)return b;var d=(b.contentWindow||b).document||b.ownerDocument||b;return/webkit/i.test(navigator.userAgent)||"BackCompat"===d.compatMode?d.body:d.documentElement})},a.fn.scrollTo=function(d,e,f){return"object"==typeof e&&(f=e,e=0),"function"==typeof f&&(f={onAfter:f}),"max"===d&&(d=9e9),f=a.extend({},c.defaults,f),e=e||f.duration,f.queue=f.queue&&f.axis.length>1,f.queue&&(e/=2),f.offset=b(f.offset),f.over=b(f.over),this._scrollable().each(function(){function g(a){j.animate(l,e,f.easing,a&&function(){a.call(this,k,f)})}if(null!==d){var h,i=this,j=a(i),k=d,l={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}if(k=m?a(k):a(k,this),!k.length)return;case"object":(k.is||k.style)&&(h=(k=a(k)).offset())}var n=a.isFunction(f.offset)&&f.offset(i,k)||f.offset;a.each(f.axis.split(""),function(a,b){var d="x"===b?"Left":"Top",e=d.toLowerCase(),o="scroll"+d,p=i[o],q=c.max(i,b);if(h)l[o]=h[e]+(m?0:p-j.offset()[e]),f.margin&&(l[o]-=parseInt(k.css("margin"+d))||0,l[o]-=parseInt(k.css("border"+d+"Width"))||0),l[o]+=n[e]||0,f.over[e]&&(l[o]+=k["x"===b?"width":"height"]()*f.over[e]);else{var r=k[e];l[o]=r.slice&&"%"===r.slice(-1)?parseFloat(r)/100*q:r}f.limit&&/^\d+$/.test(l[o])&&(l[o]=l[o]<=0?0:Math.min(l[o],q)),!a&&f.queue&&(p!==l[o]&&g(f.onAfterFirst),delete l[o])}),g(f.onAfter)}}).end()},c.max=function(b,c){var d="x"===c?"Width":"Height",e="scroll"+d;if(!a(b).is("html,body"))return b[e]-a(b)[d.toLowerCase()]();var f="client"+d,g=b.ownerDocument.documentElement,h=b.ownerDocument.body;return Math.max(g[e],h[e])-Math.min(g[f],h[f])},c});
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(b){return a.isFunction(b)||"object"==typeof b?b:{top:b,left:b}}var c=a.scrollTo=function(b,c,d){return a(window).scrollTo(b,c,d)};return c.defaults={axis:"xy",duration:parseFloat(a.fn.jquery)>=1.3?0:1,limit:!0},c.window=function(){return a(window)._scrollable()},a.fn._scrollable=function(){return this.map(function(){var b=this,c=!b.nodeName||a.inArray(b.nodeName.toLowerCase(),["iframe","#document","html","body"])!==-1;if(!c)return b;var d=(b.contentWindow||b).document||b.ownerDocument||b;return/webkit/i.test(navigator.userAgent)||"BackCompat"===d.compatMode?d.body:d.documentElement})},a.fn.scrollTo=function(d,e,f){return"object"==typeof e&&(f=e,e=0),"function"==typeof f&&(f={onAfter:f}),"max"===d&&(d=9e9),f=a.extend({},c.defaults,f),e=e||f.duration,f.queue=f.queue&&f.axis.length>1,f.queue&&(e/=2),f.offset=b(f.offset),f.over=b(f.over),this._scrollable().each(function(){function g(a){j.animate(l,e,f.easing,a&&function(){a.call(this,k,f)})}if(null!==d){var h,i=this,j=a(i),k=d,l={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}if(k=m?a(k):a(k,this),!k.length)return;case"object":(k.is||k.style)&&(h=(k=a(k)).offset())}var n=a.isFunction(f.offset)&&f.offset(i,k)||f.offset;a.each(f.axis.split(""),function(a,b){var d="x"===b?"Left":"Top",e=d.toLowerCase(),o="scroll"+d,p=i[o],q=c.max(i,b);if(h)l[o]=h[e]+(m?0:p-j.offset()[e]),f.margin&&(l[o]-=parseInt(k.css("margin"+d))||0,l[o]-=parseInt(k.css("border"+d+"Width"))||0),l[o]+=n[e]||0,f.over[e]&&(l[o]+=k["x"===b?"width":"height"]()*f.over[e]);else{var r=k[e];l[o]=r.slice&&"%"===r.slice(-1)?parseFloat(r)/100*q:r}f.limit&&/^\d+$/.test(l[o])&&(l[o]=l[o]<=0?0:Math.min(l[o],q)),!a&&f.queue&&(p!==l[o]&&g(f.onAfterFirst),delete l[o])}),g(f.onAfter)}}).end()},c.max=function(b,c){var d="x"===c?"Width":"Height",e="scroll"+d;if(!a(b).is("html,body"))return b[e]-a(b)[d.toLowerCase()]();var f="client"+d,g=b.ownerDocument.documentElement,h=b.ownerDocument.body;return Math.max(g[e],h[e])-Math.min(g[f],h[f])},c});
bp-core/js/{jquery.atwho.js → vendor/jquery.atwho.js} RENAMED
File without changes
bp-core/js/vendor/jquery.atwho.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b,c,d,e,f,g,h,i=[].slice;c=function(){function b(b){this.current_flag=null,this.controllers={},this.alias_maps={},this.$inputor=a(b),this.setIframe(),this.listen()}return b.prototype.createContainer=function(b){if(0===(this.$el=a("#atwho-container",b)).length)return a(b.body).append(this.$el=a("<div id='atwho-container'></div>"))},b.prototype.setIframe=function(a,b){var c;return null==b&&(b=!1),a?(this.window=a.contentWindow,this.document=a.contentDocument||this.window.document,this.iframe=a):(this.document=document,this.window=window,this.iframe=null),(this.iframeStandalone=b)?(null!=(c=this.$el)&&c.remove(),this.createContainer(this.document)):this.createContainer(document)},b.prototype.controller=function(a){var b,c,d,e;if(this.alias_maps[a])c=this.controllers[this.alias_maps[a]];else{e=this.controllers;for(d in e)if(b=e[d],d===a){c=b;break}}return c?c:this.controllers[this.current_flag]},b.prototype.set_context_for=function(a){return this.current_flag=a,this},b.prototype.reg=function(a,b){var c,e;return c=(e=this.controllers)[a]||(e[a]=new d(this,a)),b.alias&&(this.alias_maps[b.alias]=a),c.init(b),this},b.prototype.listen=function(){return this.$inputor.on("keyup.atwhoInner",function(a){return function(b){return a.on_keyup(b)}}(this)).on("keydown.atwhoInner",function(a){return function(b){return a.on_keydown(b)}}(this)).on("scroll.atwhoInner",function(a){return function(b){var c;return null!=(c=a.controller())?c.view.hide(b):void 0}}(this)).on("blur.atwhoInner",function(a){return function(b){var c;if(c=a.controller())return c.view.hide(b,c.get_opt("display_timeout"))}}(this)).on("click.atwhoInner",function(a){return function(b){return a.dispatch()}}(this))},b.prototype.shutdown=function(){var a,b,c;c=this.controllers;for(b in c)a=c[b],a.destroy(),delete this.controllers[b];return this.$inputor.off(".atwhoInner"),this.$el.remove()},b.prototype.dispatch=function(){return a.map(this.controllers,function(a){return function(b){var c;return(c=b.get_opt("delay"))?(clearTimeout(a.delayedCallback),a.delayedCallback=setTimeout(function(){if(b.look_up())return a.set_context_for(b.at)},c)):b.look_up()?a.set_context_for(b.at):void 0}}(this))},b.prototype.on_keyup=function(b){var c;switch(b.keyCode){case f.ESC:b.preventDefault(),null!=(c=this.controller())&&c.view.hide();break;case f.DOWN:case f.UP:case f.CTRL:a.noop();break;case f.P:case f.N:b.ctrlKey||this.dispatch();break;default:this.dispatch()}},b.prototype.on_keydown=function(b){var c,d;if(c=null!=(d=this.controller())?d.view:void 0,c&&c.visible())switch(b.keyCode){case f.ESC:b.preventDefault(),c.hide(b);break;case f.UP:b.preventDefault(),c.prev();break;case f.DOWN:b.preventDefault(),c.next();break;case f.P:if(!b.ctrlKey)return;b.preventDefault(),c.prev();break;case f.N:if(!b.ctrlKey)return;b.preventDefault(),c.next();break;case f.TAB:case f.ENTER:if(!c.visible())return;b.preventDefault(),c.choose(b);break;default:a.noop()}},b}(),d=function(){function b(b,c){this.app=b,this.at=c,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.setting=null,this.query=null,this.pos=0,this.cur_rect=null,this.range=null,0===(this.$el=a("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=a("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new g(this),this.view=new h(this)}return b.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},b.prototype.init=function(b){return this.setting=a.extend({},this.setting||a.fn.atwho.default,b),this.view.init(),this.model.reload(this.setting.data)},b.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},b.prototype.call_default=function(){var b,c,d;d=arguments[0],b=2<=arguments.length?i.call(arguments,1):[];try{return e[d].apply(this,b)}catch(b){return c=b,a.error(""+c+" Or maybe At.js doesn't have function "+d)}},b.prototype.trigger=function(a,b){var c,d;return null==b&&(b=[]),b.push(this),c=this.get_opt("alias"),d=c?""+a+"-"+c+".atwho":""+a+".atwho",this.$inputor.trigger(d,b)},b.prototype.callbacks=function(a){return this.get_opt("callbacks")[a]||e[a]},b.prototype.get_opt=function(a,b){var c;try{return this.setting[a]}catch(a){return c=a,null}},b.prototype.content=function(){var a;if(this.$inputor.is("textarea, input"))return this.$inputor.val();if(a=this.mark_range())return(a.startContainer.textContent||"").slice(0,a.startOffset)},b.prototype.catch_query=function(){var a,b,c,d,e,f;return b=this.content(),a=this.$inputor.caret("pos",{iframe:this.app.iframe}),f=b.slice(0,a),d=this.callbacks("matcher").call(this,this.at,f,this.get_opt("start_with_space")),"string"==typeof d&&d.length<=this.get_opt("max_len",20)?(e=a-d.length,c=e+d.length,this.pos=e,d={text:d,head_pos:e,end_pos:c},this.trigger("matched",[this.at,d.text])):(d=null,this.view.hide()),this.query=d},b.prototype.rect=function(){var b,c,d;if(b=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeStandalone&&(c=a(this.app.iframe).offset(),b.left+=c.left,b.top+=c.top),this.$inputor.is("[contentEditable]")&&(b=this.cur_rect||(this.cur_rect=b)),d=this.app.document.selection?0:2,{left:b.left,top:b.top,bottom:b.top+b.height+d}},b.prototype.reset_rect=function(){if(this.$inputor.is("[contentEditable]"))return this.cur_rect=null},b.prototype.mark_range=function(){var a;if(this.$inputor.is("[contentEditable]"))return this.app.window.getSelection&&(a=this.app.window.getSelection()).rangeCount>0?this.range=a.getRangeAt(0):this.app.document.selection?this.ie8_range=this.app.document.selection.createRange():void 0},b.prototype.insert_content_for=function(b){var c,d,e;return d=b.data("value"),e=this.get_opt("insert_tpl"),this.$inputor.is("textarea, input")||!e?d:(c=a.extend({},b.data("item-data"),{"atwho-data-value":d,"atwho-at":this.at}),this.callbacks("tpl_eval").call(this,e,c))},b.prototype.insert=function(b,c){var d,e,f,g,h,i,j,k,l,m,n,o;if(d=this.$inputor,l=this.callbacks("inserting_wrapper").call(this,d,b,this.get_opt("suffix")),d.is("textarea, input"))i=d.val(),j=i.slice(0,Math.max(this.query.head_pos-this.at.length,0)),k=""+j+l+i.slice(this.query.end_pos||0),d.val(k),d.caret("pos",j.length+l.length,{iframe:this.app.iframe});else if(g=this.range){for(f=g.startOffset-(this.query.end_pos-this.query.head_pos)-this.at.length,g.setStart(g.endContainer,Math.max(f,0)),g.setEnd(g.endContainer,g.endOffset),g.deleteContents(),o=a(l,this.app.document),m=0,n=o.length;m<n;m++)e=o[m],g.insertNode(e),g.setEndAfter(e),g.collapse(!1);h=this.app.window.getSelection(),h.removeAllRanges(),h.addRange(g)}else(g=this.ie8_range)&&(g.moveStart("character",this.query.end_pos-this.query.head_pos-this.at.length),g.pasteHTML(l),g.collapse(!1),g.select());return d.is(":focus")||d.focus(),d.change()},b.prototype.render_view=function(a){var b;return b=this.get_opt("search_key"),a=this.callbacks("sorter").call(this,this.query.text,a.slice(0,1001),b),this.view.render(a.slice(0,this.get_opt("limit")))},b.prototype.look_up=function(){var b,c;if(b=this.catch_query())return c=function(a){return a&&a.length>0?this.render_view(a):this.view.hide()},this.model.query(b.text,a.proxy(c,this)),b},b}(),g=function(){function b(a){this.context=a,this.at=this.context.at,this.storage=this.context.$inputor}return b.prototype.destroy=function(){return this.storage.data(this.at,null)},b.prototype.saved=function(){return this.fetch()>0},b.prototype.query=function(a,b){var c,d,e;return c=this.fetch(),d=this.context.get_opt("search_key"),c=this.context.callbacks("filter").call(this.context,a,c,d)||[],e=this.context.callbacks("remote_filter"),c.length>0||!e&&0===c.length?b(c):e.call(this.context,a,b)},b.prototype.fetch=function(){return this.storage.data(this.at)||[]},b.prototype.save=function(a){return this.storage.data(this.at,this.context.callbacks("before_save").call(this.context,a||[]))},b.prototype.load=function(a){if(!this.saved()&&a)return this._load(a)},b.prototype.reload=function(a){return this._load(a)},b.prototype._load=function(b){return"string"==typeof b?a.ajax(b,{dataType:"json"}).done(function(a){return function(b){return a.save(b)}}(this)):this.save(b)},b}(),h=function(){function b(b){this.context=b,this.$el=a("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.timeout_id=null,this.context.$el.append(this.$el),this.bind_event()}return b.prototype.init=function(){var a;return a=this.context.get_opt("alias")||this.context.at.charCodeAt(0),this.$el.attr({id:"at-view-"+a})},b.prototype.destroy=function(){return this.$el.remove()},b.prototype.bind_event=function(){var b;return b=this.$el.find("ul"),b.on("mouseenter.atwho-view","li",function(c){return b.find(".cur").removeClass("cur"),a(c.currentTarget).addClass("cur")}).on("click.atwho-view","li",function(c){return function(d){return b.find(".cur").removeClass("cur"),a(d.currentTarget).addClass("cur"),c.choose(d),d.preventDefault()}}(this))},b.prototype.visible=function(){return this.$el.is(":visible")},b.prototype.choose=function(a){var b,c;if((b=this.$el.find(".cur")).length&&(c=this.context.insert_content_for(b),this.context.insert(this.context.callbacks("before_insert").call(this.context,c,b),b),this.context.trigger("inserted",[b,a]),this.hide(a)),this.context.get_opt("hide_without_suffix"))return this.stop_showing=!0},b.prototype.reposition=function(b){var c,d,e,f;return f=this.context.app.iframeStandalone?this.context.app.window:window,b.bottom+this.$el.height()-a(f).scrollTop()>a(f).height()&&(b.bottom=b.top-this.$el.height()),b.left>(d=a(f).width()-this.$el.width()-5)&&(b.left=d),c={left:b.left,top:b.bottom},null!=(e=this.context.callbacks("before_reposition"))&&e.call(this.context,c),this.$el.offset(c),this.context.trigger("reposition",[c])},b.prototype.next=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.next(),b.length||(b=this.$el.find("li:first")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.prev=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.prev(),b.length||(b=this.$el.find("li:last")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.show=function(){var a;return this.stop_showing?void(this.stop_showing=!1):(this.context.mark_range(),this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(a=this.context.rect())?this.reposition(a):void 0)},b.prototype.hide=function(a,b){var c;if(this.visible())return isNaN(b)?(this.context.reset_rect(),this.$el.hide(),this.context.trigger("hidden",[a])):(c=function(a){return function(){return a.hide()}}(this),clearTimeout(this.timeout_id),this.timeout_id=setTimeout(c,b))},b.prototype.render=function(b){var c,d,e,f,g,h,i;if(!(a.isArray(b)&&b.length>0))return void this.hide();for(this.$el.find("ul").empty(),d=this.$el.find("ul"),g=this.context.get_opt("tpl"),h=0,i=b.length;h<i;h++)e=b[h],e=a.extend({},e,{"atwho-at":this.context.at}),f=this.context.callbacks("tpl_eval").call(this.context,g,e),c=a(this.context.callbacks("highlighter").call(this.context,f,this.context.query.text)),c.data("item-data",e),d.append(c);return this.show(),this.context.get_opt("highlight_first")?d.find("li:first").addClass("cur"):void 0},b}(),f={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78},e={before_save:function(b){var c,d,e,f;if(!a.isArray(b))return b;for(f=[],d=0,e=b.length;d<e;d++)c=b[d],a.isPlainObject(c)?f.push(c):f.push({name:c});return f},matcher:function(a,b,c){var d,e,f,g;return a=a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),c&&(a="(?:^|\\s)"+a),f=decodeURI("%C3%80"),g=decodeURI("%C3%BF"),e=new RegExp(""+a+"([A-Za-z"+f+"-"+g+"0-9_+-]*)$|"+a+"([^\\x00-\\xff]*)$","gi"),d=e.exec(b),d?d[2]||d[1]:null},filter:function(a,b,c){var d,e,f,g;for(g=[],e=0,f=b.length;e<f;e++)d=b[e],~new String(d[c]).toLowerCase().indexOf(a.toLowerCase())&&g.push(d);return g},remote_filter:null,sorter:function(a,b,c){var d,e,f,g;if(!a)return b;for(g=[],e=0,f=b.length;e<f;e++)d=b[e],d.atwho_order=new String(d[c]).toLowerCase().indexOf(a.toLowerCase()),d.atwho_order>-1&&g.push(d);return g.sort(function(a,b){return a.atwho_order-b.atwho_order})},tpl_eval:function(a,b){var c;try{return a.replace(/\$\{([^\}]*)\}/g,function(a,c,d){return b[c]})}catch(a){return c=a,""}},highlighter:function(a,b){var c;return b?(c=new RegExp(">\\s*(\\w*?)("+b.replace("+","\\+")+")(\\w*)\\s*<","ig"),a.replace(c,function(a,b,c,d){return"> "+b+"<strong>"+c+"</strong>"+d+" <"})):a},before_insert:function(a,b){return a},inserting_wrapper:function(a,b,c){var d;return c=""===c?c:c||" ",a.is("textarea, input")?""+b+c:"true"===a.attr("contentEditable")?(c=" "===c?"&nbsp;":c,/firefox/i.test(navigator.userAgent)?d="<span>"+b+c+"</span>":(c="<span contenteditable='false'>"+c+"</span>",d="<span contenteditable='false'>"+b+c+"</span>"),this.app.document.selection&&(d="<span contenteditable='true'>"+b+"</span>"),d+"<span></span>"):void 0}},b={load:function(a,b){var c;if(c=this.controller(a))return c.model.load(b)},setIframe:function(a,b){return this.setIframe(a,b),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},a.fn.atwho=function(d){var e,f;return f=arguments,e=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var g,h;return(h=(g=a(this)).data("atwho"))||g.data("atwho",h=new c(this)),"object"!=typeof d&&d?b[d]&&h?e=b[d].apply(h,Array.prototype.slice.call(f,1)):a.error("Method "+d+" does not exist on jQuery.caret"):h.reg(d.at,d)}),e||this},a.fn.atwho.default={at:void 0,alias:void 0,data:null,tpl:"<li data-value='${atwho-at}${name}'>${name}</li>",insert_tpl:"<span id='${id}'>${atwho-data-value}</span>",callbacks:e,search_key:"name",suffix:void 0,hide_without_suffix:!1,start_with_space:!0,highlight_first:!0,limit:5,max_len:20,display_timeout:300,delay:null}});
bp-core/js/{jquery.atwho.txt → vendor/jquery.atwho.txt} RENAMED
File without changes
bp-core/js/{jquery.caret.js → vendor/jquery.caret.js} RENAMED
File without changes
bp-core/js/{jquery.caret.min.js → vendor/jquery.caret.min.js} RENAMED
@@ -1 +1 @@
1
- !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l;k="caret",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(a){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint("EndToEnd",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart("character",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(b){var c,d,e,f,g;return j.getSelection&&(e=this.range())?(e.endOffset-1>0&&e.endContainer===!this.domInputor&&(c=e.cloneRange(),c.setStart(e.endContainer,e.endOffset-1),c.setEnd(e.endContainer,e.endOffset),f=c.getBoundingClientRect(),d={height:f.height,left:f.left+f.width,top:f.top},c.detach()),d&&0!==(null!=d?d.height:void 0)||(c=e.cloneRange(),g=a(h.createTextNode("|")),c.insertNode(g[0]),c.selectNode(g[0]),f=c.getBoundingClientRect(),d={height:f.height,left:f.left,top:f.top},g.remove(),c.detach())):h.selection&&(d=this.getOldIEOffset()),d&&(d.top+=a(j).scrollTop(),d.left+=a(j).scrollLeft()),d},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\r\n/g,"\n"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints("StartToEnd",a)>-1?c:-g.moveStart("character",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move("character",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move("character",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\s/g,"&nbsp;")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g="<span style='position: relative; display: inline;'>"+f(i)+"</span>",g+="<span id='caret' style='position: relative; display: inline;'>|</span>",g+="<span style='position: relative; display: inline;'>"+f(e)+"</span>",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find("#caret"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||"true"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error("Method "+d+" does not exist on jQuery.caret")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});
1
+ !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l;k="caret",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(a){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint("EndToEnd",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart("character",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(b){var c,d,e,f,g;return j.getSelection&&(e=this.range())?(e.endOffset-1>0&&e.endContainer===!this.domInputor&&(c=e.cloneRange(),c.setStart(e.endContainer,e.endOffset-1),c.setEnd(e.endContainer,e.endOffset),f=c.getBoundingClientRect(),d={height:f.height,left:f.left+f.width,top:f.top},c.detach()),d&&0!==(null!=d?d.height:void 0)||(c=e.cloneRange(),g=a(h.createTextNode("|")),c.insertNode(g[0]),c.selectNode(g[0]),f=c.getBoundingClientRect(),d={height:f.height,left:f.left,top:f.top},g.remove(),c.detach())):h.selection&&(d=this.getOldIEOffset()),d&&(d.top+=a(j).scrollTop(),d.left+=a(j).scrollLeft()),d},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\r\n/g,"\n"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints("StartToEnd",a)>-1?c:-g.moveStart("character",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move("character",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move("character",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\s/g,"&nbsp;")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g="<span style='position: relative; display: inline;'>"+f(i)+"</span>",g+="<span id='caret' style='position: relative; display: inline;'>|</span>",g+="<span style='position: relative; display: inline;'>"+f(e)+"</span>",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find("#caret"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||"true"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(a){b=a}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error("Method "+d+" does not exist on jQuery.caret")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});
bp-core/js/{jquery.caret.txt → vendor/jquery.caret.txt} RENAMED
File without changes
bp-core/js/vendor/livestamp.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Livestamp.js / v1.1.2 / (c) 2012 Matt Bradley / MIT License
2
+ (function($, moment) {
3
+ var updateInterval = 1e3,
4
+ paused = false,
5
+ $livestamps = $([]),
6
+
7
+ init = function() {
8
+ livestampGlobal.resume();
9
+ },
10
+
11
+ prep = function($el, timestamp) {
12
+ var oldData = $el.data('livestampdata');
13
+ if (typeof timestamp == 'number')
14
+ timestamp *= 1e3;
15
+
16
+ $el.removeAttr('data-livestamp')
17
+ .removeData('livestamp');
18
+
19
+ timestamp = moment(timestamp);
20
+ if (moment.isMoment(timestamp) && !isNaN(+timestamp)) {
21
+ var newData = $.extend({ }, { 'original': $el.contents() }, oldData);
22
+ newData.moment = moment(timestamp);
23
+
24
+ $el.data('livestampdata', newData).empty();
25
+ $livestamps.push($el[0]);
26
+ }
27
+ },
28
+
29
+ run = function() {
30
+ if (paused) return;
31
+ livestampGlobal.update();
32
+ setTimeout(run, updateInterval);
33
+ },
34
+
35
+ livestampGlobal = {
36
+ update: function() {
37
+ $('[data-livestamp]').each(function() {
38
+ var $this = $(this);
39
+ prep($this, $this.data('livestamp'));
40
+ });
41
+
42
+ var toRemove = [];
43
+ $livestamps.each(function() {
44
+ var $this = $(this),
45
+ data = $this.data('livestampdata');
46
+
47
+ if (data === undefined)
48
+ toRemove.push(this);
49
+ else if (moment.isMoment(data.moment)) {
50
+ var from = $this.html(),
51
+ to = data.moment.fromNow();
52
+
53
+ if (from != to) {
54
+ var e = $.Event('change.livestamp');
55
+ $this.trigger(e, [from, to]);
56
+ if (!e.isDefaultPrevented())
57
+ $this.html(to);
58
+ }
59
+ }
60
+ });
61
+
62
+ $livestamps = $livestamps.not(toRemove);
63
+ },
64
+
65
+ pause: function() {
66
+ paused = true;
67
+ },
68
+
69
+ resume: function() {
70
+ paused = false;
71
+ run();
72
+ },
73
+
74
+ interval: function(interval) {
75
+ if (interval === undefined)
76
+ return updateInterval;
77
+ updateInterval = interval;
78
+ }
79
+ },
80
+
81
+ livestampLocal = {
82
+ add: function($el, timestamp) {
83
+ if (typeof timestamp == 'number')
84
+ timestamp *= 1e3;
85
+ timestamp = moment(timestamp);
86
+
87
+ if (moment.isMoment(timestamp) && !isNaN(+timestamp)) {
88
+ $el.each(function() {
89
+ prep($(this), timestamp);
90
+ });
91
+ livestampGlobal.update();
92
+ }
93
+
94
+ return $el;
95
+ },
96
+
97
+ destroy: function($el) {
98
+ $livestamps = $livestamps.not($el);
99
+ $el.each(function() {
100
+ var $this = $(this),
101
+ data = $this.data('livestampdata');
102
+
103
+ if (data === undefined)
104
+ return $el;
105
+
106
+ $this
107
+ .html(data.original ? data.original : '')
108
+ .removeData('livestampdata');
109
+ });
110
+
111
+ return $el;
112
+ },
113
+
114
+ isLivestamp: function($el) {
115
+ return $el.data('livestampdata') !== undefined;
116
+ }
117
+ };
118
+
119
+ $.livestamp = livestampGlobal;
120
+ $(init);
121
+ $.fn.livestamp = function(method, options) {
122
+ if (!livestampLocal[method]) {
123
+ options = method;
124
+ method = 'add';
125
+ }
126
+
127
+ return livestampLocal[method](this, options);
128
+ };
129
+ })(jQuery, moment);
bp-core/js/vendor/livestamp.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){var c=1e3,d=!1,e=a([]),f=function(){i.resume()},g=function(c,d){var f=c.data("livestampdata");if("number"==typeof d&&(d*=1e3),c.removeAttr("data-livestamp").removeData("livestamp"),d=b(d),b.isMoment(d)&&!isNaN(+d)){var g=a.extend({},{original:c.contents()},f);g.moment=b(d),c.data("livestampdata",g).empty(),e.push(c[0])}},h=function(){d||(i.update(),setTimeout(h,c))},i={update:function(){a("[data-livestamp]").each(function(){var b=a(this);g(b,b.data("livestamp"))});var c=[];e.each(function(){var d=a(this),e=d.data("livestampdata");if(void 0===e)c.push(this);else if(b.isMoment(e.moment)){var f=d.html(),g=e.moment.fromNow();if(f!=g){var h=a.Event("change.livestamp");d.trigger(h,[f,g]),h.isDefaultPrevented()||d.html(g)}}}),e=e.not(c)},pause:function(){d=!0},resume:function(){d=!1,h()},interval:function(a){return void 0===a?c:void(c=a)}},j={add:function(c,d){return"number"==typeof d&&(d*=1e3),d=b(d),b.isMoment(d)&&!isNaN(+d)&&(c.each(function(){g(a(this),d)}),i.update()),c},destroy:function(b){return e=e.not(b),b.each(function(){var c=a(this),d=c.data("livestampdata");return void 0===d?b:void c.html(d.original?d.original:"").removeData("livestampdata")}),b},isLivestamp:function(a){return void 0!==a.data("livestampdata")}};a.livestamp=i,a(f),a.fn.livestamp=function(a,b){return j[a]||(b=a,a="add"),j[a](this,b)}}(jQuery,moment);
bp-core/js/vendor/moment-js/locale/af.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Afrikaans [af]
3
+ //! author : Werner Mollentze : https://github.com/wernerm
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var af = moment.defineLocale('af', {
14
+ months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
16
+ weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
17
+ weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
18
+ weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
19
+ meridiemParse: /vm|nm/i,
20
+ isPM : function (input) {
21
+ return /^nm$/i.test(input);
22
+ },
23
+ meridiem : function (hours, minutes, isLower) {
24
+ if (hours < 12) {
25
+ return isLower ? 'vm' : 'VM';
26
+ } else {
27
+ return isLower ? 'nm' : 'NM';
28
+ }
29
+ },
30
+ longDateFormat : {
31
+ LT : 'HH:mm',
32
+ LTS : 'HH:mm:ss',
33
+ L : 'DD/MM/YYYY',
34
+ LL : 'D MMMM YYYY',
35
+ LLL : 'D MMMM YYYY HH:mm',
36
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
37
+ },
38
+ calendar : {
39
+ sameDay : '[Vandag om] LT',
40
+ nextDay : '[Môre om] LT',
41
+ nextWeek : 'dddd [om] LT',
42
+ lastDay : '[Gister om] LT',
43
+ lastWeek : '[Laas] dddd [om] LT',
44
+ sameElse : 'L'
45
+ },
46
+ relativeTime : {
47
+ future : 'oor %s',
48
+ past : '%s gelede',
49
+ s : '\'n paar sekondes',
50
+ m : '\'n minuut',
51
+ mm : '%d minute',
52
+ h : '\'n uur',
53
+ hh : '%d ure',
54
+ d : '\'n dag',
55
+ dd : '%d dae',
56
+ M : '\'n maand',
57
+ MM : '%d maande',
58
+ y : '\'n jaar',
59
+ yy : '%d jaar'
60
+ },
61
+ ordinalParse: /\d{1,2}(ste|de)/,
62
+ ordinal : function (number) {
63
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
64
+ },
65
+ week : {
66
+ dow : 1, // Maandag is die eerste dag van die week.
67
+ doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
68
+ }
69
+ });
70
+
71
+ return af;
72
+
73
+ }));
bp-core/js/vendor/moment-js/locale/af.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ar-ly.js ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Arabic (Lybia) [ar-ly]
3
+ //! author : Ali Hmer: https://github.com/kikoanis
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '1',
15
+ '2': '2',
16
+ '3': '3',
17
+ '4': '4',
18
+ '5': '5',
19
+ '6': '6',
20
+ '7': '7',
21
+ '8': '8',
22
+ '9': '9',
23
+ '0': '0'
24
+ }, pluralForm = function (n) {
25
+ return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
26
+ }, plurals = {
27
+ s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
28
+ m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
29
+ h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
30
+ d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
31
+ M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
32
+ y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
33
+ }, pluralize = function (u) {
34
+ return function (number, withoutSuffix, string, isFuture) {
35
+ var f = pluralForm(number),
36
+ str = plurals[u][pluralForm(number)];
37
+ if (f === 2) {
38
+ str = str[withoutSuffix ? 0 : 1];
39
+ }
40
+ return str.replace(/%d/i, number);
41
+ };
42
+ }, months = [
43
+ 'يناير',
44
+ 'فبراير',
45
+ 'مارس',
46
+ 'أبريل',
47
+ 'مايو',
48
+ 'يونيو',
49
+ 'يوليو',
50
+ 'أغسطس',
51
+ 'سبتمبر',
52
+ 'أكتوبر',
53
+ 'نوفمبر',
54
+ 'ديسمبر'
55
+ ];
56
+
57
+ var ar_ly = moment.defineLocale('ar-ly', {
58
+ months : months,
59
+ monthsShort : months,
60
+ weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
61
+ weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
62
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
63
+ weekdaysParseExact : true,
64
+ longDateFormat : {
65
+ LT : 'HH:mm',
66
+ LTS : 'HH:mm:ss',
67
+ L : 'D/\u200FM/\u200FYYYY',
68
+ LL : 'D MMMM YYYY',
69
+ LLL : 'D MMMM YYYY HH:mm',
70
+ LLLL : 'dddd D MMMM YYYY HH:mm'
71
+ },
72
+ meridiemParse: /ص|م/,
73
+ isPM : function (input) {
74
+ return 'م' === input;
75
+ },
76
+ meridiem : function (hour, minute, isLower) {
77
+ if (hour < 12) {
78
+ return 'ص';
79
+ } else {
80
+ return 'م';
81
+ }
82
+ },
83
+ calendar : {
84
+ sameDay: '[اليوم عند الساعة] LT',
85
+ nextDay: '[غدًا عند الساعة] LT',
86
+ nextWeek: 'dddd [عند الساعة] LT',
87
+ lastDay: '[أمس عند الساعة] LT',
88
+ lastWeek: 'dddd [عند الساعة] LT',
89
+ sameElse: 'L'
90
+ },
91
+ relativeTime : {
92
+ future : 'بعد %s',
93
+ past : 'منذ %s',
94
+ s : pluralize('s'),
95
+ m : pluralize('m'),
96
+ mm : pluralize('m'),
97
+ h : pluralize('h'),
98
+ hh : pluralize('h'),
99
+ d : pluralize('d'),
100
+ dd : pluralize('d'),
101
+ M : pluralize('M'),
102
+ MM : pluralize('M'),
103
+ y : pluralize('y'),
104
+ yy : pluralize('y')
105
+ },
106
+ preparse: function (string) {
107
+ return string.replace(/\u200f/g, '').replace(/،/g, ',');
108
+ },
109
+ postformat: function (string) {
110
+ return string.replace(/\d/g, function (match) {
111
+ return symbolMap[match];
112
+ }).replace(/,/g, '،');
113
+ },
114
+ week : {
115
+ dow : 6, // Saturday is the first day of the week.
116
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
117
+ }
118
+ });
119
+
120
+ return ar_ly;
121
+
122
+ }));
bp-core/js/vendor/moment-js/locale/ar-ly.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},c=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},d={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},e=function(a){return function(b,e,f,g){var h=c(b),i=d[a][c(b)];return 2===h&&(i=i[e?0:1]),i.replace(/%d/i,b)}},f=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],g=a.defineLocale("ar-ly",{months:f,monthsShort:f,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:e("s"),m:e("m"),mm:e("m"),h:e("h"),hh:e("h"),d:e("d"),dd:e("d"),M:e("M"),MM:e("M"),y:e("y"),yy:e("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return g});
bp-core/js/vendor/moment-js/locale/ar-ma.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Arabic (Morocco) [ar-ma]
3
+ //! author : ElFadili Yassine : https://github.com/ElFadiliY
4
+ //! author : Abdel Said : https://github.com/abdelsaid
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var ar_ma = moment.defineLocale('ar-ma', {
15
+ months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
16
+ monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
17
+ weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
18
+ weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
19
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY HH:mm',
27
+ LLLL : 'dddd D MMMM YYYY HH:mm'
28
+ },
29
+ calendar : {
30
+ sameDay: '[اليوم على الساعة] LT',
31
+ nextDay: '[غدا على الساعة] LT',
32
+ nextWeek: 'dddd [على الساعة] LT',
33
+ lastDay: '[أمس على الساعة] LT',
34
+ lastWeek: 'dddd [على الساعة] LT',
35
+ sameElse: 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'في %s',
39
+ past : 'منذ %s',
40
+ s : 'ثوان',
41
+ m : 'دقيقة',
42
+ mm : '%d دقائق',
43
+ h : 'ساعة',
44
+ hh : '%d ساعات',
45
+ d : 'يوم',
46
+ dd : '%d أيام',
47
+ M : 'شهر',
48
+ MM : '%d أشهر',
49
+ y : 'سنة',
50
+ yy : '%d سنوات'
51
+ },
52
+ week : {
53
+ dow : 6, // Saturday is the first day of the week.
54
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
55
+ }
56
+ });
57
+
58
+ return ar_ma;
59
+
60
+ }));
bp-core/js/vendor/moment-js/locale/ar-ma.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return b});
bp-core/js/vendor/moment-js/locale/ar-sa.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Arabic (Saudi Arabia) [ar-sa]
3
+ //! author : Suhail Alkowaileet : https://github.com/xsoh
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '١',
15
+ '2': '٢',
16
+ '3': '٣',
17
+ '4': '٤',
18
+ '5': '٥',
19
+ '6': '٦',
20
+ '7': '٧',
21
+ '8': '٨',
22
+ '9': '٩',
23
+ '0': '٠'
24
+ }, numberMap = {
25
+ '١': '1',
26
+ '٢': '2',
27
+ '٣': '3',
28
+ '٤': '4',
29
+ '٥': '5',
30
+ '٦': '6',
31
+ '٧': '7',
32
+ '٨': '8',
33
+ '٩': '9',
34
+ '٠': '0'
35
+ };
36
+
37
+ var ar_sa = moment.defineLocale('ar-sa', {
38
+ months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
39
+ monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
40
+ weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
41
+ weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
42
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
43
+ weekdaysParseExact : true,
44
+ longDateFormat : {
45
+ LT : 'HH:mm',
46
+ LTS : 'HH:mm:ss',
47
+ L : 'DD/MM/YYYY',
48
+ LL : 'D MMMM YYYY',
49
+ LLL : 'D MMMM YYYY HH:mm',
50
+ LLLL : 'dddd D MMMM YYYY HH:mm'
51
+ },
52
+ meridiemParse: /ص|م/,
53
+ isPM : function (input) {
54
+ return 'م' === input;
55
+ },
56
+ meridiem : function (hour, minute, isLower) {
57
+ if (hour < 12) {
58
+ return 'ص';
59
+ } else {
60
+ return 'م';
61
+ }
62
+ },
63
+ calendar : {
64
+ sameDay: '[اليوم على الساعة] LT',
65
+ nextDay: '[غدا على الساعة] LT',
66
+ nextWeek: 'dddd [على الساعة] LT',
67
+ lastDay: '[أمس على الساعة] LT',
68
+ lastWeek: 'dddd [على الساعة] LT',
69
+ sameElse: 'L'
70
+ },
71
+ relativeTime : {
72
+ future : 'في %s',
73
+ past : 'منذ %s',
74
+ s : 'ثوان',
75
+ m : 'دقيقة',
76
+ mm : '%d دقائق',
77
+ h : 'ساعة',
78
+ hh : '%d ساعات',
79
+ d : 'يوم',
80
+ dd : '%d أيام',
81
+ M : 'شهر',
82
+ MM : '%d أشهر',
83
+ y : 'سنة',
84
+ yy : '%d سنوات'
85
+ },
86
+ preparse: function (string) {
87
+ return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
88
+ return numberMap[match];
89
+ }).replace(/،/g, ',');
90
+ },
91
+ postformat: function (string) {
92
+ return string.replace(/\d/g, function (match) {
93
+ return symbolMap[match];
94
+ }).replace(/,/g, '،');
95
+ },
96
+ week : {
97
+ dow : 6, // Saturday is the first day of the week.
98
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
99
+ }
100
+ });
101
+
102
+ return ar_sa;
103
+
104
+ }));
bp-core/js/vendor/moment-js/locale/ar-sa.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d});
bp-core/js/vendor/moment-js/locale/ar-tn.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Arabic (Tunisia) [ar-tn]
3
+ //! author : Nader Toukabri : https://github.com/naderio
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ar_tn = moment.defineLocale('ar-tn', {
14
+ months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
15
+ monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
16
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
17
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
18
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
19
+ weekdaysParseExact : true,
20
+ longDateFormat: {
21
+ LT: 'HH:mm',
22
+ LTS: 'HH:mm:ss',
23
+ L: 'DD/MM/YYYY',
24
+ LL: 'D MMMM YYYY',
25
+ LLL: 'D MMMM YYYY HH:mm',
26
+ LLLL: 'dddd D MMMM YYYY HH:mm'
27
+ },
28
+ calendar: {
29
+ sameDay: '[اليوم على الساعة] LT',
30
+ nextDay: '[غدا على الساعة] LT',
31
+ nextWeek: 'dddd [على الساعة] LT',
32
+ lastDay: '[أمس على الساعة] LT',
33
+ lastWeek: 'dddd [على الساعة] LT',
34
+ sameElse: 'L'
35
+ },
36
+ relativeTime: {
37
+ future: 'في %s',
38
+ past: 'منذ %s',
39
+ s: 'ثوان',
40
+ m: 'دقيقة',
41
+ mm: '%d دقائق',
42
+ h: 'ساعة',
43
+ hh: '%d ساعات',
44
+ d: 'يوم',
45
+ dd: '%d أيام',
46
+ M: 'شهر',
47
+ MM: '%d أشهر',
48
+ y: 'سنة',
49
+ yy: '%d سنوات'
50
+ },
51
+ week: {
52
+ dow: 1, // Monday is the first day of the week.
53
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
54
+ }
55
+ });
56
+
57
+ return ar_tn;
58
+
59
+ }));
bp-core/js/vendor/moment-js/locale/ar-tn.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ar.js ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Arabic [ar]
3
+ //! author : Abdel Said: https://github.com/abdelsaid
4
+ //! author : Ahmed Elkhatib
5
+ //! author : forabi https://github.com/forabi
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var symbolMap = {
16
+ '1': '١',
17
+ '2': '٢',
18
+ '3': '٣',
19
+ '4': '٤',
20
+ '5': '٥',
21
+ '6': '٦',
22
+ '7': '٧',
23
+ '8': '٨',
24
+ '9': '٩',
25
+ '0': '٠'
26
+ }, numberMap = {
27
+ '١': '1',
28
+ '٢': '2',
29
+ '٣': '3',
30
+ '٤': '4',
31
+ '٥': '5',
32
+ '٦': '6',
33
+ '٧': '7',
34
+ '٨': '8',
35
+ '٩': '9',
36
+ '٠': '0'
37
+ }, pluralForm = function (n) {
38
+ return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
39
+ }, plurals = {
40
+ s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
41
+ m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
42
+ h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
43
+ d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
44
+ M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
45
+ y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
46
+ }, pluralize = function (u) {
47
+ return function (number, withoutSuffix, string, isFuture) {
48
+ var f = pluralForm(number),
49
+ str = plurals[u][pluralForm(number)];
50
+ if (f === 2) {
51
+ str = str[withoutSuffix ? 0 : 1];
52
+ }
53
+ return str.replace(/%d/i, number);
54
+ };
55
+ }, months = [
56
+ 'كانون الثاني يناير',
57
+ 'شباط فبراير',
58
+ 'آذار مارس',
59
+ 'نيسان أبريل',
60
+ 'أيار مايو',
61
+ 'حزيران يونيو',
62
+ 'تموز يوليو',
63
+ 'آب أغسطس',
64
+ 'أيلول سبتمبر',
65
+ 'تشرين الأول أكتوبر',
66
+ 'تشرين الثاني نوفمبر',
67
+ 'كانون الأول ديسمبر'
68
+ ];
69
+
70
+ var ar = moment.defineLocale('ar', {
71
+ months : months,
72
+ monthsShort : months,
73
+ weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
74
+ weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
75
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
76
+ weekdaysParseExact : true,
77
+ longDateFormat : {
78
+ LT : 'HH:mm',
79
+ LTS : 'HH:mm:ss',
80
+ L : 'D/\u200FM/\u200FYYYY',
81
+ LL : 'D MMMM YYYY',
82
+ LLL : 'D MMMM YYYY HH:mm',
83
+ LLLL : 'dddd D MMMM YYYY HH:mm'
84
+ },
85
+ meridiemParse: /ص|م/,
86
+ isPM : function (input) {
87
+ return 'م' === input;
88
+ },
89
+ meridiem : function (hour, minute, isLower) {
90
+ if (hour < 12) {
91
+ return 'ص';
92
+ } else {
93
+ return 'م';
94
+ }
95
+ },
96
+ calendar : {
97
+ sameDay: '[اليوم عند الساعة] LT',
98
+ nextDay: '[غدًا عند الساعة] LT',
99
+ nextWeek: 'dddd [عند الساعة] LT',
100
+ lastDay: '[أمس عند الساعة] LT',
101
+ lastWeek: 'dddd [عند الساعة] LT',
102
+ sameElse: 'L'
103
+ },
104
+ relativeTime : {
105
+ future : 'بعد %s',
106
+ past : 'منذ %s',
107
+ s : pluralize('s'),
108
+ m : pluralize('m'),
109
+ mm : pluralize('m'),
110
+ h : pluralize('h'),
111
+ hh : pluralize('h'),
112
+ d : pluralize('d'),
113
+ dd : pluralize('d'),
114
+ M : pluralize('M'),
115
+ MM : pluralize('M'),
116
+ y : pluralize('y'),
117
+ yy : pluralize('y')
118
+ },
119
+ preparse: function (string) {
120
+ return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
121
+ return numberMap[match];
122
+ }).replace(/،/g, ',');
123
+ },
124
+ postformat: function (string) {
125
+ return string.replace(/\d/g, function (match) {
126
+ return symbolMap[match];
127
+ }).replace(/,/g, '،');
128
+ },
129
+ week : {
130
+ dow : 6, // Saturday is the first day of the week.
131
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
132
+ }
133
+ });
134
+
135
+ return ar;
136
+
137
+ }));
bp-core/js/vendor/moment-js/locale/ar.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},e={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},f=function(a){return function(b,c,f,g){var h=d(b),i=e[a][d(b)];return 2===h&&(i=i[c?0:1]),i.replace(/%d/i,b)}},g=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],h=a.defineLocale("ar",{months:g,monthsShort:g,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return h});
bp-core/js/vendor/moment-js/locale/az.js ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Azerbaijani [az]
3
+ //! author : topchiyev : https://github.com/topchiyev
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var suffixes = {
14
+ 1: '-inci',
15
+ 5: '-inci',
16
+ 8: '-inci',
17
+ 70: '-inci',
18
+ 80: '-inci',
19
+ 2: '-nci',
20
+ 7: '-nci',
21
+ 20: '-nci',
22
+ 50: '-nci',
23
+ 3: '-üncü',
24
+ 4: '-üncü',
25
+ 100: '-üncü',
26
+ 6: '-ncı',
27
+ 9: '-uncu',
28
+ 10: '-uncu',
29
+ 30: '-uncu',
30
+ 60: '-ıncı',
31
+ 90: '-ıncı'
32
+ };
33
+
34
+ var az = moment.defineLocale('az', {
35
+ months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
36
+ monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
37
+ weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
38
+ weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
39
+ weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
40
+ weekdaysParseExact : true,
41
+ longDateFormat : {
42
+ LT : 'HH:mm',
43
+ LTS : 'HH:mm:ss',
44
+ L : 'DD.MM.YYYY',
45
+ LL : 'D MMMM YYYY',
46
+ LLL : 'D MMMM YYYY HH:mm',
47
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
48
+ },
49
+ calendar : {
50
+ sameDay : '[bugün saat] LT',
51
+ nextDay : '[sabah saat] LT',
52
+ nextWeek : '[gələn həftə] dddd [saat] LT',
53
+ lastDay : '[dünən] LT',
54
+ lastWeek : '[keçən həftə] dddd [saat] LT',
55
+ sameElse : 'L'
56
+ },
57
+ relativeTime : {
58
+ future : '%s sonra',
59
+ past : '%s əvvəl',
60
+ s : 'birneçə saniyyə',
61
+ m : 'bir dəqiqə',
62
+ mm : '%d dəqiqə',
63
+ h : 'bir saat',
64
+ hh : '%d saat',
65
+ d : 'bir gün',
66
+ dd : '%d gün',
67
+ M : 'bir ay',
68
+ MM : '%d ay',
69
+ y : 'bir il',
70
+ yy : '%d il'
71
+ },
72
+ meridiemParse: /gecə|səhər|gündüz|axşam/,
73
+ isPM : function (input) {
74
+ return /^(gündüz|axşam)$/.test(input);
75
+ },
76
+ meridiem : function (hour, minute, isLower) {
77
+ if (hour < 4) {
78
+ return 'gecə';
79
+ } else if (hour < 12) {
80
+ return 'səhər';
81
+ } else if (hour < 17) {
82
+ return 'gündüz';
83
+ } else {
84
+ return 'axşam';
85
+ }
86
+ },
87
+ ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
88
+ ordinal : function (number) {
89
+ if (number === 0) { // special case for zero
90
+ return number + '-ıncı';
91
+ }
92
+ var a = number % 10,
93
+ b = number % 100 - a,
94
+ c = number >= 100 ? 100 : null;
95
+ return number + (suffixes[a] || suffixes[b] || suffixes[c]);
96
+ },
97
+ week : {
98
+ dow : 1, // Monday is the first day of the week.
99
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
100
+ }
101
+ });
102
+
103
+ return az;
104
+
105
+ }));
bp-core/js/vendor/moment-js/locale/az.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},c=a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return a<4?"gecə":a<12?"səhər":a<17?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/be.js ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Belarusian [be]
3
+ //! author : Dmitry Demidov : https://github.com/demidov91
4
+ //! author: Praleska: http://praleska.pro/
5
+ //! Author : Menelion Elensúle : https://github.com/Oire
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ function plural(word, num) {
16
+ var forms = word.split('_');
17
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
18
+ }
19
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
20
+ var format = {
21
+ 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
22
+ 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
23
+ 'dd': 'дзень_дні_дзён',
24
+ 'MM': 'месяц_месяцы_месяцаў',
25
+ 'yy': 'год_гады_гадоў'
26
+ };
27
+ if (key === 'm') {
28
+ return withoutSuffix ? 'хвіліна' : 'хвіліну';
29
+ }
30
+ else if (key === 'h') {
31
+ return withoutSuffix ? 'гадзіна' : 'гадзіну';
32
+ }
33
+ else {
34
+ return number + ' ' + plural(format[key], +number);
35
+ }
36
+ }
37
+
38
+ var be = moment.defineLocale('be', {
39
+ months : {
40
+ format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
41
+ standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
42
+ },
43
+ monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
44
+ weekdays : {
45
+ format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
46
+ standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
47
+ isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
48
+ },
49
+ weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
50
+ weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
51
+ longDateFormat : {
52
+ LT : 'HH:mm',
53
+ LTS : 'HH:mm:ss',
54
+ L : 'DD.MM.YYYY',
55
+ LL : 'D MMMM YYYY г.',
56
+ LLL : 'D MMMM YYYY г., HH:mm',
57
+ LLLL : 'dddd, D MMMM YYYY г., HH:mm'
58
+ },
59
+ calendar : {
60
+ sameDay: '[Сёння ў] LT',
61
+ nextDay: '[Заўтра ў] LT',
62
+ lastDay: '[Учора ў] LT',
63
+ nextWeek: function () {
64
+ return '[У] dddd [ў] LT';
65
+ },
66
+ lastWeek: function () {
67
+ switch (this.day()) {
68
+ case 0:
69
+ case 3:
70
+ case 5:
71
+ case 6:
72
+ return '[У мінулую] dddd [ў] LT';
73
+ case 1:
74
+ case 2:
75
+ case 4:
76
+ return '[У мінулы] dddd [ў] LT';
77
+ }
78
+ },
79
+ sameElse: 'L'
80
+ },
81
+ relativeTime : {
82
+ future : 'праз %s',
83
+ past : '%s таму',
84
+ s : 'некалькі секунд',
85
+ m : relativeTimeWithPlural,
86
+ mm : relativeTimeWithPlural,
87
+ h : relativeTimeWithPlural,
88
+ hh : relativeTimeWithPlural,
89
+ d : 'дзень',
90
+ dd : relativeTimeWithPlural,
91
+ M : 'месяц',
92
+ MM : relativeTimeWithPlural,
93
+ y : 'год',
94
+ yy : relativeTimeWithPlural
95
+ },
96
+ meridiemParse: /ночы|раніцы|дня|вечара/,
97
+ isPM : function (input) {
98
+ return /^(дня|вечара)$/.test(input);
99
+ },
100
+ meridiem : function (hour, minute, isLower) {
101
+ if (hour < 4) {
102
+ return 'ночы';
103
+ } else if (hour < 12) {
104
+ return 'раніцы';
105
+ } else if (hour < 17) {
106
+ return 'дня';
107
+ } else {
108
+ return 'вечара';
109
+ }
110
+ },
111
+ ordinalParse: /\d{1,2}-(і|ы|га)/,
112
+ ordinal: function (number, period) {
113
+ switch (period) {
114
+ case 'M':
115
+ case 'd':
116
+ case 'DDD':
117
+ case 'w':
118
+ case 'W':
119
+ return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
120
+ case 'D':
121
+ return number + '-га';
122
+ default:
123
+ return number;
124
+ }
125
+ },
126
+ week : {
127
+ dow : 1, // Monday is the first day of the week.
128
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
129
+ }
130
+ });
131
+
132
+ return be;
133
+
134
+ }));
bp-core/js/vendor/moment-js/locale/be.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:c?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===d?c?"хвіліна":"хвіліну":"h"===d?c?"гадзіна":"гадзіну":a+" "+b(e[d],+a)}var d=a.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:c,mm:c,h:c,hh:c,d:"дзень",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночы":a<12?"раніцы":a<17?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}});return d});
bp-core/js/vendor/moment-js/locale/bg.js ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Bulgarian [bg]
3
+ //! author : Krasen Borisov : https://github.com/kraz
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var bg = moment.defineLocale('bg', {
14
+ months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
15
+ monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
16
+ weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
17
+ weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
18
+ weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'H:mm',
21
+ LTS : 'H:mm:ss',
22
+ L : 'D.MM.YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY H:mm',
25
+ LLLL : 'dddd, D MMMM YYYY H:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Днес в] LT',
29
+ nextDay : '[Утре в] LT',
30
+ nextWeek : 'dddd [в] LT',
31
+ lastDay : '[Вчера в] LT',
32
+ lastWeek : function () {
33
+ switch (this.day()) {
34
+ case 0:
35
+ case 3:
36
+ case 6:
37
+ return '[В изминалата] dddd [в] LT';
38
+ case 1:
39
+ case 2:
40
+ case 4:
41
+ case 5:
42
+ return '[В изминалия] dddd [в] LT';
43
+ }
44
+ },
45
+ sameElse : 'L'
46
+ },
47
+ relativeTime : {
48
+ future : 'след %s',
49
+ past : 'преди %s',
50
+ s : 'няколко секунди',
51
+ m : 'минута',
52
+ mm : '%d минути',
53
+ h : 'час',
54
+ hh : '%d часа',
55
+ d : 'ден',
56
+ dd : '%d дни',
57
+ M : 'месец',
58
+ MM : '%d месеца',
59
+ y : 'година',
60
+ yy : '%d години'
61
+ },
62
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
63
+ ordinal : function (number) {
64
+ var lastDigit = number % 10,
65
+ last2Digits = number % 100;
66
+ if (number === 0) {
67
+ return number + '-ев';
68
+ } else if (last2Digits === 0) {
69
+ return number + '-ен';
70
+ } else if (last2Digits > 10 && last2Digits < 20) {
71
+ return number + '-ти';
72
+ } else if (lastDigit === 1) {
73
+ return number + '-ви';
74
+ } else if (lastDigit === 2) {
75
+ return number + '-ри';
76
+ } else if (lastDigit === 7 || lastDigit === 8) {
77
+ return number + '-ми';
78
+ } else {
79
+ return number + '-ти';
80
+ }
81
+ },
82
+ week : {
83
+ dow : 1, // Monday is the first day of the week.
84
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
85
+ }
86
+ });
87
+
88
+ return bg;
89
+
90
+ }));
bp-core/js/vendor/moment-js/locale/bg.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&c<20?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/bn.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Bengali [bn]
3
+ //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '১',
15
+ '2': '২',
16
+ '3': '৩',
17
+ '4': '৪',
18
+ '5': '৫',
19
+ '6': '৬',
20
+ '7': '৭',
21
+ '8': '৮',
22
+ '9': '৯',
23
+ '0': '০'
24
+ },
25
+ numberMap = {
26
+ '১': '1',
27
+ '২': '2',
28
+ '৩': '3',
29
+ '৪': '4',
30
+ '৫': '5',
31
+ '৬': '6',
32
+ '৭': '7',
33
+ '৮': '8',
34
+ '৯': '9',
35
+ '০': '0'
36
+ };
37
+
38
+ var bn = moment.defineLocale('bn', {
39
+ months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
40
+ monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
41
+ weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
42
+ weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
43
+ weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
44
+ longDateFormat : {
45
+ LT : 'A h:mm সময়',
46
+ LTS : 'A h:mm:ss সময়',
47
+ L : 'DD/MM/YYYY',
48
+ LL : 'D MMMM YYYY',
49
+ LLL : 'D MMMM YYYY, A h:mm সময়',
50
+ LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
51
+ },
52
+ calendar : {
53
+ sameDay : '[আজ] LT',
54
+ nextDay : '[আগামীকাল] LT',
55
+ nextWeek : 'dddd, LT',
56
+ lastDay : '[গতকাল] LT',
57
+ lastWeek : '[গত] dddd, LT',
58
+ sameElse : 'L'
59
+ },
60
+ relativeTime : {
61
+ future : '%s পরে',
62
+ past : '%s আগে',
63
+ s : 'কয়েক সেকেন্ড',
64
+ m : 'এক মিনিট',
65
+ mm : '%d মিনিট',
66
+ h : 'এক ঘন্টা',
67
+ hh : '%d ঘন্টা',
68
+ d : 'এক দিন',
69
+ dd : '%d দিন',
70
+ M : 'এক মাস',
71
+ MM : '%d মাস',
72
+ y : 'এক বছর',
73
+ yy : '%d বছর'
74
+ },
75
+ preparse: function (string) {
76
+ return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
77
+ return numberMap[match];
78
+ });
79
+ },
80
+ postformat: function (string) {
81
+ return string.replace(/\d/g, function (match) {
82
+ return symbolMap[match];
83
+ });
84
+ },
85
+ meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
86
+ meridiemHour : function (hour, meridiem) {
87
+ if (hour === 12) {
88
+ hour = 0;
89
+ }
90
+ if ((meridiem === 'রাত' && hour >= 4) ||
91
+ (meridiem === 'দুপুর' && hour < 5) ||
92
+ meridiem === 'বিকাল') {
93
+ return hour + 12;
94
+ } else {
95
+ return hour;
96
+ }
97
+ },
98
+ meridiem : function (hour, minute, isLower) {
99
+ if (hour < 4) {
100
+ return 'রাত';
101
+ } else if (hour < 10) {
102
+ return 'সকাল';
103
+ } else if (hour < 17) {
104
+ return 'দুপুর';
105
+ } else if (hour < 20) {
106
+ return 'বিকাল';
107
+ } else {
108
+ return 'রাত';
109
+ }
110
+ },
111
+ week : {
112
+ dow : 0, // Sunday is the first day of the week.
113
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
114
+ }
115
+ });
116
+
117
+ return bn;
118
+
119
+ }));
bp-core/js/vendor/moment-js/locale/bn.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},c={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},d=a.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(a,b){return 12===a&&(a=0),"রাত"===b&&a>=4||"দুপুর"===b&&a<5||"বিকাল"===b?a+12:a},meridiem:function(a,b,c){return a<4?"রাত":a<10?"সকাল":a<17?"দুপুর":a<20?"বিকাল":"রাত"},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/bo.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Tibetan [bo]
3
+ //! author : Thupten N. Chakrishar : https://github.com/vajradog
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '༡',
15
+ '2': '༢',
16
+ '3': '༣',
17
+ '4': '༤',
18
+ '5': '༥',
19
+ '6': '༦',
20
+ '7': '༧',
21
+ '8': '༨',
22
+ '9': '༩',
23
+ '0': '༠'
24
+ },
25
+ numberMap = {
26
+ '༡': '1',
27
+ '༢': '2',
28
+ '༣': '3',
29
+ '༤': '4',
30
+ '༥': '5',
31
+ '༦': '6',
32
+ '༧': '7',
33
+ '༨': '8',
34
+ '༩': '9',
35
+ '༠': '0'
36
+ };
37
+
38
+ var bo = moment.defineLocale('bo', {
39
+ months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
40
+ monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
41
+ weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
42
+ weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
43
+ weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
44
+ longDateFormat : {
45
+ LT : 'A h:mm',
46
+ LTS : 'A h:mm:ss',
47
+ L : 'DD/MM/YYYY',
48
+ LL : 'D MMMM YYYY',
49
+ LLL : 'D MMMM YYYY, A h:mm',
50
+ LLLL : 'dddd, D MMMM YYYY, A h:mm'
51
+ },
52
+ calendar : {
53
+ sameDay : '[དི་རིང] LT',
54
+ nextDay : '[སང་ཉིན] LT',
55
+ nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
56
+ lastDay : '[ཁ་སང] LT',
57
+ lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
58
+ sameElse : 'L'
59
+ },
60
+ relativeTime : {
61
+ future : '%s ལ་',
62
+ past : '%s སྔན་ལ',
63
+ s : 'ལམ་སང',
64
+ m : 'སྐར་མ་གཅིག',
65
+ mm : '%d སྐར་མ',
66
+ h : 'ཆུ་ཚོད་གཅིག',
67
+ hh : '%d ཆུ་ཚོད',
68
+ d : 'ཉིན་གཅིག',
69
+ dd : '%d ཉིན་',
70
+ M : 'ཟླ་བ་གཅིག',
71
+ MM : '%d ཟླ་བ',
72
+ y : 'ལོ་གཅིག',
73
+ yy : '%d ལོ'
74
+ },
75
+ preparse: function (string) {
76
+ return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
77
+ return numberMap[match];
78
+ });
79
+ },
80
+ postformat: function (string) {
81
+ return string.replace(/\d/g, function (match) {
82
+ return symbolMap[match];
83
+ });
84
+ },
85
+ meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
86
+ meridiemHour : function (hour, meridiem) {
87
+ if (hour === 12) {
88
+ hour = 0;
89
+ }
90
+ if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
91
+ (meridiem === 'ཉིན་གུང' && hour < 5) ||
92
+ meridiem === 'དགོང་དག') {
93
+ return hour + 12;
94
+ } else {
95
+ return hour;
96
+ }
97
+ },
98
+ meridiem : function (hour, minute, isLower) {
99
+ if (hour < 4) {
100
+ return 'མཚན་མོ';
101
+ } else if (hour < 10) {
102
+ return 'ཞོགས་ཀས';
103
+ } else if (hour < 17) {
104
+ return 'ཉིན་གུང';
105
+ } else if (hour < 20) {
106
+ return 'དགོང་དག';
107
+ } else {
108
+ return 'མཚན་མོ';
109
+ }
110
+ },
111
+ week : {
112
+ dow : 0, // Sunday is the first day of the week.
113
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
114
+ }
115
+ });
116
+
117
+ return bo;
118
+
119
+ }));
bp-core/js/vendor/moment-js/locale/bo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},c={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},d=a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(a,b){return 12===a&&(a=0),"མཚན་མོ"===b&&a>=4||"ཉིན་གུང"===b&&a<5||"དགོང་དག"===b?a+12:a},meridiem:function(a,b,c){return a<4?"མཚན་མོ":a<10?"ཞོགས་ཀས":a<17?"ཉིན་གུང":a<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/br.js ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Breton [br]
3
+ //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ function relativeTimeWithMutation(number, withoutSuffix, key) {
14
+ var format = {
15
+ 'mm': 'munutenn',
16
+ 'MM': 'miz',
17
+ 'dd': 'devezh'
18
+ };
19
+ return number + ' ' + mutation(format[key], number);
20
+ }
21
+ function specialMutationForYears(number) {
22
+ switch (lastNumber(number)) {
23
+ case 1:
24
+ case 3:
25
+ case 4:
26
+ case 5:
27
+ case 9:
28
+ return number + ' bloaz';
29
+ default:
30
+ return number + ' vloaz';
31
+ }
32
+ }
33
+ function lastNumber(number) {
34
+ if (number > 9) {
35
+ return lastNumber(number % 10);
36
+ }
37
+ return number;
38
+ }
39
+ function mutation(text, number) {
40
+ if (number === 2) {
41
+ return softMutation(text);
42
+ }
43
+ return text;
44
+ }
45
+ function softMutation(text) {
46
+ var mutationTable = {
47
+ 'm': 'v',
48
+ 'b': 'v',
49
+ 'd': 'z'
50
+ };
51
+ if (mutationTable[text.charAt(0)] === undefined) {
52
+ return text;
53
+ }
54
+ return mutationTable[text.charAt(0)] + text.substring(1);
55
+ }
56
+
57
+ var br = moment.defineLocale('br', {
58
+ months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
59
+ monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
60
+ weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
61
+ weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
62
+ weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
63
+ weekdaysParseExact : true,
64
+ longDateFormat : {
65
+ LT : 'h[e]mm A',
66
+ LTS : 'h[e]mm:ss A',
67
+ L : 'DD/MM/YYYY',
68
+ LL : 'D [a viz] MMMM YYYY',
69
+ LLL : 'D [a viz] MMMM YYYY h[e]mm A',
70
+ LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
71
+ },
72
+ calendar : {
73
+ sameDay : '[Hiziv da] LT',
74
+ nextDay : '[Warc\'hoazh da] LT',
75
+ nextWeek : 'dddd [da] LT',
76
+ lastDay : '[Dec\'h da] LT',
77
+ lastWeek : 'dddd [paset da] LT',
78
+ sameElse : 'L'
79
+ },
80
+ relativeTime : {
81
+ future : 'a-benn %s',
82
+ past : '%s \'zo',
83
+ s : 'un nebeud segondennoù',
84
+ m : 'ur vunutenn',
85
+ mm : relativeTimeWithMutation,
86
+ h : 'un eur',
87
+ hh : '%d eur',
88
+ d : 'un devezh',
89
+ dd : relativeTimeWithMutation,
90
+ M : 'ur miz',
91
+ MM : relativeTimeWithMutation,
92
+ y : 'ur bloaz',
93
+ yy : specialMutationForYears
94
+ },
95
+ ordinalParse: /\d{1,2}(añ|vet)/,
96
+ ordinal : function (number) {
97
+ var output = (number === 1) ? 'añ' : 'vet';
98
+ return number + output;
99
+ },
100
+ week : {
101
+ dow : 1, // Monday is the first day of the week.
102
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
103
+ }
104
+ });
105
+
106
+ return br;
107
+
108
+ }));
bp-core/js/vendor/moment-js/locale/br.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+e(d[c],a)}function c(a){switch(d(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function d(a){return a>9?d(a%10):a}function e(a,b){return 2===b?f(a):a}function f(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}var g=a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:b,h:"un eur",hh:"%d eur",d:"un devezh",dd:b,M:"ur miz",MM:b,y:"ur bloaz",yy:c},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}});return g});
bp-core/js/vendor/moment-js/locale/bs.js ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Bosnian [bs]
3
+ //! author : Nedim Cholich : https://github.com/frontyard
4
+ //! based on (hr) translation by Bojan Marković
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ function translate(number, withoutSuffix, key) {
15
+ var result = number + ' ';
16
+ switch (key) {
17
+ case 'm':
18
+ return withoutSuffix ? 'jedna minuta' : 'jedne minute';
19
+ case 'mm':
20
+ if (number === 1) {
21
+ result += 'minuta';
22
+ } else if (number === 2 || number === 3 || number === 4) {
23
+ result += 'minute';
24
+ } else {
25
+ result += 'minuta';
26
+ }
27
+ return result;
28
+ case 'h':
29
+ return withoutSuffix ? 'jedan sat' : 'jednog sata';
30
+ case 'hh':
31
+ if (number === 1) {
32
+ result += 'sat';
33
+ } else if (number === 2 || number === 3 || number === 4) {
34
+ result += 'sata';
35
+ } else {
36
+ result += 'sati';
37
+ }
38
+ return result;
39
+ case 'dd':
40
+ if (number === 1) {
41
+ result += 'dan';
42
+ } else {
43
+ result += 'dana';
44
+ }
45
+ return result;
46
+ case 'MM':
47
+ if (number === 1) {
48
+ result += 'mjesec';
49
+ } else if (number === 2 || number === 3 || number === 4) {
50
+ result += 'mjeseca';
51
+ } else {
52
+ result += 'mjeseci';
53
+ }
54
+ return result;
55
+ case 'yy':
56
+ if (number === 1) {
57
+ result += 'godina';
58
+ } else if (number === 2 || number === 3 || number === 4) {
59
+ result += 'godine';
60
+ } else {
61
+ result += 'godina';
62
+ }
63
+ return result;
64
+ }
65
+ }
66
+
67
+ var bs = moment.defineLocale('bs', {
68
+ months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
69
+ monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
70
+ monthsParseExact: true,
71
+ weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
72
+ weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
73
+ weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
74
+ weekdaysParseExact : true,
75
+ longDateFormat : {
76
+ LT : 'H:mm',
77
+ LTS : 'H:mm:ss',
78
+ L : 'DD.MM.YYYY',
79
+ LL : 'D. MMMM YYYY',
80
+ LLL : 'D. MMMM YYYY H:mm',
81
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
82
+ },
83
+ calendar : {
84
+ sameDay : '[danas u] LT',
85
+ nextDay : '[sutra u] LT',
86
+ nextWeek : function () {
87
+ switch (this.day()) {
88
+ case 0:
89
+ return '[u] [nedjelju] [u] LT';
90
+ case 3:
91
+ return '[u] [srijedu] [u] LT';
92
+ case 6:
93
+ return '[u] [subotu] [u] LT';
94
+ case 1:
95
+ case 2:
96
+ case 4:
97
+ case 5:
98
+ return '[u] dddd [u] LT';
99
+ }
100
+ },
101
+ lastDay : '[jučer u] LT',
102
+ lastWeek : function () {
103
+ switch (this.day()) {
104
+ case 0:
105
+ case 3:
106
+ return '[prošlu] dddd [u] LT';
107
+ case 6:
108
+ return '[prošle] [subote] [u] LT';
109
+ case 1:
110
+ case 2:
111
+ case 4:
112
+ case 5:
113
+ return '[prošli] dddd [u] LT';
114
+ }
115
+ },
116
+ sameElse : 'L'
117
+ },
118
+ relativeTime : {
119
+ future : 'za %s',
120
+ past : 'prije %s',
121
+ s : 'par sekundi',
122
+ m : translate,
123
+ mm : translate,
124
+ h : translate,
125
+ hh : translate,
126
+ d : 'dan',
127
+ dd : translate,
128
+ M : 'mjesec',
129
+ MM : translate,
130
+ y : 'godinu',
131
+ yy : translate
132
+ },
133
+ ordinalParse: /\d{1,2}\./,
134
+ ordinal : '%d.',
135
+ week : {
136
+ dow : 1, // Monday is the first day of the week.
137
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
138
+ }
139
+ });
140
+
141
+ return bs;
142
+
143
+ }));
bp-core/js/vendor/moment-js/locale/bs.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/ca.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Catalan [ca]
3
+ //! author : Juan G. Hurtado : https://github.com/juanghurtado
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ca = moment.defineLocale('ca', {
14
+ months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
15
+ monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
18
+ weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
19
+ weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'H:mm',
23
+ LTS : 'H:mm:ss',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY H:mm',
27
+ LLLL : 'dddd D MMMM YYYY H:mm'
28
+ },
29
+ calendar : {
30
+ sameDay : function () {
31
+ return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
32
+ },
33
+ nextDay : function () {
34
+ return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
35
+ },
36
+ nextWeek : function () {
37
+ return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
38
+ },
39
+ lastDay : function () {
40
+ return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
41
+ },
42
+ lastWeek : function () {
43
+ return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
44
+ },
45
+ sameElse : 'L'
46
+ },
47
+ relativeTime : {
48
+ future : 'en %s',
49
+ past : 'fa %s',
50
+ s : 'uns segons',
51
+ m : 'un minut',
52
+ mm : '%d minuts',
53
+ h : 'una hora',
54
+ hh : '%d hores',
55
+ d : 'un dia',
56
+ dd : '%d dies',
57
+ M : 'un mes',
58
+ MM : '%d mesos',
59
+ y : 'un any',
60
+ yy : '%d anys'
61
+ },
62
+ ordinalParse: /\d{1,2}(r|n|t|è|a)/,
63
+ ordinal : function (number, period) {
64
+ var output = (number === 1) ? 'r' :
65
+ (number === 2) ? 'n' :
66
+ (number === 3) ? 'r' :
67
+ (number === 4) ? 't' : 'è';
68
+ if (period === 'w' || period === 'W') {
69
+ output = 'a';
70
+ }
71
+ return number + output;
72
+ },
73
+ week : {
74
+ dow : 1, // Monday is the first day of the week.
75
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
76
+ }
77
+ });
78
+
79
+ return ca;
80
+
81
+ }));
bp-core/js/vendor/moment-js/locale/ca.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return"w"!==b&&"W"!==b||(c="a"),a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/cs.js ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Czech [cs]
3
+ //! author : petrbela : https://github.com/petrbela
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
14
+ monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
15
+ function plural(n) {
16
+ return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
17
+ }
18
+ function translate(number, withoutSuffix, key, isFuture) {
19
+ var result = number + ' ';
20
+ switch (key) {
21
+ case 's': // a few seconds / in a few seconds / a few seconds ago
22
+ return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
23
+ case 'm': // a minute / in a minute / a minute ago
24
+ return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
25
+ case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
26
+ if (withoutSuffix || isFuture) {
27
+ return result + (plural(number) ? 'minuty' : 'minut');
28
+ } else {
29
+ return result + 'minutami';
30
+ }
31
+ break;
32
+ case 'h': // an hour / in an hour / an hour ago
33
+ return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
34
+ case 'hh': // 9 hours / in 9 hours / 9 hours ago
35
+ if (withoutSuffix || isFuture) {
36
+ return result + (plural(number) ? 'hodiny' : 'hodin');
37
+ } else {
38
+ return result + 'hodinami';
39
+ }
40
+ break;
41
+ case 'd': // a day / in a day / a day ago
42
+ return (withoutSuffix || isFuture) ? 'den' : 'dnem';
43
+ case 'dd': // 9 days / in 9 days / 9 days ago
44
+ if (withoutSuffix || isFuture) {
45
+ return result + (plural(number) ? 'dny' : 'dní');
46
+ } else {
47
+ return result + 'dny';
48
+ }
49
+ break;
50
+ case 'M': // a month / in a month / a month ago
51
+ return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
52
+ case 'MM': // 9 months / in 9 months / 9 months ago
53
+ if (withoutSuffix || isFuture) {
54
+ return result + (plural(number) ? 'měsíce' : 'měsíců');
55
+ } else {
56
+ return result + 'měsíci';
57
+ }
58
+ break;
59
+ case 'y': // a year / in a year / a year ago
60
+ return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
61
+ case 'yy': // 9 years / in 9 years / 9 years ago
62
+ if (withoutSuffix || isFuture) {
63
+ return result + (plural(number) ? 'roky' : 'let');
64
+ } else {
65
+ return result + 'lety';
66
+ }
67
+ break;
68
+ }
69
+ }
70
+
71
+ var cs = moment.defineLocale('cs', {
72
+ months : months,
73
+ monthsShort : monthsShort,
74
+ monthsParse : (function (months, monthsShort) {
75
+ var i, _monthsParse = [];
76
+ for (i = 0; i < 12; i++) {
77
+ // use custom parser to solve problem with July (červenec)
78
+ _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
79
+ }
80
+ return _monthsParse;
81
+ }(months, monthsShort)),
82
+ shortMonthsParse : (function (monthsShort) {
83
+ var i, _shortMonthsParse = [];
84
+ for (i = 0; i < 12; i++) {
85
+ _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
86
+ }
87
+ return _shortMonthsParse;
88
+ }(monthsShort)),
89
+ longMonthsParse : (function (months) {
90
+ var i, _longMonthsParse = [];
91
+ for (i = 0; i < 12; i++) {
92
+ _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
93
+ }
94
+ return _longMonthsParse;
95
+ }(months)),
96
+ weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
97
+ weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
98
+ weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
99
+ longDateFormat : {
100
+ LT: 'H:mm',
101
+ LTS : 'H:mm:ss',
102
+ L : 'DD.MM.YYYY',
103
+ LL : 'D. MMMM YYYY',
104
+ LLL : 'D. MMMM YYYY H:mm',
105
+ LLLL : 'dddd D. MMMM YYYY H:mm',
106
+ l : 'D. M. YYYY'
107
+ },
108
+ calendar : {
109
+ sameDay: '[dnes v] LT',
110
+ nextDay: '[zítra v] LT',
111
+ nextWeek: function () {
112
+ switch (this.day()) {
113
+ case 0:
114
+ return '[v neděli v] LT';
115
+ case 1:
116
+ case 2:
117
+ return '[v] dddd [v] LT';
118
+ case 3:
119
+ return '[ve středu v] LT';
120
+ case 4:
121
+ return '[ve čtvrtek v] LT';
122
+ case 5:
123
+ return '[v pátek v] LT';
124
+ case 6:
125
+ return '[v sobotu v] LT';
126
+ }
127
+ },
128
+ lastDay: '[včera v] LT',
129
+ lastWeek: function () {
130
+ switch (this.day()) {
131
+ case 0:
132
+ return '[minulou neděli v] LT';
133
+ case 1:
134
+ case 2:
135
+ return '[minulé] dddd [v] LT';
136
+ case 3:
137
+ return '[minulou středu v] LT';
138
+ case 4:
139
+ case 5:
140
+ return '[minulý] dddd [v] LT';
141
+ case 6:
142
+ return '[minulou sobotu v] LT';
143
+ }
144
+ },
145
+ sameElse: 'L'
146
+ },
147
+ relativeTime : {
148
+ future : 'za %s',
149
+ past : 'před %s',
150
+ s : translate,
151
+ m : translate,
152
+ mm : translate,
153
+ h : translate,
154
+ hh : translate,
155
+ d : translate,
156
+ dd : translate,
157
+ M : translate,
158
+ MM : translate,
159
+ y : translate,
160
+ yy : translate
161
+ },
162
+ ordinalParse : /\d{1,2}\./,
163
+ ordinal : '%d.',
164
+ week : {
165
+ dow : 1, // Monday is the first day of the week.
166
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
167
+ }
168
+ });
169
+
170
+ return cs;
171
+
172
+ }));
bp-core/js/vendor/moment-js/locale/cs.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){return a>1&&a<5&&1!==~~(a/10)}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(b(a)?"minuty":"minut"):f+"minutami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodin"):f+"hodinami";case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(b(a)?"dny":"dní"):f+"dny";case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(b(a)?"měsíce":"měsíců"):f+"měsíci";case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(b(a)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),f=a.defineLocale("cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;c<12;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),shortMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(e),longMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(d),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/cv.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Chuvash [cv]
3
+ //! author : Anatoly Mironov : https://github.com/mirontoli
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var cv = moment.defineLocale('cv', {
14
+ months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
15
+ monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
16
+ weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
17
+ weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
18
+ weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD-MM-YYYY',
23
+ LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
24
+ LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25
+ LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay: '[Паян] LT [сехетре]',
29
+ nextDay: '[Ыран] LT [сехетре]',
30
+ lastDay: '[Ӗнер] LT [сехетре]',
31
+ nextWeek: '[Ҫитес] dddd LT [сехетре]',
32
+ lastWeek: '[Иртнӗ] dddd LT [сехетре]',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime : {
36
+ future : function (output) {
37
+ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
38
+ return output + affix;
39
+ },
40
+ past : '%s каялла',
41
+ s : 'пӗр-ик ҫеккунт',
42
+ m : 'пӗр минут',
43
+ mm : '%d минут',
44
+ h : 'пӗр сехет',
45
+ hh : '%d сехет',
46
+ d : 'пӗр кун',
47
+ dd : '%d кун',
48
+ M : 'пӗр уйӑх',
49
+ MM : '%d уйӑх',
50
+ y : 'пӗр ҫул',
51
+ yy : '%d ҫул'
52
+ },
53
+ ordinalParse: /\d{1,2}-мӗш/,
54
+ ordinal : '%d-мӗш',
55
+ week : {
56
+ dow : 1, // Monday is the first day of the week.
57
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
58
+ }
59
+ });
60
+
61
+ return cv;
62
+
63
+ }));
bp-core/js/vendor/moment-js/locale/cv.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/cy.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Welsh [cy]
3
+ //! author : Robert Allen : https://github.com/robgallen
4
+ //! author : https://github.com/ryangreaves
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var cy = moment.defineLocale('cy', {
15
+ months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
16
+ monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
17
+ weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
18
+ weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
19
+ weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
20
+ weekdaysParseExact : true,
21
+ // time formats are the same as en-gb
22
+ longDateFormat: {
23
+ LT: 'HH:mm',
24
+ LTS : 'HH:mm:ss',
25
+ L: 'DD/MM/YYYY',
26
+ LL: 'D MMMM YYYY',
27
+ LLL: 'D MMMM YYYY HH:mm',
28
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
29
+ },
30
+ calendar: {
31
+ sameDay: '[Heddiw am] LT',
32
+ nextDay: '[Yfory am] LT',
33
+ nextWeek: 'dddd [am] LT',
34
+ lastDay: '[Ddoe am] LT',
35
+ lastWeek: 'dddd [diwethaf am] LT',
36
+ sameElse: 'L'
37
+ },
38
+ relativeTime: {
39
+ future: 'mewn %s',
40
+ past: '%s yn ôl',
41
+ s: 'ychydig eiliadau',
42
+ m: 'munud',
43
+ mm: '%d munud',
44
+ h: 'awr',
45
+ hh: '%d awr',
46
+ d: 'diwrnod',
47
+ dd: '%d diwrnod',
48
+ M: 'mis',
49
+ MM: '%d mis',
50
+ y: 'blwyddyn',
51
+ yy: '%d flynedd'
52
+ },
53
+ ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
54
+ // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
55
+ ordinal: function (number) {
56
+ var b = number,
57
+ output = '',
58
+ lookup = [
59
+ '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
60
+ 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
61
+ ];
62
+ if (b > 20) {
63
+ if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
64
+ output = 'fed'; // not 30ain, 70ain or 90ain
65
+ } else {
66
+ output = 'ain';
67
+ }
68
+ } else if (b > 0) {
69
+ output = lookup[b];
70
+ }
71
+ return number + output;
72
+ },
73
+ week : {
74
+ dow : 1, // Monday is the first day of the week.
75
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
76
+ }
77
+ });
78
+
79
+ return cy;
80
+
81
+ }));
bp-core/js/vendor/moment-js/locale/cy.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/da.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Danish [da]
3
+ //! author : Ulrik Nielsen : https://github.com/mrbase
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var da = moment.defineLocale('da', {
14
+ months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
15
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
16
+ weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
17
+ weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
18
+ weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D. MMMM YYYY',
24
+ LLL : 'D. MMMM YYYY HH:mm',
25
+ LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[I dag kl.] LT',
29
+ nextDay : '[I morgen kl.] LT',
30
+ nextWeek : 'dddd [kl.] LT',
31
+ lastDay : '[I går kl.] LT',
32
+ lastWeek : '[sidste] dddd [kl] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'om %s',
37
+ past : '%s siden',
38
+ s : 'få sekunder',
39
+ m : 'et minut',
40
+ mm : '%d minutter',
41
+ h : 'en time',
42
+ hh : '%d timer',
43
+ d : 'en dag',
44
+ dd : '%d dage',
45
+ M : 'en måned',
46
+ MM : '%d måneder',
47
+ y : 'et år',
48
+ yy : '%d år'
49
+ },
50
+ ordinalParse: /\d{1,2}\./,
51
+ ordinal : '%d.',
52
+ week : {
53
+ dow : 1, // Monday is the first day of the week.
54
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
55
+ }
56
+ });
57
+
58
+ return da;
59
+
60
+ }));
bp-core/js/vendor/moment-js/locale/da.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/de-at.js ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : German (Austria) [de-at]
3
+ //! author : lluchs : https://github.com/lluchs
4
+ //! author: Menelion Elensúle: https://github.com/Oire
5
+ //! author : Martin Groller : https://github.com/MadMG
6
+ //! author : Mikolaj Dadela : https://github.com/mik01aj
7
+
8
+ ;(function (global, factory) {
9
+ typeof exports === 'object' && typeof module !== 'undefined'
10
+ && typeof require === 'function' ? factory(require('../moment')) :
11
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
12
+ factory(global.moment)
13
+ }(this, function (moment) { 'use strict';
14
+
15
+
16
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
17
+ var format = {
18
+ 'm': ['eine Minute', 'einer Minute'],
19
+ 'h': ['eine Stunde', 'einer Stunde'],
20
+ 'd': ['ein Tag', 'einem Tag'],
21
+ 'dd': [number + ' Tage', number + ' Tagen'],
22
+ 'M': ['ein Monat', 'einem Monat'],
23
+ 'MM': [number + ' Monate', number + ' Monaten'],
24
+ 'y': ['ein Jahr', 'einem Jahr'],
25
+ 'yy': [number + ' Jahre', number + ' Jahren']
26
+ };
27
+ return withoutSuffix ? format[key][0] : format[key][1];
28
+ }
29
+
30
+ var de_at = moment.defineLocale('de-at', {
31
+ months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
32
+ monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
33
+ monthsParseExact : true,
34
+ weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
35
+ weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
36
+ weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
37
+ weekdaysParseExact : true,
38
+ longDateFormat : {
39
+ LT: 'HH:mm',
40
+ LTS: 'HH:mm:ss',
41
+ L : 'DD.MM.YYYY',
42
+ LL : 'D. MMMM YYYY',
43
+ LLL : 'D. MMMM YYYY HH:mm',
44
+ LLLL : 'dddd, D. MMMM YYYY HH:mm'
45
+ },
46
+ calendar : {
47
+ sameDay: '[heute um] LT [Uhr]',
48
+ sameElse: 'L',
49
+ nextDay: '[morgen um] LT [Uhr]',
50
+ nextWeek: 'dddd [um] LT [Uhr]',
51
+ lastDay: '[gestern um] LT [Uhr]',
52
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
53
+ },
54
+ relativeTime : {
55
+ future : 'in %s',
56
+ past : 'vor %s',
57
+ s : 'ein paar Sekunden',
58
+ m : processRelativeTime,
59
+ mm : '%d Minuten',
60
+ h : processRelativeTime,
61
+ hh : '%d Stunden',
62
+ d : processRelativeTime,
63
+ dd : processRelativeTime,
64
+ M : processRelativeTime,
65
+ MM : processRelativeTime,
66
+ y : processRelativeTime,
67
+ yy : processRelativeTime
68
+ },
69
+ ordinalParse: /\d{1,2}\./,
70
+ ordinal : '%d.',
71
+ week : {
72
+ dow : 1, // Monday is the first day of the week.
73
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
74
+ }
75
+ });
76
+
77
+ return de_at;
78
+
79
+ }));
bp-core/js/vendor/moment-js/locale/de-at.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c});
bp-core/js/vendor/moment-js/locale/de.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : German [de]
3
+ //! author : lluchs : https://github.com/lluchs
4
+ //! author: Menelion Elensúle: https://github.com/Oire
5
+ //! author : Mikolaj Dadela : https://github.com/mik01aj
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
16
+ var format = {
17
+ 'm': ['eine Minute', 'einer Minute'],
18
+ 'h': ['eine Stunde', 'einer Stunde'],
19
+ 'd': ['ein Tag', 'einem Tag'],
20
+ 'dd': [number + ' Tage', number + ' Tagen'],
21
+ 'M': ['ein Monat', 'einem Monat'],
22
+ 'MM': [number + ' Monate', number + ' Monaten'],
23
+ 'y': ['ein Jahr', 'einem Jahr'],
24
+ 'yy': [number + ' Jahre', number + ' Jahren']
25
+ };
26
+ return withoutSuffix ? format[key][0] : format[key][1];
27
+ }
28
+
29
+ var de = moment.defineLocale('de', {
30
+ months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
31
+ monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
32
+ monthsParseExact : true,
33
+ weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
34
+ weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
35
+ weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
36
+ weekdaysParseExact : true,
37
+ longDateFormat : {
38
+ LT: 'HH:mm',
39
+ LTS: 'HH:mm:ss',
40
+ L : 'DD.MM.YYYY',
41
+ LL : 'D. MMMM YYYY',
42
+ LLL : 'D. MMMM YYYY HH:mm',
43
+ LLLL : 'dddd, D. MMMM YYYY HH:mm'
44
+ },
45
+ calendar : {
46
+ sameDay: '[heute um] LT [Uhr]',
47
+ sameElse: 'L',
48
+ nextDay: '[morgen um] LT [Uhr]',
49
+ nextWeek: 'dddd [um] LT [Uhr]',
50
+ lastDay: '[gestern um] LT [Uhr]',
51
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
52
+ },
53
+ relativeTime : {
54
+ future : 'in %s',
55
+ past : 'vor %s',
56
+ s : 'ein paar Sekunden',
57
+ m : processRelativeTime,
58
+ mm : '%d Minuten',
59
+ h : processRelativeTime,
60
+ hh : '%d Stunden',
61
+ d : processRelativeTime,
62
+ dd : processRelativeTime,
63
+ M : processRelativeTime,
64
+ MM : processRelativeTime,
65
+ y : processRelativeTime,
66
+ yy : processRelativeTime
67
+ },
68
+ ordinalParse: /\d{1,2}\./,
69
+ ordinal : '%d.',
70
+ week : {
71
+ dow : 1, // Monday is the first day of the week.
72
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
73
+ }
74
+ });
75
+
76
+ return de;
77
+
78
+ }));
bp-core/js/vendor/moment-js/locale/de.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c});
bp-core/js/vendor/moment-js/locale/dv.js ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Maldivian [dv]
3
+ //! author : Jawish Hameed : https://github.com/jawish
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var months = [
14
+ 'ޖެނުއަރީ',
15
+ 'ފެބްރުއަރީ',
16
+ 'މާރިޗު',
17
+ 'އޭޕްރީލު',
18
+ 'މޭ',
19
+ 'ޖޫން',
20
+ 'ޖުލައި',
21
+ 'އޯގަސްޓު',
22
+ 'ސެޕްޓެމްބަރު',
23
+ 'އޮކްޓޯބަރު',
24
+ 'ނޮވެމްބަރު',
25
+ 'ޑިސެމްބަރު'
26
+ ], weekdays = [
27
+ 'އާދިއްތަ',
28
+ 'ހޯމަ',
29
+ 'އަންގާރަ',
30
+ 'ބުދަ',
31
+ 'ބުރާސްފަތި',
32
+ 'ހުކުރު',
33
+ 'ހޮނިހިރު'
34
+ ];
35
+
36
+ var dv = moment.defineLocale('dv', {
37
+ months : months,
38
+ monthsShort : months,
39
+ weekdays : weekdays,
40
+ weekdaysShort : weekdays,
41
+ weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
42
+ longDateFormat : {
43
+
44
+ LT : 'HH:mm',
45
+ LTS : 'HH:mm:ss',
46
+ L : 'D/M/YYYY',
47
+ LL : 'D MMMM YYYY',
48
+ LLL : 'D MMMM YYYY HH:mm',
49
+ LLLL : 'dddd D MMMM YYYY HH:mm'
50
+ },
51
+ meridiemParse: /މކ|މފ/,
52
+ isPM : function (input) {
53
+ return 'މފ' === input;
54
+ },
55
+ meridiem : function (hour, minute, isLower) {
56
+ if (hour < 12) {
57
+ return 'މކ';
58
+ } else {
59
+ return 'މފ';
60
+ }
61
+ },
62
+ calendar : {
63
+ sameDay : '[މިއަދު] LT',
64
+ nextDay : '[މާދަމާ] LT',
65
+ nextWeek : 'dddd LT',
66
+ lastDay : '[އިއްޔެ] LT',
67
+ lastWeek : '[ފާއިތުވި] dddd LT',
68
+ sameElse : 'L'
69
+ },
70
+ relativeTime : {
71
+ future : 'ތެރޭގައި %s',
72
+ past : 'ކުރިން %s',
73
+ s : 'ސިކުންތުކޮޅެއް',
74
+ m : 'މިނިޓެއް',
75
+ mm : 'މިނިޓު %d',
76
+ h : 'ގަޑިއިރެއް',
77
+ hh : 'ގަޑިއިރު %d',
78
+ d : 'ދުވަހެއް',
79
+ dd : 'ދުވަސް %d',
80
+ M : 'މަހެއް',
81
+ MM : 'މަސް %d',
82
+ y : 'އަހަރެއް',
83
+ yy : 'އަހަރު %d'
84
+ },
85
+ preparse: function (string) {
86
+ return string.replace(/،/g, ',');
87
+ },
88
+ postformat: function (string) {
89
+ return string.replace(/,/g, '،');
90
+ },
91
+ week : {
92
+ dow : 7, // Sunday is the first day of the week.
93
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
94
+ }
95
+ });
96
+
97
+ return dv;
98
+
99
+ }));
bp-core/js/vendor/moment-js/locale/dv.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],c=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"],d=a.defineLocale("dv",{months:b,monthsShort:b,weekdays:c,weekdaysShort:c,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(a){return"މފ"===a},meridiem:function(a,b,c){return a<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:7,doy:12}});return d});
bp-core/js/vendor/moment-js/locale/el.js ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Greek [el]
3
+ //! author : Aggelos Karalias : https://github.com/mehiel
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+ function isFunction(input) {
13
+ return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
14
+ }
15
+
16
+
17
+ var el = moment.defineLocale('el', {
18
+ monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
19
+ monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
20
+ months : function (momentToFormat, format) {
21
+ if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
22
+ return this._monthsGenitiveEl[momentToFormat.month()];
23
+ } else {
24
+ return this._monthsNominativeEl[momentToFormat.month()];
25
+ }
26
+ },
27
+ monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
28
+ weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
29
+ weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
30
+ weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
31
+ meridiem : function (hours, minutes, isLower) {
32
+ if (hours > 11) {
33
+ return isLower ? 'μμ' : 'ΜΜ';
34
+ } else {
35
+ return isLower ? 'πμ' : 'ΠΜ';
36
+ }
37
+ },
38
+ isPM : function (input) {
39
+ return ((input + '').toLowerCase()[0] === 'μ');
40
+ },
41
+ meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
42
+ longDateFormat : {
43
+ LT : 'h:mm A',
44
+ LTS : 'h:mm:ss A',
45
+ L : 'DD/MM/YYYY',
46
+ LL : 'D MMMM YYYY',
47
+ LLL : 'D MMMM YYYY h:mm A',
48
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
49
+ },
50
+ calendarEl : {
51
+ sameDay : '[Σήμερα {}] LT',
52
+ nextDay : '[Αύριο {}] LT',
53
+ nextWeek : 'dddd [{}] LT',
54
+ lastDay : '[Χθες {}] LT',
55
+ lastWeek : function () {
56
+ switch (this.day()) {
57
+ case 6:
58
+ return '[το προηγούμενο] dddd [{}] LT';
59
+ default:
60
+ return '[την προηγούμενη] dddd [{}] LT';
61
+ }
62
+ },
63
+ sameElse : 'L'
64
+ },
65
+ calendar : function (key, mom) {
66
+ var output = this._calendarEl[key],
67
+ hours = mom && mom.hours();
68
+ if (isFunction(output)) {
69
+ output = output.apply(mom);
70
+ }
71
+ return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
72
+ },
73
+ relativeTime : {
74
+ future : 'σε %s',
75
+ past : '%s πριν',
76
+ s : 'λίγα δευτερόλεπτα',
77
+ m : 'ένα λεπτό',
78
+ mm : '%d λεπτά',
79
+ h : 'μία ώρα',
80
+ hh : '%d ώρες',
81
+ d : 'μία μέρα',
82
+ dd : '%d μέρες',
83
+ M : 'ένας μήνας',
84
+ MM : '%d μήνες',
85
+ y : 'ένας χρόνος',
86
+ yy : '%d χρόνια'
87
+ },
88
+ ordinalParse: /\d{1,2}η/,
89
+ ordinal: '%dη',
90
+ week : {
91
+ dow : 1, // Monday is the first day of the week.
92
+ doy : 4 // The week that contains Jan 4st is the first week of the year.
93
+ }
94
+ });
95
+
96
+ return el;
97
+
98
+ }));
bp-core/js/vendor/moment-js/locale/el.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}var c=a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,c){var d=this._calendarEl[a],e=c&&c.hours();return b(d)&&(d=d.apply(c)),d.replace("{}",e%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return c});
bp-core/js/vendor/moment-js/locale/en-au.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : English (Australia) [en-au]
3
+ //! author : Jared Morse : https://github.com/jarcoal
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var en_au = moment.defineLocale('en-au', {
14
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'h:mm A',
21
+ LTS : 'h:mm:ss A',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY h:mm A',
25
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Today at] LT',
29
+ nextDay : '[Tomorrow at] LT',
30
+ nextWeek : 'dddd [at] LT',
31
+ lastDay : '[Yesterday at] LT',
32
+ lastWeek : '[Last] dddd [at] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'in %s',
37
+ past : '%s ago',
38
+ s : 'a few seconds',
39
+ m : 'a minute',
40
+ mm : '%d minutes',
41
+ h : 'an hour',
42
+ hh : '%d hours',
43
+ d : 'a day',
44
+ dd : '%d days',
45
+ M : 'a month',
46
+ MM : '%d months',
47
+ y : 'a year',
48
+ yy : '%d years'
49
+ },
50
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
+ ordinal : function (number) {
52
+ var b = number % 10,
53
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
54
+ (b === 1) ? 'st' :
55
+ (b === 2) ? 'nd' :
56
+ (b === 3) ? 'rd' : 'th';
57
+ return number + output;
58
+ },
59
+ week : {
60
+ dow : 1, // Monday is the first day of the week.
61
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
62
+ }
63
+ });
64
+
65
+ return en_au;
66
+
67
+ }));
bp-core/js/vendor/moment-js/locale/en-au.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/en-ca.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : English (Canada) [en-ca]
3
+ //! author : Jonathan Abourbih : https://github.com/jonbca
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var en_ca = moment.defineLocale('en-ca', {
14
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'h:mm A',
21
+ LTS : 'h:mm:ss A',
22
+ L : 'YYYY-MM-DD',
23
+ LL : 'MMMM D, YYYY',
24
+ LLL : 'MMMM D, YYYY h:mm A',
25
+ LLLL : 'dddd, MMMM D, YYYY h:mm A'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Today at] LT',
29
+ nextDay : '[Tomorrow at] LT',
30
+ nextWeek : 'dddd [at] LT',
31
+ lastDay : '[Yesterday at] LT',
32
+ lastWeek : '[Last] dddd [at] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'in %s',
37
+ past : '%s ago',
38
+ s : 'a few seconds',
39
+ m : 'a minute',
40
+ mm : '%d minutes',
41
+ h : 'an hour',
42
+ hh : '%d hours',
43
+ d : 'a day',
44
+ dd : '%d days',
45
+ M : 'a month',
46
+ MM : '%d months',
47
+ y : 'a year',
48
+ yy : '%d years'
49
+ },
50
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
+ ordinal : function (number) {
52
+ var b = number % 10,
53
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
54
+ (b === 1) ? 'st' :
55
+ (b === 2) ? 'nd' :
56
+ (b === 3) ? 'rd' : 'th';
57
+ return number + output;
58
+ }
59
+ });
60
+
61
+ return en_ca;
62
+
63
+ }));
bp-core/js/vendor/moment-js/locale/en-ca.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}});return b});
bp-core/js/vendor/moment-js/locale/en-gb.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : English (United Kingdom) [en-gb]
3
+ //! author : Chris Gedrim : https://github.com/chrisgedrim
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var en_gb = moment.defineLocale('en-gb', {
14
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Today at] LT',
29
+ nextDay : '[Tomorrow at] LT',
30
+ nextWeek : 'dddd [at] LT',
31
+ lastDay : '[Yesterday at] LT',
32
+ lastWeek : '[Last] dddd [at] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'in %s',
37
+ past : '%s ago',
38
+ s : 'a few seconds',
39
+ m : 'a minute',
40
+ mm : '%d minutes',
41
+ h : 'an hour',
42
+ hh : '%d hours',
43
+ d : 'a day',
44
+ dd : '%d days',
45
+ M : 'a month',
46
+ MM : '%d months',
47
+ y : 'a year',
48
+ yy : '%d years'
49
+ },
50
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
+ ordinal : function (number) {
52
+ var b = number % 10,
53
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
54
+ (b === 1) ? 'st' :
55
+ (b === 2) ? 'nd' :
56
+ (b === 3) ? 'rd' : 'th';
57
+ return number + output;
58
+ },
59
+ week : {
60
+ dow : 1, // Monday is the first day of the week.
61
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
62
+ }
63
+ });
64
+
65
+ return en_gb;
66
+
67
+ }));
bp-core/js/vendor/moment-js/locale/en-gb.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/en-ie.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : English (Ireland) [en-ie]
3
+ //! author : Chris Cartlidge : https://github.com/chriscartlidge
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var en_ie = moment.defineLocale('en-ie', {
14
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD-MM-YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'dddd D MMMM YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Today at] LT',
29
+ nextDay : '[Tomorrow at] LT',
30
+ nextWeek : 'dddd [at] LT',
31
+ lastDay : '[Yesterday at] LT',
32
+ lastWeek : '[Last] dddd [at] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'in %s',
37
+ past : '%s ago',
38
+ s : 'a few seconds',
39
+ m : 'a minute',
40
+ mm : '%d minutes',
41
+ h : 'an hour',
42
+ hh : '%d hours',
43
+ d : 'a day',
44
+ dd : '%d days',
45
+ M : 'a month',
46
+ MM : '%d months',
47
+ y : 'a year',
48
+ yy : '%d years'
49
+ },
50
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
+ ordinal : function (number) {
52
+ var b = number % 10,
53
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
54
+ (b === 1) ? 'st' :
55
+ (b === 2) ? 'nd' :
56
+ (b === 3) ? 'rd' : 'th';
57
+ return number + output;
58
+ },
59
+ week : {
60
+ dow : 1, // Monday is the first day of the week.
61
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
62
+ }
63
+ });
64
+
65
+ return en_ie;
66
+
67
+ }));
bp-core/js/vendor/moment-js/locale/en-ie.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/en-nz.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : English (New Zealand) [en-nz]
3
+ //! author : Luke McGregor : https://github.com/lukemcgregor
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var en_nz = moment.defineLocale('en-nz', {
14
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'h:mm A',
21
+ LTS : 'h:mm:ss A',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY h:mm A',
25
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Today at] LT',
29
+ nextDay : '[Tomorrow at] LT',
30
+ nextWeek : 'dddd [at] LT',
31
+ lastDay : '[Yesterday at] LT',
32
+ lastWeek : '[Last] dddd [at] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'in %s',
37
+ past : '%s ago',
38
+ s : 'a few seconds',
39
+ m : 'a minute',
40
+ mm : '%d minutes',
41
+ h : 'an hour',
42
+ hh : '%d hours',
43
+ d : 'a day',
44
+ dd : '%d days',
45
+ M : 'a month',
46
+ MM : '%d months',
47
+ y : 'a year',
48
+ yy : '%d years'
49
+ },
50
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
+ ordinal : function (number) {
52
+ var b = number % 10,
53
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
54
+ (b === 1) ? 'st' :
55
+ (b === 2) ? 'nd' :
56
+ (b === 3) ? 'rd' : 'th';
57
+ return number + output;
58
+ },
59
+ week : {
60
+ dow : 1, // Monday is the first day of the week.
61
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
62
+ }
63
+ });
64
+
65
+ return en_nz;
66
+
67
+ }));
bp-core/js/vendor/moment-js/locale/en-nz.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/eo.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Esperanto [eo]
3
+ //! author : Colin Dean : https://github.com/colindean
4
+ //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
5
+ //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var eo = moment.defineLocale('eo', {
16
+ months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
17
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
18
+ weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
19
+ weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
20
+ weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'YYYY-MM-DD',
25
+ LL : 'D[-an de] MMMM, YYYY',
26
+ LLL : 'D[-an de] MMMM, YYYY HH:mm',
27
+ LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
28
+ },
29
+ meridiemParse: /[ap]\.t\.m/i,
30
+ isPM: function (input) {
31
+ return input.charAt(0).toLowerCase() === 'p';
32
+ },
33
+ meridiem : function (hours, minutes, isLower) {
34
+ if (hours > 11) {
35
+ return isLower ? 'p.t.m.' : 'P.T.M.';
36
+ } else {
37
+ return isLower ? 'a.t.m.' : 'A.T.M.';
38
+ }
39
+ },
40
+ calendar : {
41
+ sameDay : '[Hodiaŭ je] LT',
42
+ nextDay : '[Morgaŭ je] LT',
43
+ nextWeek : 'dddd [je] LT',
44
+ lastDay : '[Hieraŭ je] LT',
45
+ lastWeek : '[pasinta] dddd [je] LT',
46
+ sameElse : 'L'
47
+ },
48
+ relativeTime : {
49
+ future : 'je %s',
50
+ past : 'antaŭ %s',
51
+ s : 'sekundoj',
52
+ m : 'minuto',
53
+ mm : '%d minutoj',
54
+ h : 'horo',
55
+ hh : '%d horoj',
56
+ d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
57
+ dd : '%d tagoj',
58
+ M : 'monato',
59
+ MM : '%d monatoj',
60
+ y : 'jaro',
61
+ yy : '%d jaroj'
62
+ },
63
+ ordinalParse: /\d{1,2}a/,
64
+ ordinal : '%da',
65
+ week : {
66
+ dow : 1, // Monday is the first day of the week.
67
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
68
+ }
69
+ });
70
+
71
+ return eo;
72
+
73
+ }));
bp-core/js/vendor/moment-js/locale/eo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/es-do.js ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Spanish (Dominican Republic) [es-do]
3
+
4
+ ;(function (global, factory) {
5
+ typeof exports === 'object' && typeof module !== 'undefined'
6
+ && typeof require === 'function' ? factory(require('../moment')) :
7
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
8
+ factory(global.moment)
9
+ }(this, function (moment) { 'use strict';
10
+
11
+
12
+ var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
13
+ monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
14
+
15
+ var es_do = moment.defineLocale('es-do', {
16
+ months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
17
+ monthsShort : function (m, format) {
18
+ if (/-MMM-/.test(format)) {
19
+ return monthsShort[m.month()];
20
+ } else {
21
+ return monthsShortDot[m.month()];
22
+ }
23
+ },
24
+ monthsParseExact : true,
25
+ weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
26
+ weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27
+ weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
28
+ weekdaysParseExact : true,
29
+ longDateFormat : {
30
+ LT : 'h:mm A',
31
+ LTS : 'h:mm:ss A',
32
+ L : 'DD/MM/YYYY',
33
+ LL : 'D [de] MMMM [de] YYYY',
34
+ LLL : 'D [de] MMMM [de] YYYY h:mm A',
35
+ LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
36
+ },
37
+ calendar : {
38
+ sameDay : function () {
39
+ return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
40
+ },
41
+ nextDay : function () {
42
+ return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
43
+ },
44
+ nextWeek : function () {
45
+ return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
46
+ },
47
+ lastDay : function () {
48
+ return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
49
+ },
50
+ lastWeek : function () {
51
+ return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
52
+ },
53
+ sameElse : 'L'
54
+ },
55
+ relativeTime : {
56
+ future : 'en %s',
57
+ past : 'hace %s',
58
+ s : 'unos segundos',
59
+ m : 'un minuto',
60
+ mm : '%d minutos',
61
+ h : 'una hora',
62
+ hh : '%d horas',
63
+ d : 'un día',
64
+ dd : '%d días',
65
+ M : 'un mes',
66
+ MM : '%d meses',
67
+ y : 'un año',
68
+ yy : '%d años'
69
+ },
70
+ ordinalParse : /\d{1,2}º/,
71
+ ordinal : '%dº',
72
+ week : {
73
+ dow : 1, // Monday is the first day of the week.
74
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
75
+ }
76
+ });
77
+
78
+ return es_do;
79
+
80
+ }));
bp-core/js/vendor/moment-js/locale/es-do.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d});
bp-core/js/vendor/moment-js/locale/es.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Spanish [es]
3
+ //! author : Julio Napurí : https://github.com/julionc
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
14
+ monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
15
+
16
+ var es = moment.defineLocale('es', {
17
+ months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
18
+ monthsShort : function (m, format) {
19
+ if (/-MMM-/.test(format)) {
20
+ return monthsShort[m.month()];
21
+ } else {
22
+ return monthsShortDot[m.month()];
23
+ }
24
+ },
25
+ monthsParseExact : true,
26
+ weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27
+ weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
28
+ weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
29
+ weekdaysParseExact : true,
30
+ longDateFormat : {
31
+ LT : 'H:mm',
32
+ LTS : 'H:mm:ss',
33
+ L : 'DD/MM/YYYY',
34
+ LL : 'D [de] MMMM [de] YYYY',
35
+ LLL : 'D [de] MMMM [de] YYYY H:mm',
36
+ LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
37
+ },
38
+ calendar : {
39
+ sameDay : function () {
40
+ return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
41
+ },
42
+ nextDay : function () {
43
+ return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
44
+ },
45
+ nextWeek : function () {
46
+ return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
47
+ },
48
+ lastDay : function () {
49
+ return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
50
+ },
51
+ lastWeek : function () {
52
+ return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
53
+ },
54
+ sameElse : 'L'
55
+ },
56
+ relativeTime : {
57
+ future : 'en %s',
58
+ past : 'hace %s',
59
+ s : 'unos segundos',
60
+ m : 'un minuto',
61
+ mm : '%d minutos',
62
+ h : 'una hora',
63
+ hh : '%d horas',
64
+ d : 'un día',
65
+ dd : '%d días',
66
+ M : 'un mes',
67
+ MM : '%d meses',
68
+ y : 'un año',
69
+ yy : '%d años'
70
+ },
71
+ ordinalParse : /\d{1,2}º/,
72
+ ordinal : '%dº',
73
+ week : {
74
+ dow : 1, // Monday is the first day of the week.
75
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
76
+ }
77
+ });
78
+
79
+ return es;
80
+
81
+ }));
bp-core/js/vendor/moment-js/locale/es.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d});
bp-core/js/vendor/moment-js/locale/et.js ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Estonian [et]
3
+ //! author : Henry Kehlmann : https://github.com/madhenry
4
+ //! improvements : Illimar Tambek : https://github.com/ragulka
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
15
+ var format = {
16
+ 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
17
+ 'm' : ['ühe minuti', 'üks minut'],
18
+ 'mm': [number + ' minuti', number + ' minutit'],
19
+ 'h' : ['ühe tunni', 'tund aega', 'üks tund'],
20
+ 'hh': [number + ' tunni', number + ' tundi'],
21
+ 'd' : ['ühe päeva', 'üks päev'],
22
+ 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
23
+ 'MM': [number + ' kuu', number + ' kuud'],
24
+ 'y' : ['ühe aasta', 'aasta', 'üks aasta'],
25
+ 'yy': [number + ' aasta', number + ' aastat']
26
+ };
27
+ if (withoutSuffix) {
28
+ return format[key][2] ? format[key][2] : format[key][1];
29
+ }
30
+ return isFuture ? format[key][0] : format[key][1];
31
+ }
32
+
33
+ var et = moment.defineLocale('et', {
34
+ months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
35
+ monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
36
+ weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
37
+ weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
38
+ weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
39
+ longDateFormat : {
40
+ LT : 'H:mm',
41
+ LTS : 'H:mm:ss',
42
+ L : 'DD.MM.YYYY',
43
+ LL : 'D. MMMM YYYY',
44
+ LLL : 'D. MMMM YYYY H:mm',
45
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
46
+ },
47
+ calendar : {
48
+ sameDay : '[Täna,] LT',
49
+ nextDay : '[Homme,] LT',
50
+ nextWeek : '[Järgmine] dddd LT',
51
+ lastDay : '[Eile,] LT',
52
+ lastWeek : '[Eelmine] dddd LT',
53
+ sameElse : 'L'
54
+ },
55
+ relativeTime : {
56
+ future : '%s pärast',
57
+ past : '%s tagasi',
58
+ s : processRelativeTime,
59
+ m : processRelativeTime,
60
+ mm : processRelativeTime,
61
+ h : processRelativeTime,
62
+ hh : processRelativeTime,
63
+ d : processRelativeTime,
64
+ dd : '%d päeva',
65
+ M : processRelativeTime,
66
+ MM : processRelativeTime,
67
+ y : processRelativeTime,
68
+ yy : processRelativeTime
69
+ },
70
+ ordinalParse: /\d{1,2}\./,
71
+ ordinal : '%d.',
72
+ week : {
73
+ dow : 1, // Monday is the first day of the week.
74
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
75
+ }
76
+ });
77
+
78
+ return et;
79
+
80
+ }));
bp-core/js/vendor/moment-js/locale/et.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}var c=a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:"%d päeva",M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c});
bp-core/js/vendor/moment-js/locale/eu.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Basque [eu]
3
+ //! author : Eneko Illarramendi : https://github.com/eillarra
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var eu = moment.defineLocale('eu', {
14
+ months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
15
+ monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
18
+ weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
19
+ weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'YYYY-MM-DD',
25
+ LL : 'YYYY[ko] MMMM[ren] D[a]',
26
+ LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
27
+ LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
28
+ l : 'YYYY-M-D',
29
+ ll : 'YYYY[ko] MMM D[a]',
30
+ lll : 'YYYY[ko] MMM D[a] HH:mm',
31
+ llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
32
+ },
33
+ calendar : {
34
+ sameDay : '[gaur] LT[etan]',
35
+ nextDay : '[bihar] LT[etan]',
36
+ nextWeek : 'dddd LT[etan]',
37
+ lastDay : '[atzo] LT[etan]',
38
+ lastWeek : '[aurreko] dddd LT[etan]',
39
+ sameElse : 'L'
40
+ },
41
+ relativeTime : {
42
+ future : '%s barru',
43
+ past : 'duela %s',
44
+ s : 'segundo batzuk',
45
+ m : 'minutu bat',
46
+ mm : '%d minutu',
47
+ h : 'ordu bat',
48
+ hh : '%d ordu',
49
+ d : 'egun bat',
50
+ dd : '%d egun',
51
+ M : 'hilabete bat',
52
+ MM : '%d hilabete',
53
+ y : 'urte bat',
54
+ yy : '%d urte'
55
+ },
56
+ ordinalParse: /\d{1,2}\./,
57
+ ordinal : '%d.',
58
+ week : {
59
+ dow : 1, // Monday is the first day of the week.
60
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
61
+ }
62
+ });
63
+
64
+ return eu;
65
+
66
+ }));
bp-core/js/vendor/moment-js/locale/eu.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/fa.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Persian [fa]
3
+ //! author : Ebrahim Byagowi : https://github.com/ebraminio
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '۱',
15
+ '2': '۲',
16
+ '3': '۳',
17
+ '4': '۴',
18
+ '5': '۵',
19
+ '6': '۶',
20
+ '7': '۷',
21
+ '8': '۸',
22
+ '9': '۹',
23
+ '0': '۰'
24
+ }, numberMap = {
25
+ '۱': '1',
26
+ '۲': '2',
27
+ '۳': '3',
28
+ '۴': '4',
29
+ '۵': '5',
30
+ '۶': '6',
31
+ '۷': '7',
32
+ '۸': '8',
33
+ '۹': '9',
34
+ '۰': '0'
35
+ };
36
+
37
+ var fa = moment.defineLocale('fa', {
38
+ months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
39
+ monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
40
+ weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
41
+ weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
42
+ weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
43
+ weekdaysParseExact : true,
44
+ longDateFormat : {
45
+ LT : 'HH:mm',
46
+ LTS : 'HH:mm:ss',
47
+ L : 'DD/MM/YYYY',
48
+ LL : 'D MMMM YYYY',
49
+ LLL : 'D MMMM YYYY HH:mm',
50
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
51
+ },
52
+ meridiemParse: /قبل از ظهر|بعد از ظهر/,
53
+ isPM: function (input) {
54
+ return /بعد از ظهر/.test(input);
55
+ },
56
+ meridiem : function (hour, minute, isLower) {
57
+ if (hour < 12) {
58
+ return 'قبل از ظهر';
59
+ } else {
60
+ return 'بعد از ظهر';
61
+ }
62
+ },
63
+ calendar : {
64
+ sameDay : '[امروز ساعت] LT',
65
+ nextDay : '[فردا ساعت] LT',
66
+ nextWeek : 'dddd [ساعت] LT',
67
+ lastDay : '[دیروز ساعت] LT',
68
+ lastWeek : 'dddd [پیش] [ساعت] LT',
69
+ sameElse : 'L'
70
+ },
71
+ relativeTime : {
72
+ future : 'در %s',
73
+ past : '%s پیش',
74
+ s : 'چندین ثانیه',
75
+ m : 'یک دقیقه',
76
+ mm : '%d دقیقه',
77
+ h : 'یک ساعت',
78
+ hh : '%d ساعت',
79
+ d : 'یک روز',
80
+ dd : '%d روز',
81
+ M : 'یک ماه',
82
+ MM : '%d ماه',
83
+ y : 'یک سال',
84
+ yy : '%d سال'
85
+ },
86
+ preparse: function (string) {
87
+ return string.replace(/[۰-۹]/g, function (match) {
88
+ return numberMap[match];
89
+ }).replace(/،/g, ',');
90
+ },
91
+ postformat: function (string) {
92
+ return string.replace(/\d/g, function (match) {
93
+ return symbolMap[match];
94
+ }).replace(/,/g, '،');
95
+ },
96
+ ordinalParse: /\d{1,2}م/,
97
+ ordinal : '%dم',
98
+ week : {
99
+ dow : 6, // Saturday is the first day of the week.
100
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
101
+ }
102
+ });
103
+
104
+ return fa;
105
+
106
+ }));
bp-core/js/vendor/moment-js/locale/fa.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},d=a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return a<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return d});
bp-core/js/vendor/moment-js/locale/fi.js ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Finnish [fi]
3
+ //! author : Tarmo Aidantausta : https://github.com/bleadof
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
14
+ numbersFuture = [
15
+ 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
16
+ numbersPast[7], numbersPast[8], numbersPast[9]
17
+ ];
18
+ function translate(number, withoutSuffix, key, isFuture) {
19
+ var result = '';
20
+ switch (key) {
21
+ case 's':
22
+ return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
23
+ case 'm':
24
+ return isFuture ? 'minuutin' : 'minuutti';
25
+ case 'mm':
26
+ result = isFuture ? 'minuutin' : 'minuuttia';
27
+ break;
28
+ case 'h':
29
+ return isFuture ? 'tunnin' : 'tunti';
30
+ case 'hh':
31
+ result = isFuture ? 'tunnin' : 'tuntia';
32
+ break;
33
+ case 'd':
34
+ return isFuture ? 'päivän' : 'päivä';
35
+ case 'dd':
36
+ result = isFuture ? 'päivän' : 'päivää';
37
+ break;
38
+ case 'M':
39
+ return isFuture ? 'kuukauden' : 'kuukausi';
40
+ case 'MM':
41
+ result = isFuture ? 'kuukauden' : 'kuukautta';
42
+ break;
43
+ case 'y':
44
+ return isFuture ? 'vuoden' : 'vuosi';
45
+ case 'yy':
46
+ result = isFuture ? 'vuoden' : 'vuotta';
47
+ break;
48
+ }
49
+ result = verbalNumber(number, isFuture) + ' ' + result;
50
+ return result;
51
+ }
52
+ function verbalNumber(number, isFuture) {
53
+ return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
54
+ }
55
+
56
+ var fi = moment.defineLocale('fi', {
57
+ months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
58
+ monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
59
+ weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
60
+ weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
61
+ weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
62
+ longDateFormat : {
63
+ LT : 'HH.mm',
64
+ LTS : 'HH.mm.ss',
65
+ L : 'DD.MM.YYYY',
66
+ LL : 'Do MMMM[ta] YYYY',
67
+ LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
68
+ LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
69
+ l : 'D.M.YYYY',
70
+ ll : 'Do MMM YYYY',
71
+ lll : 'Do MMM YYYY, [klo] HH.mm',
72
+ llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
73
+ },
74
+ calendar : {
75
+ sameDay : '[tänään] [klo] LT',
76
+ nextDay : '[huomenna] [klo] LT',
77
+ nextWeek : 'dddd [klo] LT',
78
+ lastDay : '[eilen] [klo] LT',
79
+ lastWeek : '[viime] dddd[na] [klo] LT',
80
+ sameElse : 'L'
81
+ },
82
+ relativeTime : {
83
+ future : '%s päästä',
84
+ past : '%s sitten',
85
+ s : translate,
86
+ m : translate,
87
+ mm : translate,
88
+ h : translate,
89
+ hh : translate,
90
+ d : translate,
91
+ dd : translate,
92
+ M : translate,
93
+ MM : translate,
94
+ y : translate,
95
+ yy : translate
96
+ },
97
+ ordinalParse: /\d{1,2}\./,
98
+ ordinal : '%d.',
99
+ week : {
100
+ dow : 1, // Monday is the first day of the week.
101
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
102
+ }
103
+ });
104
+
105
+ return fi;
106
+
107
+ }));
bp-core/js/vendor/moment-js/locale/fi.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return a<10?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]],f=a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/fo.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Faroese [fo]
3
+ //! author : Ragnar Johannesen : https://github.com/ragnar123
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var fo = moment.defineLocale('fo', {
14
+ months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
15
+ monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
16
+ weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
17
+ weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
18
+ weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'dddd D. MMMM, YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Í dag kl.] LT',
29
+ nextDay : '[Í morgin kl.] LT',
30
+ nextWeek : 'dddd [kl.] LT',
31
+ lastDay : '[Í gjár kl.] LT',
32
+ lastWeek : '[síðstu] dddd [kl] LT',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'um %s',
37
+ past : '%s síðani',
38
+ s : 'fá sekund',
39
+ m : 'ein minutt',
40
+ mm : '%d minuttir',
41
+ h : 'ein tími',
42
+ hh : '%d tímar',
43
+ d : 'ein dagur',
44
+ dd : '%d dagar',
45
+ M : 'ein mánaði',
46
+ MM : '%d mánaðir',
47
+ y : 'eitt ár',
48
+ yy : '%d ár'
49
+ },
50
+ ordinalParse: /\d{1,2}\./,
51
+ ordinal : '%d.',
52
+ week : {
53
+ dow : 1, // Monday is the first day of the week.
54
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
55
+ }
56
+ });
57
+
58
+ return fo;
59
+
60
+ }));
bp-core/js/vendor/moment-js/locale/fo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/fr-ca.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : French (Canada) [fr-ca]
3
+ //! author : Jonathan Abourbih : https://github.com/jonbca
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var fr_ca = moment.defineLocale('fr-ca', {
14
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'YYYY-MM-DD',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY HH:mm',
27
+ LLLL : 'dddd D MMMM YYYY HH:mm'
28
+ },
29
+ calendar : {
30
+ sameDay: '[Aujourd\'hui à] LT',
31
+ nextDay: '[Demain à] LT',
32
+ nextWeek: 'dddd [à] LT',
33
+ lastDay: '[Hier à] LT',
34
+ lastWeek: 'dddd [dernier à] LT',
35
+ sameElse: 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'dans %s',
39
+ past : 'il y a %s',
40
+ s : 'quelques secondes',
41
+ m : 'une minute',
42
+ mm : '%d minutes',
43
+ h : 'une heure',
44
+ hh : '%d heures',
45
+ d : 'un jour',
46
+ dd : '%d jours',
47
+ M : 'un mois',
48
+ MM : '%d mois',
49
+ y : 'un an',
50
+ yy : '%d ans'
51
+ },
52
+ ordinalParse: /\d{1,2}(er|e)/,
53
+ ordinal : function (number) {
54
+ return number + (number === 1 ? 'er' : 'e');
55
+ }
56
+ });
57
+
58
+ return fr_ca;
59
+
60
+ }));
bp-core/js/vendor/moment-js/locale/fr-ca.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}});return b});
bp-core/js/vendor/moment-js/locale/fr-ch.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : French (Switzerland) [fr-ch]
3
+ //! author : Gaspard Bucher : https://github.com/gaspard
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var fr_ch = moment.defineLocale('fr-ch', {
14
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'DD.MM.YYYY',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY HH:mm',
27
+ LLLL : 'dddd D MMMM YYYY HH:mm'
28
+ },
29
+ calendar : {
30
+ sameDay: '[Aujourd\'hui à] LT',
31
+ nextDay: '[Demain à] LT',
32
+ nextWeek: 'dddd [à] LT',
33
+ lastDay: '[Hier à] LT',
34
+ lastWeek: 'dddd [dernier à] LT',
35
+ sameElse: 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'dans %s',
39
+ past : 'il y a %s',
40
+ s : 'quelques secondes',
41
+ m : 'une minute',
42
+ mm : '%d minutes',
43
+ h : 'une heure',
44
+ hh : '%d heures',
45
+ d : 'un jour',
46
+ dd : '%d jours',
47
+ M : 'un mois',
48
+ MM : '%d mois',
49
+ y : 'un an',
50
+ yy : '%d ans'
51
+ },
52
+ ordinalParse: /\d{1,2}(er|e)/,
53
+ ordinal : function (number) {
54
+ return number + (number === 1 ? 'er' : 'e');
55
+ },
56
+ week : {
57
+ dow : 1, // Monday is the first day of the week.
58
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
59
+ }
60
+ });
61
+
62
+ return fr_ch;
63
+
64
+ }));
bp-core/js/vendor/moment-js/locale/fr-ch.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/fr.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : French [fr]
3
+ //! author : John Fischer : https://github.com/jfroffice
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var fr = moment.defineLocale('fr', {
14
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY HH:mm',
27
+ LLLL : 'dddd D MMMM YYYY HH:mm'
28
+ },
29
+ calendar : {
30
+ sameDay: '[Aujourd\'hui à] LT',
31
+ nextDay: '[Demain à] LT',
32
+ nextWeek: 'dddd [à] LT',
33
+ lastDay: '[Hier à] LT',
34
+ lastWeek: 'dddd [dernier à] LT',
35
+ sameElse: 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'dans %s',
39
+ past : 'il y a %s',
40
+ s : 'quelques secondes',
41
+ m : 'une minute',
42
+ mm : '%d minutes',
43
+ h : 'une heure',
44
+ hh : '%d heures',
45
+ d : 'un jour',
46
+ dd : '%d jours',
47
+ M : 'un mois',
48
+ MM : '%d mois',
49
+ y : 'un an',
50
+ yy : '%d ans'
51
+ },
52
+ ordinalParse: /\d{1,2}(er|)/,
53
+ ordinal : function (number) {
54
+ return number + (number === 1 ? 'er' : '');
55
+ },
56
+ week : {
57
+ dow : 1, // Monday is the first day of the week.
58
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
59
+ }
60
+ });
61
+
62
+ return fr;
63
+
64
+ }));
bp-core/js/vendor/moment-js/locale/fr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/fy.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Frisian [fy]
3
+ //! author : Robin van der Vliet : https://github.com/robin0van0der0v
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
14
+ monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
15
+
16
+ var fy = moment.defineLocale('fy', {
17
+ months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
18
+ monthsShort : function (m, format) {
19
+ if (/-MMM-/.test(format)) {
20
+ return monthsShortWithoutDots[m.month()];
21
+ } else {
22
+ return monthsShortWithDots[m.month()];
23
+ }
24
+ },
25
+ monthsParseExact : true,
26
+ weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
27
+ weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
28
+ weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
29
+ weekdaysParseExact : true,
30
+ longDateFormat : {
31
+ LT : 'HH:mm',
32
+ LTS : 'HH:mm:ss',
33
+ L : 'DD-MM-YYYY',
34
+ LL : 'D MMMM YYYY',
35
+ LLL : 'D MMMM YYYY HH:mm',
36
+ LLLL : 'dddd D MMMM YYYY HH:mm'
37
+ },
38
+ calendar : {
39
+ sameDay: '[hjoed om] LT',
40
+ nextDay: '[moarn om] LT',
41
+ nextWeek: 'dddd [om] LT',
42
+ lastDay: '[juster om] LT',
43
+ lastWeek: '[ôfrûne] dddd [om] LT',
44
+ sameElse: 'L'
45
+ },
46
+ relativeTime : {
47
+ future : 'oer %s',
48
+ past : '%s lyn',
49
+ s : 'in pear sekonden',
50
+ m : 'ien minút',
51
+ mm : '%d minuten',
52
+ h : 'ien oere',
53
+ hh : '%d oeren',
54
+ d : 'ien dei',
55
+ dd : '%d dagen',
56
+ M : 'ien moanne',
57
+ MM : '%d moannen',
58
+ y : 'ien jier',
59
+ yy : '%d jierren'
60
+ },
61
+ ordinalParse: /\d{1,2}(ste|de)/,
62
+ ordinal : function (number) {
63
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
64
+ },
65
+ week : {
66
+ dow : 1, // Monday is the first day of the week.
67
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
68
+ }
69
+ });
70
+
71
+ return fy;
72
+
73
+ }));
bp-core/js/vendor/moment-js/locale/fy.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),c="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),d=a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return d});
bp-core/js/vendor/moment-js/locale/gd.js ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Scottish Gaelic [gd]
3
+ //! author : Jon Ashdown : https://github.com/jonashdown
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var months = [
14
+ 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
15
+ ];
16
+
17
+ var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
18
+
19
+ var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
20
+
21
+ var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
22
+
23
+ var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
24
+
25
+ var gd = moment.defineLocale('gd', {
26
+ months : months,
27
+ monthsShort : monthsShort,
28
+ monthsParseExact : true,
29
+ weekdays : weekdays,
30
+ weekdaysShort : weekdaysShort,
31
+ weekdaysMin : weekdaysMin,
32
+ longDateFormat : {
33
+ LT : 'HH:mm',
34
+ LTS : 'HH:mm:ss',
35
+ L : 'DD/MM/YYYY',
36
+ LL : 'D MMMM YYYY',
37
+ LLL : 'D MMMM YYYY HH:mm',
38
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
39
+ },
40
+ calendar : {
41
+ sameDay : '[An-diugh aig] LT',
42
+ nextDay : '[A-màireach aig] LT',
43
+ nextWeek : 'dddd [aig] LT',
44
+ lastDay : '[An-dè aig] LT',
45
+ lastWeek : 'dddd [seo chaidh] [aig] LT',
46
+ sameElse : 'L'
47
+ },
48
+ relativeTime : {
49
+ future : 'ann an %s',
50
+ past : 'bho chionn %s',
51
+ s : 'beagan diogan',
52
+ m : 'mionaid',
53
+ mm : '%d mionaidean',
54
+ h : 'uair',
55
+ hh : '%d uairean',
56
+ d : 'latha',
57
+ dd : '%d latha',
58
+ M : 'mìos',
59
+ MM : '%d mìosan',
60
+ y : 'bliadhna',
61
+ yy : '%d bliadhna'
62
+ },
63
+ ordinalParse : /\d{1,2}(d|na|mh)/,
64
+ ordinal : function (number) {
65
+ var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
66
+ return number + output;
67
+ },
68
+ week : {
69
+ dow : 1, // Monday is the first day of the week.
70
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
71
+ }
72
+ });
73
+
74
+ return gd;
75
+
76
+ }));
bp-core/js/vendor/moment-js/locale/gd.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],c=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],d=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],e=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],f=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],g=a.defineLocale("gd",{months:b,monthsShort:c,monthsParseExact:!0,weekdays:d,weekdaysShort:e,weekdaysMin:f,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},ordinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(a){var b=1===a?"d":a%10===2?"na":"mh";return a+b},week:{dow:1,doy:4}});return g});
bp-core/js/vendor/moment-js/locale/gl.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Galician [gl]
3
+ //! author : Juan G. Hurtado : https://github.com/juanghurtado
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var gl = moment.defineLocale('gl', {
14
+ months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
15
+ monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
16
+ monthsParseExact: true,
17
+ weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
18
+ weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
19
+ weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'H:mm',
23
+ LTS : 'H:mm:ss',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D [de] MMMM [de] YYYY',
26
+ LLL : 'D [de] MMMM [de] YYYY H:mm',
27
+ LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
28
+ },
29
+ calendar : {
30
+ sameDay : function () {
31
+ return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
32
+ },
33
+ nextDay : function () {
34
+ return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
35
+ },
36
+ nextWeek : function () {
37
+ return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
38
+ },
39
+ lastDay : function () {
40
+ return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
41
+ },
42
+ lastWeek : function () {
43
+ return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
44
+ },
45
+ sameElse : 'L'
46
+ },
47
+ relativeTime : {
48
+ future : function (str) {
49
+ if (str.indexOf('un') === 0) {
50
+ return 'n' + str;
51
+ }
52
+ return 'en ' + str;
53
+ },
54
+ past : 'hai %s',
55
+ s : 'uns segundos',
56
+ m : 'un minuto',
57
+ mm : '%d minutos',
58
+ h : 'unha hora',
59
+ hh : '%d horas',
60
+ d : 'un día',
61
+ dd : '%d días',
62
+ M : 'un mes',
63
+ MM : '%d meses',
64
+ y : 'un ano',
65
+ yy : '%d anos'
66
+ },
67
+ ordinalParse : /\d{1,2}º/,
68
+ ordinal : '%dº',
69
+ week : {
70
+ dow : 1, // Monday is the first day of the week.
71
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
72
+ }
73
+ });
74
+
75
+ return gl;
76
+
77
+ }));
bp-core/js/vendor/moment-js/locale/gl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return 0===a.indexOf("un")?"n"+a:"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/he.js ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Hebrew [he]
3
+ //! author : Tomer Cohen : https://github.com/tomer
4
+ //! author : Moshe Simantov : https://github.com/DevelopmentIL
5
+ //! author : Tal Ater : https://github.com/TalAter
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var he = moment.defineLocale('he', {
16
+ months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
17
+ monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
18
+ weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
19
+ weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
20
+ weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ LTS : 'HH:mm:ss',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D [ב]MMMM YYYY',
26
+ LLL : 'D [ב]MMMM YYYY HH:mm',
27
+ LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
28
+ l : 'D/M/YYYY',
29
+ ll : 'D MMM YYYY',
30
+ lll : 'D MMM YYYY HH:mm',
31
+ llll : 'ddd, D MMM YYYY HH:mm'
32
+ },
33
+ calendar : {
34
+ sameDay : '[היום ב־]LT',
35
+ nextDay : '[מחר ב־]LT',
36
+ nextWeek : 'dddd [בשעה] LT',
37
+ lastDay : '[אתמול ב־]LT',
38
+ lastWeek : '[ביום] dddd [האחרון בשעה] LT',
39
+ sameElse : 'L'
40
+ },
41
+ relativeTime : {
42
+ future : 'בעוד %s',
43
+ past : 'לפני %s',
44
+ s : 'מספר שניות',
45
+ m : 'דקה',
46
+ mm : '%d דקות',
47
+ h : 'שעה',
48
+ hh : function (number) {
49
+ if (number === 2) {
50
+ return 'שעתיים';
51
+ }
52
+ return number + ' שעות';
53
+ },
54
+ d : 'יום',
55
+ dd : function (number) {
56
+ if (number === 2) {
57
+ return 'יומיים';
58
+ }
59
+ return number + ' ימים';
60
+ },
61
+ M : 'חודש',
62
+ MM : function (number) {
63
+ if (number === 2) {
64
+ return 'חודשיים';
65
+ }
66
+ return number + ' חודשים';
67
+ },
68
+ y : 'שנה',
69
+ yy : function (number) {
70
+ if (number === 2) {
71
+ return 'שנתיים';
72
+ } else if (number % 10 === 0 && number !== 10) {
73
+ return number + ' שנה';
74
+ }
75
+ return number + ' שנים';
76
+ }
77
+ },
78
+ meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
79
+ isPM : function (input) {
80
+ return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
81
+ },
82
+ meridiem : function (hour, minute, isLower) {
83
+ if (hour < 5) {
84
+ return 'לפנות בוקר';
85
+ } else if (hour < 10) {
86
+ return 'בבוקר';
87
+ } else if (hour < 12) {
88
+ return isLower ? 'לפנה"צ' : 'לפני הצהריים';
89
+ } else if (hour < 18) {
90
+ return isLower ? 'אחה"צ' : 'אחרי הצהריים';
91
+ } else {
92
+ return 'בערב';
93
+ }
94
+ }
95
+ });
96
+
97
+ return he;
98
+
99
+ }));
bp-core/js/vendor/moment-js/locale/he.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return a<5?"לפנות בוקר":a<10?"בבוקר":a<12?c?'לפנה"צ':"לפני הצהריים":a<18?c?'אחה"צ':"אחרי הצהריים":"בערב"}});return b});
bp-core/js/vendor/moment-js/locale/hi.js ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Hindi [hi]
3
+ //! author : Mayank Singhal : https://github.com/mayanksinghal
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '१',
15
+ '2': '२',
16
+ '3': '३',
17
+ '4': '४',
18
+ '5': '५',
19
+ '6': '६',
20
+ '7': '७',
21
+ '8': '८',
22
+ '9': '९',
23
+ '0': '०'
24
+ },
25
+ numberMap = {
26
+ '१': '1',
27
+ '२': '2',
28
+ '३': '3',
29
+ '४': '4',
30
+ '५': '5',
31
+ '६': '6',
32
+ '७': '7',
33
+ '८': '8',
34
+ '९': '9',
35
+ '०': '0'
36
+ };
37
+
38
+ var hi = moment.defineLocale('hi', {
39
+ months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
40
+ monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
41
+ monthsParseExact: true,
42
+ weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
43
+ weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
44
+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
45
+ longDateFormat : {
46
+ LT : 'A h:mm बजे',
47
+ LTS : 'A h:mm:ss बजे',
48
+ L : 'DD/MM/YYYY',
49
+ LL : 'D MMMM YYYY',
50
+ LLL : 'D MMMM YYYY, A h:mm बजे',
51
+ LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
52
+ },
53
+ calendar : {
54
+ sameDay : '[आज] LT',
55
+ nextDay : '[कल] LT',
56
+ nextWeek : 'dddd, LT',
57
+ lastDay : '[कल] LT',
58
+ lastWeek : '[पिछले] dddd, LT',
59
+ sameElse : 'L'
60
+ },
61
+ relativeTime : {
62
+ future : '%s में',
63
+ past : '%s पहले',
64
+ s : 'कुछ ही क्षण',
65
+ m : 'एक मिनट',
66
+ mm : '%d मिनट',
67
+ h : 'एक घंटा',
68
+ hh : '%d घंटे',
69
+ d : 'एक दिन',
70
+ dd : '%d दिन',
71
+ M : 'एक महीने',
72
+ MM : '%d महीने',
73
+ y : 'एक वर्ष',
74
+ yy : '%d वर्ष'
75
+ },
76
+ preparse: function (string) {
77
+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
78
+ return numberMap[match];
79
+ });
80
+ },
81
+ postformat: function (string) {
82
+ return string.replace(/\d/g, function (match) {
83
+ return symbolMap[match];
84
+ });
85
+ },
86
+ // Hindi notation for meridiems are quite fuzzy in practice. While there exists
87
+ // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
88
+ meridiemParse: /रात|सुबह|दोपहर|शाम/,
89
+ meridiemHour : function (hour, meridiem) {
90
+ if (hour === 12) {
91
+ hour = 0;
92
+ }
93
+ if (meridiem === 'रात') {
94
+ return hour < 4 ? hour : hour + 12;
95
+ } else if (meridiem === 'सुबह') {
96
+ return hour;
97
+ } else if (meridiem === 'दोपहर') {
98
+ return hour >= 10 ? hour : hour + 12;
99
+ } else if (meridiem === 'शाम') {
100
+ return hour + 12;
101
+ }
102
+ },
103
+ meridiem : function (hour, minute, isLower) {
104
+ if (hour < 4) {
105
+ return 'रात';
106
+ } else if (hour < 10) {
107
+ return 'सुबह';
108
+ } else if (hour < 17) {
109
+ return 'दोपहर';
110
+ } else if (hour < 20) {
111
+ return 'शाम';
112
+ } else {
113
+ return 'रात';
114
+ }
115
+ },
116
+ week : {
117
+ dow : 0, // Sunday is the first day of the week.
118
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
119
+ }
120
+ });
121
+
122
+ return hi;
123
+
124
+ }));
bp-core/js/vendor/moment-js/locale/hi.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?a<4?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"रात":a<10?"सुबह":a<17?"दोपहर":a<20?"शाम":"रात"},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/hr.js ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Croatian [hr]
3
+ //! author : Bojan Marković : https://github.com/bmarkovic
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ function translate(number, withoutSuffix, key) {
14
+ var result = number + ' ';
15
+ switch (key) {
16
+ case 'm':
17
+ return withoutSuffix ? 'jedna minuta' : 'jedne minute';
18
+ case 'mm':
19
+ if (number === 1) {
20
+ result += 'minuta';
21
+ } else if (number === 2 || number === 3 || number === 4) {
22
+ result += 'minute';
23
+ } else {
24
+ result += 'minuta';
25
+ }
26
+ return result;
27
+ case 'h':
28
+ return withoutSuffix ? 'jedan sat' : 'jednog sata';
29
+ case 'hh':
30
+ if (number === 1) {
31
+ result += 'sat';
32
+ } else if (number === 2 || number === 3 || number === 4) {
33
+ result += 'sata';
34
+ } else {
35
+ result += 'sati';
36
+ }
37
+ return result;
38
+ case 'dd':
39
+ if (number === 1) {
40
+ result += 'dan';
41
+ } else {
42
+ result += 'dana';
43
+ }
44
+ return result;
45
+ case 'MM':
46
+ if (number === 1) {
47
+ result += 'mjesec';
48
+ } else if (number === 2 || number === 3 || number === 4) {
49
+ result += 'mjeseca';
50
+ } else {
51
+ result += 'mjeseci';
52
+ }
53
+ return result;
54
+ case 'yy':
55
+ if (number === 1) {
56
+ result += 'godina';
57
+ } else if (number === 2 || number === 3 || number === 4) {
58
+ result += 'godine';
59
+ } else {
60
+ result += 'godina';
61
+ }
62
+ return result;
63
+ }
64
+ }
65
+
66
+ var hr = moment.defineLocale('hr', {
67
+ months : {
68
+ format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
69
+ standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
70
+ },
71
+ monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
72
+ monthsParseExact: true,
73
+ weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
74
+ weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
75
+ weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
76
+ weekdaysParseExact : true,
77
+ longDateFormat : {
78
+ LT : 'H:mm',
79
+ LTS : 'H:mm:ss',
80
+ L : 'DD.MM.YYYY',
81
+ LL : 'D. MMMM YYYY',
82
+ LLL : 'D. MMMM YYYY H:mm',
83
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
84
+ },
85
+ calendar : {
86
+ sameDay : '[danas u] LT',
87
+ nextDay : '[sutra u] LT',
88
+ nextWeek : function () {
89
+ switch (this.day()) {
90
+ case 0:
91
+ return '[u] [nedjelju] [u] LT';
92
+ case 3:
93
+ return '[u] [srijedu] [u] LT';
94
+ case 6:
95
+ return '[u] [subotu] [u] LT';
96
+ case 1:
97
+ case 2:
98
+ case 4:
99
+ case 5:
100
+ return '[u] dddd [u] LT';
101
+ }
102
+ },
103
+ lastDay : '[jučer u] LT',
104
+ lastWeek : function () {
105
+ switch (this.day()) {
106
+ case 0:
107
+ case 3:
108
+ return '[prošlu] dddd [u] LT';
109
+ case 6:
110
+ return '[prošle] [subote] [u] LT';
111
+ case 1:
112
+ case 2:
113
+ case 4:
114
+ case 5:
115
+ return '[prošli] dddd [u] LT';
116
+ }
117
+ },
118
+ sameElse : 'L'
119
+ },
120
+ relativeTime : {
121
+ future : 'za %s',
122
+ past : 'prije %s',
123
+ s : 'par sekundi',
124
+ m : translate,
125
+ mm : translate,
126
+ h : translate,
127
+ hh : translate,
128
+ d : 'dan',
129
+ dd : translate,
130
+ M : 'mjesec',
131
+ MM : translate,
132
+ y : 'godinu',
133
+ yy : translate
134
+ },
135
+ ordinalParse: /\d{1,2}\./,
136
+ ordinal : '%d.',
137
+ week : {
138
+ dow : 1, // Monday is the first day of the week.
139
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
140
+ }
141
+ });
142
+
143
+ return hr;
144
+
145
+ }));
bp-core/js/vendor/moment-js/locale/hr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=a.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/hu.js ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Hungarian [hu]
3
+ //! author : Adam Brunner : https://github.com/adambrunner
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
14
+ function translate(number, withoutSuffix, key, isFuture) {
15
+ var num = number,
16
+ suffix;
17
+ switch (key) {
18
+ case 's':
19
+ return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
20
+ case 'm':
21
+ return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
22
+ case 'mm':
23
+ return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
24
+ case 'h':
25
+ return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
26
+ case 'hh':
27
+ return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
28
+ case 'd':
29
+ return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
30
+ case 'dd':
31
+ return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
32
+ case 'M':
33
+ return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
34
+ case 'MM':
35
+ return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
36
+ case 'y':
37
+ return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
38
+ case 'yy':
39
+ return num + (isFuture || withoutSuffix ? ' év' : ' éve');
40
+ }
41
+ return '';
42
+ }
43
+ function week(isFuture) {
44
+ return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
45
+ }
46
+
47
+ var hu = moment.defineLocale('hu', {
48
+ months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
49
+ monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
50
+ weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
51
+ weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
52
+ weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
53
+ longDateFormat : {
54
+ LT : 'H:mm',
55
+ LTS : 'H:mm:ss',
56
+ L : 'YYYY.MM.DD.',
57
+ LL : 'YYYY. MMMM D.',
58
+ LLL : 'YYYY. MMMM D. H:mm',
59
+ LLLL : 'YYYY. MMMM D., dddd H:mm'
60
+ },
61
+ meridiemParse: /de|du/i,
62
+ isPM: function (input) {
63
+ return input.charAt(1).toLowerCase() === 'u';
64
+ },
65
+ meridiem : function (hours, minutes, isLower) {
66
+ if (hours < 12) {
67
+ return isLower === true ? 'de' : 'DE';
68
+ } else {
69
+ return isLower === true ? 'du' : 'DU';
70
+ }
71
+ },
72
+ calendar : {
73
+ sameDay : '[ma] LT[-kor]',
74
+ nextDay : '[holnap] LT[-kor]',
75
+ nextWeek : function () {
76
+ return week.call(this, true);
77
+ },
78
+ lastDay : '[tegnap] LT[-kor]',
79
+ lastWeek : function () {
80
+ return week.call(this, false);
81
+ },
82
+ sameElse : 'L'
83
+ },
84
+ relativeTime : {
85
+ future : '%s múlva',
86
+ past : '%s',
87
+ s : translate,
88
+ m : translate,
89
+ mm : translate,
90
+ h : translate,
91
+ hh : translate,
92
+ d : translate,
93
+ dd : translate,
94
+ M : translate,
95
+ MM : translate,
96
+ y : translate,
97
+ yy : translate
98
+ },
99
+ ordinalParse: /\d{1,2}\./,
100
+ ordinal : '%d.',
101
+ week : {
102
+ dow : 1, // Monday is the first day of the week.
103
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
104
+ }
105
+ });
106
+
107
+ return hu;
108
+
109
+ }));
bp-core/js/vendor/moment-js/locale/hu.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),e=a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return a<12?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e});
bp-core/js/vendor/moment-js/locale/hy-am.js ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Armenian [hy-am]
3
+ //! author : Armendarabyan : https://github.com/armendarabyan
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var hy_am = moment.defineLocale('hy-am', {
14
+ months : {
15
+ format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
16
+ standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
17
+ },
18
+ monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
19
+ weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
20
+ weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
21
+ weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
22
+ longDateFormat : {
23
+ LT : 'HH:mm',
24
+ LTS : 'HH:mm:ss',
25
+ L : 'DD.MM.YYYY',
26
+ LL : 'D MMMM YYYY թ.',
27
+ LLL : 'D MMMM YYYY թ., HH:mm',
28
+ LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
29
+ },
30
+ calendar : {
31
+ sameDay: '[այսօր] LT',
32
+ nextDay: '[վաղը] LT',
33
+ lastDay: '[երեկ] LT',
34
+ nextWeek: function () {
35
+ return 'dddd [օրը ժամը] LT';
36
+ },
37
+ lastWeek: function () {
38
+ return '[անցած] dddd [օրը ժամը] LT';
39
+ },
40
+ sameElse: 'L'
41
+ },
42
+ relativeTime : {
43
+ future : '%s հետո',
44
+ past : '%s առաջ',
45
+ s : 'մի քանի վայրկյան',
46
+ m : 'րոպե',
47
+ mm : '%d րոպե',
48
+ h : 'ժամ',
49
+ hh : '%d ժամ',
50
+ d : 'օր',
51
+ dd : '%d օր',
52
+ M : 'ամիս',
53
+ MM : '%d ամիս',
54
+ y : 'տարի',
55
+ yy : '%d տարի'
56
+ },
57
+ meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
58
+ isPM: function (input) {
59
+ return /^(ցերեկվա|երեկոյան)$/.test(input);
60
+ },
61
+ meridiem : function (hour) {
62
+ if (hour < 4) {
63
+ return 'գիշերվա';
64
+ } else if (hour < 12) {
65
+ return 'առավոտվա';
66
+ } else if (hour < 17) {
67
+ return 'ցերեկվա';
68
+ } else {
69
+ return 'երեկոյան';
70
+ }
71
+ },
72
+ ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
73
+ ordinal: function (number, period) {
74
+ switch (period) {
75
+ case 'DDD':
76
+ case 'w':
77
+ case 'W':
78
+ case 'DDDo':
79
+ if (number === 1) {
80
+ return number + '-ին';
81
+ }
82
+ return number + '-րդ';
83
+ default:
84
+ return number;
85
+ }
86
+ },
87
+ week : {
88
+ dow : 1, // Monday is the first day of the week.
89
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
90
+ }
91
+ });
92
+
93
+ return hy_am;
94
+
95
+ }));
bp-core/js/vendor/moment-js/locale/hy-am.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return a<4?"գիշերվա":a<12?"առավոտվա":a<17?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/id.js ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Indonesian [id]
3
+ //! author : Mohammad Satrio Utomo : https://github.com/tyok
4
+ //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var id = moment.defineLocale('id', {
15
+ months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
16
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
17
+ weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
18
+ weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
19
+ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'HH.mm',
22
+ LTS : 'HH.mm.ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
26
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
27
+ },
28
+ meridiemParse: /pagi|siang|sore|malam/,
29
+ meridiemHour : function (hour, meridiem) {
30
+ if (hour === 12) {
31
+ hour = 0;
32
+ }
33
+ if (meridiem === 'pagi') {
34
+ return hour;
35
+ } else if (meridiem === 'siang') {
36
+ return hour >= 11 ? hour : hour + 12;
37
+ } else if (meridiem === 'sore' || meridiem === 'malam') {
38
+ return hour + 12;
39
+ }
40
+ },
41
+ meridiem : function (hours, minutes, isLower) {
42
+ if (hours < 11) {
43
+ return 'pagi';
44
+ } else if (hours < 15) {
45
+ return 'siang';
46
+ } else if (hours < 19) {
47
+ return 'sore';
48
+ } else {
49
+ return 'malam';
50
+ }
51
+ },
52
+ calendar : {
53
+ sameDay : '[Hari ini pukul] LT',
54
+ nextDay : '[Besok pukul] LT',
55
+ nextWeek : 'dddd [pukul] LT',
56
+ lastDay : '[Kemarin pukul] LT',
57
+ lastWeek : 'dddd [lalu pukul] LT',
58
+ sameElse : 'L'
59
+ },
60
+ relativeTime : {
61
+ future : 'dalam %s',
62
+ past : '%s yang lalu',
63
+ s : 'beberapa detik',
64
+ m : 'semenit',
65
+ mm : '%d menit',
66
+ h : 'sejam',
67
+ hh : '%d jam',
68
+ d : 'sehari',
69
+ dd : '%d hari',
70
+ M : 'sebulan',
71
+ MM : '%d bulan',
72
+ y : 'setahun',
73
+ yy : '%d tahun'
74
+ },
75
+ week : {
76
+ dow : 1, // Monday is the first day of the week.
77
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
78
+ }
79
+ });
80
+
81
+ return id;
82
+
83
+ }));
bp-core/js/vendor/moment-js/locale/id.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"siang":a<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/is.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Icelandic [is]
3
+ //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ function plural(n) {
14
+ if (n % 100 === 11) {
15
+ return true;
16
+ } else if (n % 10 === 1) {
17
+ return false;
18
+ }
19
+ return true;
20
+ }
21
+ function translate(number, withoutSuffix, key, isFuture) {
22
+ var result = number + ' ';
23
+ switch (key) {
24
+ case 's':
25
+ return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
26
+ case 'm':
27
+ return withoutSuffix ? 'mínúta' : 'mínútu';
28
+ case 'mm':
29
+ if (plural(number)) {
30
+ return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
31
+ } else if (withoutSuffix) {
32
+ return result + 'mínúta';
33
+ }
34
+ return result + 'mínútu';
35
+ case 'hh':
36
+ if (plural(number)) {
37
+ return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
38
+ }
39
+ return result + 'klukkustund';
40
+ case 'd':
41
+ if (withoutSuffix) {
42
+ return 'dagur';
43
+ }
44
+ return isFuture ? 'dag' : 'degi';
45
+ case 'dd':
46
+ if (plural(number)) {
47
+ if (withoutSuffix) {
48
+ return result + 'dagar';
49
+ }
50
+ return result + (isFuture ? 'daga' : 'dögum');
51
+ } else if (withoutSuffix) {
52
+ return result + 'dagur';
53
+ }
54
+ return result + (isFuture ? 'dag' : 'degi');
55
+ case 'M':
56
+ if (withoutSuffix) {
57
+ return 'mánuður';
58
+ }
59
+ return isFuture ? 'mánuð' : 'mánuði';
60
+ case 'MM':
61
+ if (plural(number)) {
62
+ if (withoutSuffix) {
63
+ return result + 'mánuðir';
64
+ }
65
+ return result + (isFuture ? 'mánuði' : 'mánuðum');
66
+ } else if (withoutSuffix) {
67
+ return result + 'mánuður';
68
+ }
69
+ return result + (isFuture ? 'mánuð' : 'mánuði');
70
+ case 'y':
71
+ return withoutSuffix || isFuture ? 'ár' : 'ári';
72
+ case 'yy':
73
+ if (plural(number)) {
74
+ return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
75
+ }
76
+ return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
77
+ }
78
+ }
79
+
80
+ var is = moment.defineLocale('is', {
81
+ months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
82
+ monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
83
+ weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
84
+ weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
85
+ weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
86
+ longDateFormat : {
87
+ LT : 'H:mm',
88
+ LTS : 'H:mm:ss',
89
+ L : 'DD.MM.YYYY',
90
+ LL : 'D. MMMM YYYY',
91
+ LLL : 'D. MMMM YYYY [kl.] H:mm',
92
+ LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
93
+ },
94
+ calendar : {
95
+ sameDay : '[í dag kl.] LT',
96
+ nextDay : '[á morgun kl.] LT',
97
+ nextWeek : 'dddd [kl.] LT',
98
+ lastDay : '[í gær kl.] LT',
99
+ lastWeek : '[síðasta] dddd [kl.] LT',
100
+ sameElse : 'L'
101
+ },
102
+ relativeTime : {
103
+ future : 'eftir %s',
104
+ past : 'fyrir %s síðan',
105
+ s : translate,
106
+ m : translate,
107
+ mm : translate,
108
+ h : 'klukkustund',
109
+ hh : translate,
110
+ d : translate,
111
+ dd : translate,
112
+ M : translate,
113
+ MM : translate,
114
+ y : translate,
115
+ yy : translate
116
+ },
117
+ ordinalParse: /\d{1,2}\./,
118
+ ordinal : '%d.',
119
+ week : {
120
+ dow : 1, // Monday is the first day of the week.
121
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
122
+ }
123
+ });
124
+
125
+ return is;
126
+
127
+ }));
bp-core/js/vendor/moment-js/locale/is.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){return a%100===11||a%10!==1}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return b(a)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return b(a)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return b(a)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return b(a)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return b(a)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}var d=a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d});
bp-core/js/vendor/moment-js/locale/it.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Italian [it]
3
+ //! author : Lorenzo : https://github.com/aliem
4
+ //! author: Mattia Larentis: https://github.com/nostalgiaz
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var it = moment.defineLocale('it', {
15
+ months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
16
+ monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
17
+ weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
18
+ weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
19
+ weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY HH:mm',
26
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay: '[Oggi alle] LT',
30
+ nextDay: '[Domani alle] LT',
31
+ nextWeek: 'dddd [alle] LT',
32
+ lastDay: '[Ieri alle] LT',
33
+ lastWeek: function () {
34
+ switch (this.day()) {
35
+ case 0:
36
+ return '[la scorsa] dddd [alle] LT';
37
+ default:
38
+ return '[lo scorso] dddd [alle] LT';
39
+ }
40
+ },
41
+ sameElse: 'L'
42
+ },
43
+ relativeTime : {
44
+ future : function (s) {
45
+ return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
46
+ },
47
+ past : '%s fa',
48
+ s : 'alcuni secondi',
49
+ m : 'un minuto',
50
+ mm : '%d minuti',
51
+ h : 'un\'ora',
52
+ hh : '%d ore',
53
+ d : 'un giorno',
54
+ dd : '%d giorni',
55
+ M : 'un mese',
56
+ MM : '%d mesi',
57
+ y : 'un anno',
58
+ yy : '%d anni'
59
+ },
60
+ ordinalParse : /\d{1,2}º/,
61
+ ordinal: '%dº',
62
+ week : {
63
+ dow : 1, // Monday is the first day of the week.
64
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
65
+ }
66
+ });
67
+
68
+ return it;
69
+
70
+ }));
bp-core/js/vendor/moment-js/locale/it.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ja.js ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Japanese [ja]
3
+ //! author : LI Long : https://github.com/baryon
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ja = moment.defineLocale('ja', {
14
+ months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
15
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
16
+ weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
17
+ weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
18
+ weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'Ah時m分',
21
+ LTS : 'Ah時m分s秒',
22
+ L : 'YYYY/MM/DD',
23
+ LL : 'YYYY年M月D日',
24
+ LLL : 'YYYY年M月D日Ah時m分',
25
+ LLLL : 'YYYY年M月D日Ah時m分 dddd'
26
+ },
27
+ meridiemParse: /午前|午後/i,
28
+ isPM : function (input) {
29
+ return input === '午後';
30
+ },
31
+ meridiem : function (hour, minute, isLower) {
32
+ if (hour < 12) {
33
+ return '午前';
34
+ } else {
35
+ return '午後';
36
+ }
37
+ },
38
+ calendar : {
39
+ sameDay : '[今日] LT',
40
+ nextDay : '[明日] LT',
41
+ nextWeek : '[来週]dddd LT',
42
+ lastDay : '[昨日] LT',
43
+ lastWeek : '[前週]dddd LT',
44
+ sameElse : 'L'
45
+ },
46
+ ordinalParse : /\d{1,2}日/,
47
+ ordinal : function (number, period) {
48
+ switch (period) {
49
+ case 'd':
50
+ case 'D':
51
+ case 'DDD':
52
+ return number + '日';
53
+ default:
54
+ return number;
55
+ }
56
+ },
57
+ relativeTime : {
58
+ future : '%s後',
59
+ past : '%s前',
60
+ s : '数秒',
61
+ m : '1分',
62
+ mm : '%d分',
63
+ h : '1時間',
64
+ hh : '%d時間',
65
+ d : '1日',
66
+ dd : '%d日',
67
+ M : '1ヶ月',
68
+ MM : '%dヶ月',
69
+ y : '1年',
70
+ yy : '%d年'
71
+ }
72
+ });
73
+
74
+ return ja;
75
+
76
+ }));
bp-core/js/vendor/moment-js/locale/ja.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return a<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return b});
bp-core/js/vendor/moment-js/locale/jv.js ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Japanese [jv]
3
+ //! author : Rony Lantip : https://github.com/lantip
4
+ //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var jv = moment.defineLocale('jv', {
15
+ months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
16
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
17
+ weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
18
+ weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
19
+ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'HH.mm',
22
+ LTS : 'HH.mm.ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
26
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
27
+ },
28
+ meridiemParse: /enjing|siyang|sonten|ndalu/,
29
+ meridiemHour : function (hour, meridiem) {
30
+ if (hour === 12) {
31
+ hour = 0;
32
+ }
33
+ if (meridiem === 'enjing') {
34
+ return hour;
35
+ } else if (meridiem === 'siyang') {
36
+ return hour >= 11 ? hour : hour + 12;
37
+ } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
38
+ return hour + 12;
39
+ }
40
+ },
41
+ meridiem : function (hours, minutes, isLower) {
42
+ if (hours < 11) {
43
+ return 'enjing';
44
+ } else if (hours < 15) {
45
+ return 'siyang';
46
+ } else if (hours < 19) {
47
+ return 'sonten';
48
+ } else {
49
+ return 'ndalu';
50
+ }
51
+ },
52
+ calendar : {
53
+ sameDay : '[Dinten puniko pukul] LT',
54
+ nextDay : '[Mbenjang pukul] LT',
55
+ nextWeek : 'dddd [pukul] LT',
56
+ lastDay : '[Kala wingi pukul] LT',
57
+ lastWeek : 'dddd [kepengker pukul] LT',
58
+ sameElse : 'L'
59
+ },
60
+ relativeTime : {
61
+ future : 'wonten ing %s',
62
+ past : '%s ingkang kepengker',
63
+ s : 'sawetawis detik',
64
+ m : 'setunggal menit',
65
+ mm : '%d menit',
66
+ h : 'setunggal jam',
67
+ hh : '%d jam',
68
+ d : 'sedinten',
69
+ dd : '%d dinten',
70
+ M : 'sewulan',
71
+ MM : '%d wulan',
72
+ y : 'setaun',
73
+ yy : '%d taun'
74
+ },
75
+ week : {
76
+ dow : 1, // Monday is the first day of the week.
77
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
78
+ }
79
+ });
80
+
81
+ return jv;
82
+
83
+ }));
bp-core/js/vendor/moment-js/locale/jv.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"enjing":a<15?"siyang":a<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/ka.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Georgian [ka]
3
+ //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ka = moment.defineLocale('ka', {
14
+ months : {
15
+ standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
16
+ format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
17
+ },
18
+ monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
19
+ weekdays : {
20
+ standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
21
+ format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
22
+ isFormat: /(წინა|შემდეგ)/
23
+ },
24
+ weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
25
+ weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
26
+ longDateFormat : {
27
+ LT : 'h:mm A',
28
+ LTS : 'h:mm:ss A',
29
+ L : 'DD/MM/YYYY',
30
+ LL : 'D MMMM YYYY',
31
+ LLL : 'D MMMM YYYY h:mm A',
32
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
33
+ },
34
+ calendar : {
35
+ sameDay : '[დღეს] LT[-ზე]',
36
+ nextDay : '[ხვალ] LT[-ზე]',
37
+ lastDay : '[გუშინ] LT[-ზე]',
38
+ nextWeek : '[შემდეგ] dddd LT[-ზე]',
39
+ lastWeek : '[წინა] dddd LT-ზე',
40
+ sameElse : 'L'
41
+ },
42
+ relativeTime : {
43
+ future : function (s) {
44
+ return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
45
+ s.replace(/ი$/, 'ში') :
46
+ s + 'ში';
47
+ },
48
+ past : function (s) {
49
+ if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
50
+ return s.replace(/(ი|ე)$/, 'ის წინ');
51
+ }
52
+ if ((/წელი/).test(s)) {
53
+ return s.replace(/წელი$/, 'წლის წინ');
54
+ }
55
+ },
56
+ s : 'რამდენიმე წამი',
57
+ m : 'წუთი',
58
+ mm : '%d წუთი',
59
+ h : 'საათი',
60
+ hh : '%d საათი',
61
+ d : 'დღე',
62
+ dd : '%d დღე',
63
+ M : 'თვე',
64
+ MM : '%d თვე',
65
+ y : 'წელი',
66
+ yy : '%d წელი'
67
+ },
68
+ ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
69
+ ordinal : function (number) {
70
+ if (number === 0) {
71
+ return number;
72
+ }
73
+ if (number === 1) {
74
+ return number + '-ლი';
75
+ }
76
+ if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
77
+ return 'მე-' + number;
78
+ }
79
+ return number + '-ე';
80
+ },
81
+ week : {
82
+ dow : 1,
83
+ doy : 7
84
+ }
85
+ });
86
+
87
+ return ka;
88
+
89
+ }));
bp-core/js/vendor/moment-js/locale/ka.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":a<20||a<=100&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/kk.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Kazakh [kk]
3
+ //! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var suffixes = {
14
+ 0: '-ші',
15
+ 1: '-ші',
16
+ 2: '-ші',
17
+ 3: '-ші',
18
+ 4: '-ші',
19
+ 5: '-ші',
20
+ 6: '-шы',
21
+ 7: '-ші',
22
+ 8: '-ші',
23
+ 9: '-шы',
24
+ 10: '-шы',
25
+ 20: '-шы',
26
+ 30: '-шы',
27
+ 40: '-шы',
28
+ 50: '-ші',
29
+ 60: '-шы',
30
+ 70: '-ші',
31
+ 80: '-ші',
32
+ 90: '-шы',
33
+ 100: '-ші'
34
+ };
35
+
36
+ var kk = moment.defineLocale('kk', {
37
+ months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
38
+ monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
39
+ weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
40
+ weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
41
+ weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
42
+ longDateFormat : {
43
+ LT : 'HH:mm',
44
+ LTS : 'HH:mm:ss',
45
+ L : 'DD.MM.YYYY',
46
+ LL : 'D MMMM YYYY',
47
+ LLL : 'D MMMM YYYY HH:mm',
48
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
49
+ },
50
+ calendar : {
51
+ sameDay : '[Бүгін сағат] LT',
52
+ nextDay : '[Ертең сағат] LT',
53
+ nextWeek : 'dddd [сағат] LT',
54
+ lastDay : '[Кеше сағат] LT',
55
+ lastWeek : '[Өткен аптаның] dddd [сағат] LT',
56
+ sameElse : 'L'
57
+ },
58
+ relativeTime : {
59
+ future : '%s ішінде',
60
+ past : '%s бұрын',
61
+ s : 'бірнеше секунд',
62
+ m : 'бір минут',
63
+ mm : '%d минут',
64
+ h : 'бір сағат',
65
+ hh : '%d сағат',
66
+ d : 'бір күн',
67
+ dd : '%d күн',
68
+ M : 'бір ай',
69
+ MM : '%d ай',
70
+ y : 'бір жыл',
71
+ yy : '%d жыл'
72
+ },
73
+ ordinalParse: /\d{1,2}-(ші|шы)/,
74
+ ordinal : function (number) {
75
+ var a = number % 10,
76
+ b = number >= 100 ? 100 : null;
77
+ return number + (suffixes[number] || suffixes[a] || suffixes[b]);
78
+ },
79
+ week : {
80
+ dow : 1, // Monday is the first day of the week.
81
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
82
+ }
83
+ });
84
+
85
+ return kk;
86
+
87
+ }));
bp-core/js/vendor/moment-js/locale/kk.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"},c=a.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(a){var c=a%10,d=a>=100?100:null;return a+(b[a]||b[c]||b[d])},week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/km.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Cambodian [km]
3
+ //! author : Kruy Vanna : https://github.com/kruyvanna
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var km = moment.defineLocale('km', {
14
+ months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
15
+ monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
16
+ weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
17
+ weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
18
+ weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
19
+ longDateFormat: {
20
+ LT: 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L: 'DD/MM/YYYY',
23
+ LL: 'D MMMM YYYY',
24
+ LLL: 'D MMMM YYYY HH:mm',
25
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
26
+ },
27
+ calendar: {
28
+ sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
29
+ nextDay: '[ស្អែក ម៉ោង] LT',
30
+ nextWeek: 'dddd [ម៉ោង] LT',
31
+ lastDay: '[ម្សិលមិញ ម៉ោង] LT',
32
+ lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime: {
36
+ future: '%sទៀត',
37
+ past: '%sមុន',
38
+ s: 'ប៉ុន្មានវិនាទី',
39
+ m: 'មួយនាទី',
40
+ mm: '%d នាទី',
41
+ h: 'មួយម៉ោង',
42
+ hh: '%d ម៉ោង',
43
+ d: 'មួយថ្ងៃ',
44
+ dd: '%d ថ្ងៃ',
45
+ M: 'មួយខែ',
46
+ MM: '%d ខែ',
47
+ y: 'មួយឆ្នាំ',
48
+ yy: '%d ឆ្នាំ'
49
+ },
50
+ week: {
51
+ dow: 1, // Monday is the first day of the week.
52
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
53
+ }
54
+ });
55
+
56
+ return km;
57
+
58
+ }));
bp-core/js/vendor/moment-js/locale/km.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ko.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Korean [ko]
3
+ //! author : Kyungwook, Park : https://github.com/kyungw00k
4
+ //! author : Jeeeyul Lee <jeeeyul@gmail.com>
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var ko = moment.defineLocale('ko', {
15
+ months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
16
+ monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
17
+ weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
18
+ weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
19
+ weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'A h시 m분',
22
+ LTS : 'A h시 m분 s초',
23
+ L : 'YYYY.MM.DD',
24
+ LL : 'YYYY년 MMMM D일',
25
+ LLL : 'YYYY년 MMMM D일 A h시 m분',
26
+ LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'
27
+ },
28
+ calendar : {
29
+ sameDay : '오늘 LT',
30
+ nextDay : '내일 LT',
31
+ nextWeek : 'dddd LT',
32
+ lastDay : '어제 LT',
33
+ lastWeek : '지난주 dddd LT',
34
+ sameElse : 'L'
35
+ },
36
+ relativeTime : {
37
+ future : '%s 후',
38
+ past : '%s 전',
39
+ s : '몇 초',
40
+ ss : '%d초',
41
+ m : '일분',
42
+ mm : '%d분',
43
+ h : '한 시간',
44
+ hh : '%d시간',
45
+ d : '하루',
46
+ dd : '%d일',
47
+ M : '한 달',
48
+ MM : '%d달',
49
+ y : '일 년',
50
+ yy : '%d년'
51
+ },
52
+ ordinalParse : /\d{1,2}일/,
53
+ ordinal : '%d일',
54
+ meridiemParse : /오전|오후/,
55
+ isPM : function (token) {
56
+ return token === '오후';
57
+ },
58
+ meridiem : function (hour, minute, isUpper) {
59
+ return hour < 12 ? '오전' : '오후';
60
+ }
61
+ });
62
+
63
+ return ko;
64
+
65
+ }));
bp-core/js/vendor/moment-js/locale/ko.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return a<12?"오전":"오후"}});return b});
bp-core/js/vendor/moment-js/locale/ky.js ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Kyrgyz [ky]
3
+ //! author : Chyngyz Arystan uulu : https://github.com/chyngyz
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+
14
+ var suffixes = {
15
+ 0: '-чү',
16
+ 1: '-чи',
17
+ 2: '-чи',
18
+ 3: '-чү',
19
+ 4: '-чү',
20
+ 5: '-чи',
21
+ 6: '-чы',
22
+ 7: '-чи',
23
+ 8: '-чи',
24
+ 9: '-чу',
25
+ 10: '-чу',
26
+ 20: '-чы',
27
+ 30: '-чу',
28
+ 40: '-чы',
29
+ 50: '-чү',
30
+ 60: '-чы',
31
+ 70: '-чи',
32
+ 80: '-чи',
33
+ 90: '-чу',
34
+ 100: '-чү'
35
+ };
36
+
37
+ var ky = moment.defineLocale('ky', {
38
+ months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
39
+ monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
40
+ weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
41
+ weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
42
+ weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
43
+ longDateFormat : {
44
+ LT : 'HH:mm',
45
+ LTS : 'HH:mm:ss',
46
+ L : 'DD.MM.YYYY',
47
+ LL : 'D MMMM YYYY',
48
+ LLL : 'D MMMM YYYY HH:mm',
49
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
50
+ },
51
+ calendar : {
52
+ sameDay : '[Бүгүн саат] LT',
53
+ nextDay : '[Эртең саат] LT',
54
+ nextWeek : 'dddd [саат] LT',
55
+ lastDay : '[Кече саат] LT',
56
+ lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
57
+ sameElse : 'L'
58
+ },
59
+ relativeTime : {
60
+ future : '%s ичинде',
61
+ past : '%s мурун',
62
+ s : 'бирнече секунд',
63
+ m : 'бир мүнөт',
64
+ mm : '%d мүнөт',
65
+ h : 'бир саат',
66
+ hh : '%d саат',
67
+ d : 'бир күн',
68
+ dd : '%d күн',
69
+ M : 'бир ай',
70
+ MM : '%d ай',
71
+ y : 'бир жыл',
72
+ yy : '%d жыл'
73
+ },
74
+ ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
75
+ ordinal : function (number) {
76
+ var a = number % 10,
77
+ b = number >= 100 ? 100 : null;
78
+ return number + (suffixes[number] || suffixes[a] || suffixes[b]);
79
+ },
80
+ week : {
81
+ dow : 1, // Monday is the first day of the week.
82
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
83
+ }
84
+ });
85
+
86
+ return ky;
87
+
88
+ }));
bp-core/js/vendor/moment-js/locale/ky.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"},c=a.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кече саат] LT",lastWeek:"[Өткен аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(a){var c=a%10,d=a>=100?100:null;return a+(b[a]||b[c]||b[d])},week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/lb.js ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Luxembourgish [lb]
3
+ //! author : mweimerskirch : https://github.com/mweimerskirch
4
+ //! author : David Raison : https://github.com/kwisatz
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
15
+ var format = {
16
+ 'm': ['eng Minutt', 'enger Minutt'],
17
+ 'h': ['eng Stonn', 'enger Stonn'],
18
+ 'd': ['een Dag', 'engem Dag'],
19
+ 'M': ['ee Mount', 'engem Mount'],
20
+ 'y': ['ee Joer', 'engem Joer']
21
+ };
22
+ return withoutSuffix ? format[key][0] : format[key][1];
23
+ }
24
+ function processFutureTime(string) {
25
+ var number = string.substr(0, string.indexOf(' '));
26
+ if (eifelerRegelAppliesToNumber(number)) {
27
+ return 'a ' + string;
28
+ }
29
+ return 'an ' + string;
30
+ }
31
+ function processPastTime(string) {
32
+ var number = string.substr(0, string.indexOf(' '));
33
+ if (eifelerRegelAppliesToNumber(number)) {
34
+ return 'viru ' + string;
35
+ }
36
+ return 'virun ' + string;
37
+ }
38
+ /**
39
+ * Returns true if the word before the given number loses the '-n' ending.
40
+ * e.g. 'an 10 Deeg' but 'a 5 Deeg'
41
+ *
42
+ * @param number {integer}
43
+ * @returns {boolean}
44
+ */
45
+ function eifelerRegelAppliesToNumber(number) {
46
+ number = parseInt(number, 10);
47
+ if (isNaN(number)) {
48
+ return false;
49
+ }
50
+ if (number < 0) {
51
+ // Negative Number --> always true
52
+ return true;
53
+ } else if (number < 10) {
54
+ // Only 1 digit
55
+ if (4 <= number && number <= 7) {
56
+ return true;
57
+ }
58
+ return false;
59
+ } else if (number < 100) {
60
+ // 2 digits
61
+ var lastDigit = number % 10, firstDigit = number / 10;
62
+ if (lastDigit === 0) {
63
+ return eifelerRegelAppliesToNumber(firstDigit);
64
+ }
65
+ return eifelerRegelAppliesToNumber(lastDigit);
66
+ } else if (number < 10000) {
67
+ // 3 or 4 digits --> recursively check first digit
68
+ while (number >= 10) {
69
+ number = number / 10;
70
+ }
71
+ return eifelerRegelAppliesToNumber(number);
72
+ } else {
73
+ // Anything larger than 4 digits: recursively check first n-3 digits
74
+ number = number / 1000;
75
+ return eifelerRegelAppliesToNumber(number);
76
+ }
77
+ }
78
+
79
+ var lb = moment.defineLocale('lb', {
80
+ months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
81
+ monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
82
+ monthsParseExact : true,
83
+ weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
84
+ weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
85
+ weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
86
+ weekdaysParseExact : true,
87
+ longDateFormat: {
88
+ LT: 'H:mm [Auer]',
89
+ LTS: 'H:mm:ss [Auer]',
90
+ L: 'DD.MM.YYYY',
91
+ LL: 'D. MMMM YYYY',
92
+ LLL: 'D. MMMM YYYY H:mm [Auer]',
93
+ LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
94
+ },
95
+ calendar: {
96
+ sameDay: '[Haut um] LT',
97
+ sameElse: 'L',
98
+ nextDay: '[Muer um] LT',
99
+ nextWeek: 'dddd [um] LT',
100
+ lastDay: '[Gëschter um] LT',
101
+ lastWeek: function () {
102
+ // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
103
+ switch (this.day()) {
104
+ case 2:
105
+ case 4:
106
+ return '[Leschten] dddd [um] LT';
107
+ default:
108
+ return '[Leschte] dddd [um] LT';
109
+ }
110
+ }
111
+ },
112
+ relativeTime : {
113
+ future : processFutureTime,
114
+ past : processPastTime,
115
+ s : 'e puer Sekonnen',
116
+ m : processRelativeTime,
117
+ mm : '%d Minutten',
118
+ h : processRelativeTime,
119
+ hh : '%d Stonnen',
120
+ d : processRelativeTime,
121
+ dd : '%d Deeg',
122
+ M : processRelativeTime,
123
+ MM : '%d Méint',
124
+ y : processRelativeTime,
125
+ yy : '%d Joer'
126
+ },
127
+ ordinalParse: /\d{1,2}\./,
128
+ ordinal: '%d.',
129
+ week: {
130
+ dow: 1, // Monday is the first day of the week.
131
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
132
+ }
133
+ });
134
+
135
+ return lb;
136
+
137
+ }));
bp-core/js/vendor/moment-js/locale/lb.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function c(a){var b=a.substr(0,a.indexOf(" "));return e(b)?"a "+a:"an "+a}function d(a){var b=a.substr(0,a.indexOf(" "));return e(b)?"viru "+a:"virun "+a}function e(a){if(a=parseInt(a,10),isNaN(a))return!1;if(a<0)return!0;if(a<10)return 4<=a&&a<=7;if(a<100){var b=a%10,c=a/10;return e(0===b?c:b)}if(a<1e4){for(;a>=10;)a/=10;return e(a)}return a/=1e3,e(a)}var f=a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:c,past:d,s:"e puer Sekonnen",m:b,mm:"%d Minutten",h:b,hh:"%d Stonnen",d:b,dd:"%d Deeg",M:b,MM:"%d Méint",y:b,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/lo.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Lao [lo]
3
+ //! author : Ryan Hart : https://github.com/ryanhart2
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var lo = moment.defineLocale('lo', {
14
+ months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
15
+ monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
16
+ weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
17
+ weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
18
+ weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
19
+ weekdaysParseExact : true,
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY HH:mm',
26
+ LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
27
+ },
28
+ meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
29
+ isPM: function (input) {
30
+ return input === 'ຕອນແລງ';
31
+ },
32
+ meridiem : function (hour, minute, isLower) {
33
+ if (hour < 12) {
34
+ return 'ຕອນເຊົ້າ';
35
+ } else {
36
+ return 'ຕອນແລງ';
37
+ }
38
+ },
39
+ calendar : {
40
+ sameDay : '[ມື້ນີ້ເວລາ] LT',
41
+ nextDay : '[ມື້ອື່ນເວລາ] LT',
42
+ nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
43
+ lastDay : '[ມື້ວານນີ້ເວລາ] LT',
44
+ lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
45
+ sameElse : 'L'
46
+ },
47
+ relativeTime : {
48
+ future : 'ອີກ %s',
49
+ past : '%sຜ່ານມາ',
50
+ s : 'ບໍ່ເທົ່າໃດວິນາທີ',
51
+ m : '1 ນາທີ',
52
+ mm : '%d ນາທີ',
53
+ h : '1 ຊົ່ວໂມງ',
54
+ hh : '%d ຊົ່ວໂມງ',
55
+ d : '1 ມື້',
56
+ dd : '%d ມື້',
57
+ M : '1 ເດືອນ',
58
+ MM : '%d ເດືອນ',
59
+ y : '1 ປີ',
60
+ yy : '%d ປີ'
61
+ },
62
+ ordinalParse: /(ທີ່)\d{1,2}/,
63
+ ordinal : function (number) {
64
+ return 'ທີ່' + number;
65
+ }
66
+ });
67
+
68
+ return lo;
69
+
70
+ }));
bp-core/js/vendor/moment-js/locale/lo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(a){return"ຕອນແລງ"===a},meridiem:function(a,b,c){return a<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},ordinalParse:/(ທີ່)\d{1,2}/,ordinal:function(a){return"ທີ່"+a}});return b});
bp-core/js/vendor/moment-js/locale/lt.js ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Lithuanian [lt]
3
+ //! author : Mindaugas Mozūras : https://github.com/mmozuras
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var units = {
14
+ 'm' : 'minutė_minutės_minutę',
15
+ 'mm': 'minutės_minučių_minutes',
16
+ 'h' : 'valanda_valandos_valandą',
17
+ 'hh': 'valandos_valandų_valandas',
18
+ 'd' : 'diena_dienos_dieną',
19
+ 'dd': 'dienos_dienų_dienas',
20
+ 'M' : 'mėnuo_mėnesio_mėnesį',
21
+ 'MM': 'mėnesiai_mėnesių_mėnesius',
22
+ 'y' : 'metai_metų_metus',
23
+ 'yy': 'metai_metų_metus'
24
+ };
25
+ function translateSeconds(number, withoutSuffix, key, isFuture) {
26
+ if (withoutSuffix) {
27
+ return 'kelios sekundės';
28
+ } else {
29
+ return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
30
+ }
31
+ }
32
+ function translateSingular(number, withoutSuffix, key, isFuture) {
33
+ return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
34
+ }
35
+ function special(number) {
36
+ return number % 10 === 0 || (number > 10 && number < 20);
37
+ }
38
+ function forms(key) {
39
+ return units[key].split('_');
40
+ }
41
+ function translate(number, withoutSuffix, key, isFuture) {
42
+ var result = number + ' ';
43
+ if (number === 1) {
44
+ return result + translateSingular(number, withoutSuffix, key[0], isFuture);
45
+ } else if (withoutSuffix) {
46
+ return result + (special(number) ? forms(key)[1] : forms(key)[0]);
47
+ } else {
48
+ if (isFuture) {
49
+ return result + forms(key)[1];
50
+ } else {
51
+ return result + (special(number) ? forms(key)[1] : forms(key)[2]);
52
+ }
53
+ }
54
+ }
55
+ var lt = moment.defineLocale('lt', {
56
+ months : {
57
+ format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
58
+ standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
59
+ isFormat: /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/
60
+ },
61
+ monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
62
+ weekdays : {
63
+ format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
64
+ standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
65
+ isFormat: /dddd HH:mm/
66
+ },
67
+ weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
68
+ weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
69
+ weekdaysParseExact : true,
70
+ longDateFormat : {
71
+ LT : 'HH:mm',
72
+ LTS : 'HH:mm:ss',
73
+ L : 'YYYY-MM-DD',
74
+ LL : 'YYYY [m.] MMMM D [d.]',
75
+ LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
76
+ LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
77
+ l : 'YYYY-MM-DD',
78
+ ll : 'YYYY [m.] MMMM D [d.]',
79
+ lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
80
+ llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
81
+ },
82
+ calendar : {
83
+ sameDay : '[Šiandien] LT',
84
+ nextDay : '[Rytoj] LT',
85
+ nextWeek : 'dddd LT',
86
+ lastDay : '[Vakar] LT',
87
+ lastWeek : '[Praėjusį] dddd LT',
88
+ sameElse : 'L'
89
+ },
90
+ relativeTime : {
91
+ future : 'po %s',
92
+ past : 'prieš %s',
93
+ s : translateSeconds,
94
+ m : translateSingular,
95
+ mm : translate,
96
+ h : translateSingular,
97
+ hh : translate,
98
+ d : translateSingular,
99
+ dd : translate,
100
+ M : translateSingular,
101
+ MM : translate,
102
+ y : translateSingular,
103
+ yy : translate
104
+ },
105
+ ordinalParse: /\d{1,2}-oji/,
106
+ ordinal : function (number) {
107
+ return number + '-oji';
108
+ },
109
+ week : {
110
+ dow : 1, // Monday is the first day of the week.
111
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
112
+ }
113
+ });
114
+
115
+ return lt;
116
+
117
+ }));
bp-core/js/vendor/moment-js/locale/lt.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&a<20}function e(a){return g[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}var g={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h=a.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:b,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});return h});
bp-core/js/vendor/moment-js/locale/lv.js ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Latvian [lv]
3
+ //! author : Kristaps Karlsons : https://github.com/skakri
4
+ //! author : Jānis Elmeris : https://github.com/JanisE
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var units = {
15
+ 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
16
+ 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
17
+ 'h': 'stundas_stundām_stunda_stundas'.split('_'),
18
+ 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
19
+ 'd': 'dienas_dienām_diena_dienas'.split('_'),
20
+ 'dd': 'dienas_dienām_diena_dienas'.split('_'),
21
+ 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
22
+ 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
23
+ 'y': 'gada_gadiem_gads_gadi'.split('_'),
24
+ 'yy': 'gada_gadiem_gads_gadi'.split('_')
25
+ };
26
+ /**
27
+ * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
28
+ */
29
+ function format(forms, number, withoutSuffix) {
30
+ if (withoutSuffix) {
31
+ // E.g. "21 minūte", "3 minūtes".
32
+ return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
33
+ } else {
34
+ // E.g. "21 minūtes" as in "pēc 21 minūtes".
35
+ // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
36
+ return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
37
+ }
38
+ }
39
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
40
+ return number + ' ' + format(units[key], number, withoutSuffix);
41
+ }
42
+ function relativeTimeWithSingular(number, withoutSuffix, key) {
43
+ return format(units[key], number, withoutSuffix);
44
+ }
45
+ function relativeSeconds(number, withoutSuffix) {
46
+ return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
47
+ }
48
+
49
+ var lv = moment.defineLocale('lv', {
50
+ months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
51
+ monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
52
+ weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
53
+ weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
54
+ weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
55
+ weekdaysParseExact : true,
56
+ longDateFormat : {
57
+ LT : 'HH:mm',
58
+ LTS : 'HH:mm:ss',
59
+ L : 'DD.MM.YYYY.',
60
+ LL : 'YYYY. [gada] D. MMMM',
61
+ LLL : 'YYYY. [gada] D. MMMM, HH:mm',
62
+ LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
63
+ },
64
+ calendar : {
65
+ sameDay : '[Šodien pulksten] LT',
66
+ nextDay : '[Rīt pulksten] LT',
67
+ nextWeek : 'dddd [pulksten] LT',
68
+ lastDay : '[Vakar pulksten] LT',
69
+ lastWeek : '[Pagājušā] dddd [pulksten] LT',
70
+ sameElse : 'L'
71
+ },
72
+ relativeTime : {
73
+ future : 'pēc %s',
74
+ past : 'pirms %s',
75
+ s : relativeSeconds,
76
+ m : relativeTimeWithSingular,
77
+ mm : relativeTimeWithPlural,
78
+ h : relativeTimeWithSingular,
79
+ hh : relativeTimeWithPlural,
80
+ d : relativeTimeWithSingular,
81
+ dd : relativeTimeWithPlural,
82
+ M : relativeTimeWithSingular,
83
+ MM : relativeTimeWithPlural,
84
+ y : relativeTimeWithSingular,
85
+ yy : relativeTimeWithPlural
86
+ },
87
+ ordinalParse: /\d{1,2}\./,
88
+ ordinal : '%d.',
89
+ week : {
90
+ dow : 1, // Monday is the first day of the week.
91
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
92
+ }
93
+ });
94
+
95
+ return lv;
96
+
97
+ }));
bp-core/js/vendor/moment-js/locale/lv.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c){return c?b%10===1&&b%100!==11?a[2]:a[3]:b%10===1&&b%100!==11?a[0]:a[1]}function c(a,c,d){return a+" "+b(f[d],a,c)}function d(a,c,d){return b(f[d],a,c)}function e(a,b){return b?"dažas sekundes":"dažām sekundēm"}var f={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},g=a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:e,m:d,mm:c,h:d,hh:c,d:d,dd:c,M:d,MM:c,y:d,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g});
bp-core/js/vendor/moment-js/locale/me.js ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Montenegrin [me]
3
+ //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var translator = {
14
+ words: { //Different grammatical cases
15
+ m: ['jedan minut', 'jednog minuta'],
16
+ mm: ['minut', 'minuta', 'minuta'],
17
+ h: ['jedan sat', 'jednog sata'],
18
+ hh: ['sat', 'sata', 'sati'],
19
+ dd: ['dan', 'dana', 'dana'],
20
+ MM: ['mjesec', 'mjeseca', 'mjeseci'],
21
+ yy: ['godina', 'godine', 'godina']
22
+ },
23
+ correctGrammaticalCase: function (number, wordKey) {
24
+ return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
25
+ },
26
+ translate: function (number, withoutSuffix, key) {
27
+ var wordKey = translator.words[key];
28
+ if (key.length === 1) {
29
+ return withoutSuffix ? wordKey[0] : wordKey[1];
30
+ } else {
31
+ return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
32
+ }
33
+ }
34
+ };
35
+
36
+ var me = moment.defineLocale('me', {
37
+ months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
38
+ monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
39
+ monthsParseExact : true,
40
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
41
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
42
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
43
+ weekdaysParseExact : true,
44
+ longDateFormat: {
45
+ LT: 'H:mm',
46
+ LTS : 'H:mm:ss',
47
+ L: 'DD.MM.YYYY',
48
+ LL: 'D. MMMM YYYY',
49
+ LLL: 'D. MMMM YYYY H:mm',
50
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
51
+ },
52
+ calendar: {
53
+ sameDay: '[danas u] LT',
54
+ nextDay: '[sjutra u] LT',
55
+
56
+ nextWeek: function () {
57
+ switch (this.day()) {
58
+ case 0:
59
+ return '[u] [nedjelju] [u] LT';
60
+ case 3:
61
+ return '[u] [srijedu] [u] LT';
62
+ case 6:
63
+ return '[u] [subotu] [u] LT';
64
+ case 1:
65
+ case 2:
66
+ case 4:
67
+ case 5:
68
+ return '[u] dddd [u] LT';
69
+ }
70
+ },
71
+ lastDay : '[juče u] LT',
72
+ lastWeek : function () {
73
+ var lastWeekDays = [
74
+ '[prošle] [nedjelje] [u] LT',
75
+ '[prošlog] [ponedjeljka] [u] LT',
76
+ '[prošlog] [utorka] [u] LT',
77
+ '[prošle] [srijede] [u] LT',
78
+ '[prošlog] [četvrtka] [u] LT',
79
+ '[prošlog] [petka] [u] LT',
80
+ '[prošle] [subote] [u] LT'
81
+ ];
82
+ return lastWeekDays[this.day()];
83
+ },
84
+ sameElse : 'L'
85
+ },
86
+ relativeTime : {
87
+ future : 'za %s',
88
+ past : 'prije %s',
89
+ s : 'nekoliko sekundi',
90
+ m : translator.translate,
91
+ mm : translator.translate,
92
+ h : translator.translate,
93
+ hh : translator.translate,
94
+ d : 'dan',
95
+ dd : translator.translate,
96
+ M : 'mjesec',
97
+ MM : translator.translate,
98
+ y : 'godinu',
99
+ yy : translator.translate
100
+ },
101
+ ordinalParse: /\d{1,2}\./,
102
+ ordinal : '%d.',
103
+ week : {
104
+ dow : 1, // Monday is the first day of the week.
105
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
106
+ }
107
+ });
108
+
109
+ return me;
110
+
111
+ }));
bp-core/js/vendor/moment-js/locale/me.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,c,d){var e=b.words[d];return 1===d.length?c?e[0]:e[1]:a+" "+b.correctGrammaticalCase(a,e)}},c=a.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:b.translate,mm:b.translate,h:b.translate,hh:b.translate,d:"dan",dd:b.translate,M:"mjesec",MM:b.translate,y:"godinu",yy:b.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/mi.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Maori [mi]
3
+ //! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var mi = moment.defineLocale('mi', {
14
+ months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
15
+ monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
16
+ monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
17
+ monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
18
+ monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
19
+ monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
20
+ weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
21
+ weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
22
+ weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
23
+ longDateFormat: {
24
+ LT: 'HH:mm',
25
+ LTS: 'HH:mm:ss',
26
+ L: 'DD/MM/YYYY',
27
+ LL: 'D MMMM YYYY',
28
+ LLL: 'D MMMM YYYY [i] HH:mm',
29
+ LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
30
+ },
31
+ calendar: {
32
+ sameDay: '[i teie mahana, i] LT',
33
+ nextDay: '[apopo i] LT',
34
+ nextWeek: 'dddd [i] LT',
35
+ lastDay: '[inanahi i] LT',
36
+ lastWeek: 'dddd [whakamutunga i] LT',
37
+ sameElse: 'L'
38
+ },
39
+ relativeTime: {
40
+ future: 'i roto i %s',
41
+ past: '%s i mua',
42
+ s: 'te hēkona ruarua',
43
+ m: 'he meneti',
44
+ mm: '%d meneti',
45
+ h: 'te haora',
46
+ hh: '%d haora',
47
+ d: 'he ra',
48
+ dd: '%d ra',
49
+ M: 'he marama',
50
+ MM: '%d marama',
51
+ y: 'he tau',
52
+ yy: '%d tau'
53
+ },
54
+ ordinalParse: /\d{1,2}º/,
55
+ ordinal: '%dº',
56
+ week : {
57
+ dow : 1, // Monday is the first day of the week.
58
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
59
+ }
60
+ });
61
+
62
+ return mi;
63
+
64
+ }));
bp-core/js/vendor/moment-js/locale/mi.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/mk.js ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Macedonian [mk]
3
+ //! author : Borislav Mickov : https://github.com/B0k0
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var mk = moment.defineLocale('mk', {
14
+ months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
15
+ monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
16
+ weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
17
+ weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
18
+ weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'H:mm',
21
+ LTS : 'H:mm:ss',
22
+ L : 'D.MM.YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY H:mm',
25
+ LLLL : 'dddd, D MMMM YYYY H:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Денес во] LT',
29
+ nextDay : '[Утре во] LT',
30
+ nextWeek : '[Во] dddd [во] LT',
31
+ lastDay : '[Вчера во] LT',
32
+ lastWeek : function () {
33
+ switch (this.day()) {
34
+ case 0:
35
+ case 3:
36
+ case 6:
37
+ return '[Изминатата] dddd [во] LT';
38
+ case 1:
39
+ case 2:
40
+ case 4:
41
+ case 5:
42
+ return '[Изминатиот] dddd [во] LT';
43
+ }
44
+ },
45
+ sameElse : 'L'
46
+ },
47
+ relativeTime : {
48
+ future : 'после %s',
49
+ past : 'пред %s',
50
+ s : 'неколку секунди',
51
+ m : 'минута',
52
+ mm : '%d минути',
53
+ h : 'час',
54
+ hh : '%d часа',
55
+ d : 'ден',
56
+ dd : '%d дена',
57
+ M : 'месец',
58
+ MM : '%d месеци',
59
+ y : 'година',
60
+ yy : '%d години'
61
+ },
62
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
63
+ ordinal : function (number) {
64
+ var lastDigit = number % 10,
65
+ last2Digits = number % 100;
66
+ if (number === 0) {
67
+ return number + '-ев';
68
+ } else if (last2Digits === 0) {
69
+ return number + '-ен';
70
+ } else if (last2Digits > 10 && last2Digits < 20) {
71
+ return number + '-ти';
72
+ } else if (lastDigit === 1) {
73
+ return number + '-ви';
74
+ } else if (lastDigit === 2) {
75
+ return number + '-ри';
76
+ } else if (lastDigit === 7 || lastDigit === 8) {
77
+ return number + '-ми';
78
+ } else {
79
+ return number + '-ти';
80
+ }
81
+ },
82
+ week : {
83
+ dow : 1, // Monday is the first day of the week.
84
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
85
+ }
86
+ });
87
+
88
+ return mk;
89
+
90
+ }));
bp-core/js/vendor/moment-js/locale/mk.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&c<20?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/ml.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Malayalam [ml]
3
+ //! author : Floyd Pink : https://github.com/floydpink
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ml = moment.defineLocale('ml', {
14
+ months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
15
+ monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
18
+ weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
19
+ weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'A h:mm -നു',
22
+ LTS : 'A h:mm:ss -നു',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY, A h:mm -നു',
26
+ LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
27
+ },
28
+ calendar : {
29
+ sameDay : '[ഇന്ന്] LT',
30
+ nextDay : '[നാളെ] LT',
31
+ nextWeek : 'dddd, LT',
32
+ lastDay : '[ഇന്നലെ] LT',
33
+ lastWeek : '[കഴിഞ്ഞ] dddd, LT',
34
+ sameElse : 'L'
35
+ },
36
+ relativeTime : {
37
+ future : '%s കഴിഞ്ഞ്',
38
+ past : '%s മുൻപ്',
39
+ s : 'അൽപ നിമിഷങ്ങൾ',
40
+ m : 'ഒരു മിനിറ്റ്',
41
+ mm : '%d മിനിറ്റ്',
42
+ h : 'ഒരു മണിക്കൂർ',
43
+ hh : '%d മണിക്കൂർ',
44
+ d : 'ഒരു ദിവസം',
45
+ dd : '%d ദിവസം',
46
+ M : 'ഒരു മാസം',
47
+ MM : '%d മാസം',
48
+ y : 'ഒരു വർഷം',
49
+ yy : '%d വർഷം'
50
+ },
51
+ meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
52
+ meridiemHour : function (hour, meridiem) {
53
+ if (hour === 12) {
54
+ hour = 0;
55
+ }
56
+ if ((meridiem === 'രാത്രി' && hour >= 4) ||
57
+ meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
58
+ meridiem === 'വൈകുന്നേരം') {
59
+ return hour + 12;
60
+ } else {
61
+ return hour;
62
+ }
63
+ },
64
+ meridiem : function (hour, minute, isLower) {
65
+ if (hour < 4) {
66
+ return 'രാത്രി';
67
+ } else if (hour < 12) {
68
+ return 'രാവിലെ';
69
+ } else if (hour < 17) {
70
+ return 'ഉച്ച കഴിഞ്ഞ്';
71
+ } else if (hour < 20) {
72
+ return 'വൈകുന്നേരം';
73
+ } else {
74
+ return 'രാത്രി';
75
+ }
76
+ }
77
+ });
78
+
79
+ return ml;
80
+
81
+ }));
bp-core/js/vendor/moment-js/locale/ml.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(a,b){return 12===a&&(a=0),"രാത്രി"===b&&a>=4||"ഉച്ച കഴിഞ്ഞ്"===b||"വൈകുന്നേരം"===b?a+12:a},meridiem:function(a,b,c){return a<4?"രാത്രി":a<12?"രാവിലെ":a<17?"ഉച്ച കഴിഞ്ഞ്":a<20?"വൈകുന്നേരം":"രാത്രി"}});return b});
bp-core/js/vendor/moment-js/locale/mr.js ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Marathi [mr]
3
+ //! author : Harshad Kale : https://github.com/kalehv
4
+ //! author : Vivek Athalye : https://github.com/vnathalye
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var symbolMap = {
15
+ '1': '१',
16
+ '2': '२',
17
+ '3': '३',
18
+ '4': '४',
19
+ '5': '५',
20
+ '6': '६',
21
+ '7': '७',
22
+ '8': '८',
23
+ '9': '९',
24
+ '0': '०'
25
+ },
26
+ numberMap = {
27
+ '१': '1',
28
+ '२': '2',
29
+ '३': '3',
30
+ '४': '4',
31
+ '५': '5',
32
+ '६': '6',
33
+ '७': '7',
34
+ '८': '8',
35
+ '९': '9',
36
+ '०': '0'
37
+ };
38
+
39
+ function relativeTimeMr(number, withoutSuffix, string, isFuture)
40
+ {
41
+ var output = '';
42
+ if (withoutSuffix) {
43
+ switch (string) {
44
+ case 's': output = 'काही सेकंद'; break;
45
+ case 'm': output = 'एक मिनिट'; break;
46
+ case 'mm': output = '%d मिनिटे'; break;
47
+ case 'h': output = 'एक तास'; break;
48
+ case 'hh': output = '%d तास'; break;
49
+ case 'd': output = 'एक दिवस'; break;
50
+ case 'dd': output = '%d दिवस'; break;
51
+ case 'M': output = 'एक महिना'; break;
52
+ case 'MM': output = '%d महिने'; break;
53
+ case 'y': output = 'एक वर्ष'; break;
54
+ case 'yy': output = '%d वर्षे'; break;
55
+ }
56
+ }
57
+ else {
58
+ switch (string) {
59
+ case 's': output = 'काही सेकंदां'; break;
60
+ case 'm': output = 'एका मिनिटा'; break;
61
+ case 'mm': output = '%d मिनिटां'; break;
62
+ case 'h': output = 'एका तासा'; break;
63
+ case 'hh': output = '%d तासां'; break;
64
+ case 'd': output = 'एका दिवसा'; break;
65
+ case 'dd': output = '%d दिवसां'; break;
66
+ case 'M': output = 'एका महिन्या'; break;
67
+ case 'MM': output = '%d महिन्यां'; break;
68
+ case 'y': output = 'एका वर्षा'; break;
69
+ case 'yy': output = '%d वर्षां'; break;
70
+ }
71
+ }
72
+ return output.replace(/%d/i, number);
73
+ }
74
+
75
+ var mr = moment.defineLocale('mr', {
76
+ months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
77
+ monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
78
+ monthsParseExact : true,
79
+ weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
80
+ weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
81
+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
82
+ longDateFormat : {
83
+ LT : 'A h:mm वाजता',
84
+ LTS : 'A h:mm:ss वाजता',
85
+ L : 'DD/MM/YYYY',
86
+ LL : 'D MMMM YYYY',
87
+ LLL : 'D MMMM YYYY, A h:mm वाजता',
88
+ LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
89
+ },
90
+ calendar : {
91
+ sameDay : '[आज] LT',
92
+ nextDay : '[उद्या] LT',
93
+ nextWeek : 'dddd, LT',
94
+ lastDay : '[काल] LT',
95
+ lastWeek: '[मागील] dddd, LT',
96
+ sameElse : 'L'
97
+ },
98
+ relativeTime : {
99
+ future: '%sमध्ये',
100
+ past: '%sपूर्वी',
101
+ s: relativeTimeMr,
102
+ m: relativeTimeMr,
103
+ mm: relativeTimeMr,
104
+ h: relativeTimeMr,
105
+ hh: relativeTimeMr,
106
+ d: relativeTimeMr,
107
+ dd: relativeTimeMr,
108
+ M: relativeTimeMr,
109
+ MM: relativeTimeMr,
110
+ y: relativeTimeMr,
111
+ yy: relativeTimeMr
112
+ },
113
+ preparse: function (string) {
114
+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
115
+ return numberMap[match];
116
+ });
117
+ },
118
+ postformat: function (string) {
119
+ return string.replace(/\d/g, function (match) {
120
+ return symbolMap[match];
121
+ });
122
+ },
123
+ meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
124
+ meridiemHour : function (hour, meridiem) {
125
+ if (hour === 12) {
126
+ hour = 0;
127
+ }
128
+ if (meridiem === 'रात्री') {
129
+ return hour < 4 ? hour : hour + 12;
130
+ } else if (meridiem === 'सकाळी') {
131
+ return hour;
132
+ } else if (meridiem === 'दुपारी') {
133
+ return hour >= 10 ? hour : hour + 12;
134
+ } else if (meridiem === 'सायंकाळी') {
135
+ return hour + 12;
136
+ }
137
+ },
138
+ meridiem: function (hour, minute, isLower) {
139
+ if (hour < 4) {
140
+ return 'रात्री';
141
+ } else if (hour < 10) {
142
+ return 'सकाळी';
143
+ } else if (hour < 17) {
144
+ return 'दुपारी';
145
+ } else if (hour < 20) {
146
+ return 'सायंकाळी';
147
+ } else {
148
+ return 'रात्री';
149
+ }
150
+ },
151
+ week : {
152
+ dow : 0, // Sunday is the first day of the week.
153
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
154
+ }
155
+ });
156
+
157
+ return mr;
158
+
159
+ }));
bp-core/js/vendor/moment-js/locale/mr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e="";if(b)switch(c){case"s":e="काही सेकंद";break;case"m":e="एक मिनिट";break;case"mm":e="%d मिनिटे";break;case"h":e="एक तास";break;case"hh":e="%d तास";break;case"d":e="एक दिवस";break;case"dd":e="%d दिवस";break;case"M":e="एक महिना";break;case"MM":e="%d महिने";break;case"y":e="एक वर्ष";break;case"yy":e="%d वर्षे"}else switch(c){case"s":e="काही सेकंदां";break;case"m":e="एका मिनिटा";break;case"mm":e="%d मिनिटां";break;case"h":e="एका तासा";break;case"hh":e="%d तासां";break;case"d":e="एका दिवसा";break;case"dd":e="%d दिवसां";break;case"M":e="एका महिन्या";break;case"MM":e="%d महिन्यां";break;case"y":e="एका वर्षा";break;case"yy":e="%d वर्षां"}return e.replace(/%d/i,a)}var c={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},d={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},e=a.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return d[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return c[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?a<4?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"रात्री":a<10?"सकाळी":a<17?"दुपारी":a<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}});return e});
bp-core/js/vendor/moment-js/locale/ms-my.js ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Malay [ms-my]
3
+ //! note : DEPRECATED, the correct one is [ms]
4
+ //! author : Weldan Jamili : https://github.com/weldan
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var ms_my = moment.defineLocale('ms-my', {
15
+ months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
16
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
17
+ weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
18
+ weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
19
+ weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'HH.mm',
22
+ LTS : 'HH.mm.ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
26
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
27
+ },
28
+ meridiemParse: /pagi|tengahari|petang|malam/,
29
+ meridiemHour: function (hour, meridiem) {
30
+ if (hour === 12) {
31
+ hour = 0;
32
+ }
33
+ if (meridiem === 'pagi') {
34
+ return hour;
35
+ } else if (meridiem === 'tengahari') {
36
+ return hour >= 11 ? hour : hour + 12;
37
+ } else if (meridiem === 'petang' || meridiem === 'malam') {
38
+ return hour + 12;
39
+ }
40
+ },
41
+ meridiem : function (hours, minutes, isLower) {
42
+ if (hours < 11) {
43
+ return 'pagi';
44
+ } else if (hours < 15) {
45
+ return 'tengahari';
46
+ } else if (hours < 19) {
47
+ return 'petang';
48
+ } else {
49
+ return 'malam';
50
+ }
51
+ },
52
+ calendar : {
53
+ sameDay : '[Hari ini pukul] LT',
54
+ nextDay : '[Esok pukul] LT',
55
+ nextWeek : 'dddd [pukul] LT',
56
+ lastDay : '[Kelmarin pukul] LT',
57
+ lastWeek : 'dddd [lepas pukul] LT',
58
+ sameElse : 'L'
59
+ },
60
+ relativeTime : {
61
+ future : 'dalam %s',
62
+ past : '%s yang lepas',
63
+ s : 'beberapa saat',
64
+ m : 'seminit',
65
+ mm : '%d minit',
66
+ h : 'sejam',
67
+ hh : '%d jam',
68
+ d : 'sehari',
69
+ dd : '%d hari',
70
+ M : 'sebulan',
71
+ MM : '%d bulan',
72
+ y : 'setahun',
73
+ yy : '%d tahun'
74
+ },
75
+ week : {
76
+ dow : 1, // Monday is the first day of the week.
77
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
78
+ }
79
+ });
80
+
81
+ return ms_my;
82
+
83
+ }));
bp-core/js/vendor/moment-js/locale/ms-my.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"tengahari":a<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/ms.js ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Malay [ms]
3
+ //! author : Weldan Jamili : https://github.com/weldan
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var ms = moment.defineLocale('ms', {
14
+ months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
16
+ weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
17
+ weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
18
+ weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH.mm',
21
+ LTS : 'HH.mm.ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
25
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
26
+ },
27
+ meridiemParse: /pagi|tengahari|petang|malam/,
28
+ meridiemHour: function (hour, meridiem) {
29
+ if (hour === 12) {
30
+ hour = 0;
31
+ }
32
+ if (meridiem === 'pagi') {
33
+ return hour;
34
+ } else if (meridiem === 'tengahari') {
35
+ return hour >= 11 ? hour : hour + 12;
36
+ } else if (meridiem === 'petang' || meridiem === 'malam') {
37
+ return hour + 12;
38
+ }
39
+ },
40
+ meridiem : function (hours, minutes, isLower) {
41
+ if (hours < 11) {
42
+ return 'pagi';
43
+ } else if (hours < 15) {
44
+ return 'tengahari';
45
+ } else if (hours < 19) {
46
+ return 'petang';
47
+ } else {
48
+ return 'malam';
49
+ }
50
+ },
51
+ calendar : {
52
+ sameDay : '[Hari ini pukul] LT',
53
+ nextDay : '[Esok pukul] LT',
54
+ nextWeek : 'dddd [pukul] LT',
55
+ lastDay : '[Kelmarin pukul] LT',
56
+ lastWeek : 'dddd [lepas pukul] LT',
57
+ sameElse : 'L'
58
+ },
59
+ relativeTime : {
60
+ future : 'dalam %s',
61
+ past : '%s yang lepas',
62
+ s : 'beberapa saat',
63
+ m : 'seminit',
64
+ mm : '%d minit',
65
+ h : 'sejam',
66
+ hh : '%d jam',
67
+ d : 'sehari',
68
+ dd : '%d hari',
69
+ M : 'sebulan',
70
+ MM : '%d bulan',
71
+ y : 'setahun',
72
+ yy : '%d tahun'
73
+ },
74
+ week : {
75
+ dow : 1, // Monday is the first day of the week.
76
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
77
+ }
78
+ });
79
+
80
+ return ms;
81
+
82
+ }));
bp-core/js/vendor/moment-js/locale/ms.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"tengahari":a<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/my.js ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Burmese [my]
3
+ //! author : Squar team, mysquar.com
4
+ //! author : David Rossellat : https://github.com/gholadr
5
+ //! author : Tin Aung Lin : https://github.com/thanyawzinmin
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var symbolMap = {
16
+ '1': '၁',
17
+ '2': '၂',
18
+ '3': '၃',
19
+ '4': '၄',
20
+ '5': '၅',
21
+ '6': '၆',
22
+ '7': '၇',
23
+ '8': '၈',
24
+ '9': '၉',
25
+ '0': '၀'
26
+ }, numberMap = {
27
+ '၁': '1',
28
+ '၂': '2',
29
+ '၃': '3',
30
+ '၄': '4',
31
+ '၅': '5',
32
+ '၆': '6',
33
+ '၇': '7',
34
+ '၈': '8',
35
+ '၉': '9',
36
+ '၀': '0'
37
+ };
38
+
39
+ var my = moment.defineLocale('my', {
40
+ months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
41
+ monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
42
+ weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
43
+ weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
44
+ weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
45
+
46
+ longDateFormat: {
47
+ LT: 'HH:mm',
48
+ LTS: 'HH:mm:ss',
49
+ L: 'DD/MM/YYYY',
50
+ LL: 'D MMMM YYYY',
51
+ LLL: 'D MMMM YYYY HH:mm',
52
+ LLLL: 'dddd D MMMM YYYY HH:mm'
53
+ },
54
+ calendar: {
55
+ sameDay: '[ယနေ.] LT [မှာ]',
56
+ nextDay: '[မနက်ဖြန်] LT [မှာ]',
57
+ nextWeek: 'dddd LT [မှာ]',
58
+ lastDay: '[မနေ.က] LT [မှာ]',
59
+ lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
60
+ sameElse: 'L'
61
+ },
62
+ relativeTime: {
63
+ future: 'လာမည့် %s မှာ',
64
+ past: 'လွန်ခဲ့သော %s က',
65
+ s: 'စက္ကန်.အနည်းငယ်',
66
+ m: 'တစ်မိနစ်',
67
+ mm: '%d မိနစ်',
68
+ h: 'တစ်နာရီ',
69
+ hh: '%d နာရီ',
70
+ d: 'တစ်ရက်',
71
+ dd: '%d ရက်',
72
+ M: 'တစ်လ',
73
+ MM: '%d လ',
74
+ y: 'တစ်နှစ်',
75
+ yy: '%d နှစ်'
76
+ },
77
+ preparse: function (string) {
78
+ return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
79
+ return numberMap[match];
80
+ });
81
+ },
82
+ postformat: function (string) {
83
+ return string.replace(/\d/g, function (match) {
84
+ return symbolMap[match];
85
+ });
86
+ },
87
+ week: {
88
+ dow: 1, // Monday is the first day of the week.
89
+ doy: 4 // The week that contains Jan 1st is the first week of the year.
90
+ }
91
+ });
92
+
93
+ return my;
94
+
95
+ }));
bp-core/js/vendor/moment-js/locale/my.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},c={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},d=a.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},week:{dow:1,doy:4}});return d});
bp-core/js/vendor/moment-js/locale/nb.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Norwegian Bokmål [nb]
3
+ //! authors : Espen Hovlandsdal : https://github.com/rexxars
4
+ //! Sigurd Gartmann : https://github.com/sigurdga
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var nb = moment.defineLocale('nb', {
15
+ months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
16
+ monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
17
+ monthsParseExact : true,
18
+ weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
19
+ weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
20
+ weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
21
+ weekdaysParseExact : true,
22
+ longDateFormat : {
23
+ LT : 'HH:mm',
24
+ LTS : 'HH:mm:ss',
25
+ L : 'DD.MM.YYYY',
26
+ LL : 'D. MMMM YYYY',
27
+ LLL : 'D. MMMM YYYY [kl.] HH:mm',
28
+ LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
29
+ },
30
+ calendar : {
31
+ sameDay: '[i dag kl.] LT',
32
+ nextDay: '[i morgen kl.] LT',
33
+ nextWeek: 'dddd [kl.] LT',
34
+ lastDay: '[i går kl.] LT',
35
+ lastWeek: '[forrige] dddd [kl.] LT',
36
+ sameElse: 'L'
37
+ },
38
+ relativeTime : {
39
+ future : 'om %s',
40
+ past : '%s siden',
41
+ s : 'noen sekunder',
42
+ m : 'ett minutt',
43
+ mm : '%d minutter',
44
+ h : 'en time',
45
+ hh : '%d timer',
46
+ d : 'en dag',
47
+ dd : '%d dager',
48
+ M : 'en måned',
49
+ MM : '%d måneder',
50
+ y : 'ett år',
51
+ yy : '%d år'
52
+ },
53
+ ordinalParse: /\d{1,2}\./,
54
+ ordinal : '%d.',
55
+ week : {
56
+ dow : 1, // Monday is the first day of the week.
57
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
58
+ }
59
+ });
60
+
61
+ return nb;
62
+
63
+ }));
bp-core/js/vendor/moment-js/locale/nb.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ne.js ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Nepalese [ne]
3
+ //! author : suvash : https://github.com/suvash
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '१',
15
+ '2': '२',
16
+ '3': '३',
17
+ '4': '४',
18
+ '5': '५',
19
+ '6': '६',
20
+ '7': '७',
21
+ '8': '८',
22
+ '9': '९',
23
+ '0': '०'
24
+ },
25
+ numberMap = {
26
+ '१': '1',
27
+ '२': '2',
28
+ '३': '3',
29
+ '४': '4',
30
+ '५': '5',
31
+ '६': '6',
32
+ '७': '7',
33
+ '८': '8',
34
+ '९': '9',
35
+ '०': '0'
36
+ };
37
+
38
+ var ne = moment.defineLocale('ne', {
39
+ months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
40
+ monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
41
+ monthsParseExact : true,
42
+ weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
43
+ weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
44
+ weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
45
+ weekdaysParseExact : true,
46
+ longDateFormat : {
47
+ LT : 'Aको h:mm बजे',
48
+ LTS : 'Aको h:mm:ss बजे',
49
+ L : 'DD/MM/YYYY',
50
+ LL : 'D MMMM YYYY',
51
+ LLL : 'D MMMM YYYY, Aको h:mm बजे',
52
+ LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
53
+ },
54
+ preparse: function (string) {
55
+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
56
+ return numberMap[match];
57
+ });
58
+ },
59
+ postformat: function (string) {
60
+ return string.replace(/\d/g, function (match) {
61
+ return symbolMap[match];
62
+ });
63
+ },
64
+ meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
65
+ meridiemHour : function (hour, meridiem) {
66
+ if (hour === 12) {
67
+ hour = 0;
68
+ }
69
+ if (meridiem === 'राति') {
70
+ return hour < 4 ? hour : hour + 12;
71
+ } else if (meridiem === 'बिहान') {
72
+ return hour;
73
+ } else if (meridiem === 'दिउँसो') {
74
+ return hour >= 10 ? hour : hour + 12;
75
+ } else if (meridiem === 'साँझ') {
76
+ return hour + 12;
77
+ }
78
+ },
79
+ meridiem : function (hour, minute, isLower) {
80
+ if (hour < 3) {
81
+ return 'राति';
82
+ } else if (hour < 12) {
83
+ return 'बिहान';
84
+ } else if (hour < 16) {
85
+ return 'दिउँसो';
86
+ } else if (hour < 20) {
87
+ return 'साँझ';
88
+ } else {
89
+ return 'राति';
90
+ }
91
+ },
92
+ calendar : {
93
+ sameDay : '[आज] LT',
94
+ nextDay : '[भोलि] LT',
95
+ nextWeek : '[आउँदो] dddd[,] LT',
96
+ lastDay : '[हिजो] LT',
97
+ lastWeek : '[गएको] dddd[,] LT',
98
+ sameElse : 'L'
99
+ },
100
+ relativeTime : {
101
+ future : '%sमा',
102
+ past : '%s अगाडि',
103
+ s : 'केही क्षण',
104
+ m : 'एक मिनेट',
105
+ mm : '%d मिनेट',
106
+ h : 'एक घण्टा',
107
+ hh : '%d घण्टा',
108
+ d : 'एक दिन',
109
+ dd : '%d दिन',
110
+ M : 'एक महिना',
111
+ MM : '%d महिना',
112
+ y : 'एक बर्ष',
113
+ yy : '%d बर्ष'
114
+ },
115
+ week : {
116
+ dow : 0, // Sunday is the first day of the week.
117
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
118
+ }
119
+ });
120
+
121
+ return ne;
122
+
123
+ }));
bp-core/js/vendor/moment-js/locale/ne.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(a,b){return 12===a&&(a=0),"राति"===b?a<4?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return a<3?"राति":a<12?"बिहान":a<16?"दिउँसो":a<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/nl.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Dutch [nl]
3
+ //! author : Joris Röling : https://github.com/jorisroling
4
+ //! author : Jacob Middag : https://github.com/middagj
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
15
+ monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
16
+
17
+ var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
18
+ var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
19
+
20
+ var nl = moment.defineLocale('nl', {
21
+ months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
22
+ monthsShort : function (m, format) {
23
+ if (/-MMM-/.test(format)) {
24
+ return monthsShortWithoutDots[m.month()];
25
+ } else {
26
+ return monthsShortWithDots[m.month()];
27
+ }
28
+ },
29
+
30
+ monthsRegex: monthsRegex,
31
+ monthsShortRegex: monthsRegex,
32
+ monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
33
+ monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
34
+
35
+ monthsParse : monthsParse,
36
+ longMonthsParse : monthsParse,
37
+ shortMonthsParse : monthsParse,
38
+
39
+ weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
40
+ weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
41
+ weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
42
+ weekdaysParseExact : true,
43
+ longDateFormat : {
44
+ LT : 'HH:mm',
45
+ LTS : 'HH:mm:ss',
46
+ L : 'DD-MM-YYYY',
47
+ LL : 'D MMMM YYYY',
48
+ LLL : 'D MMMM YYYY HH:mm',
49
+ LLLL : 'dddd D MMMM YYYY HH:mm'
50
+ },
51
+ calendar : {
52
+ sameDay: '[vandaag om] LT',
53
+ nextDay: '[morgen om] LT',
54
+ nextWeek: 'dddd [om] LT',
55
+ lastDay: '[gisteren om] LT',
56
+ lastWeek: '[afgelopen] dddd [om] LT',
57
+ sameElse: 'L'
58
+ },
59
+ relativeTime : {
60
+ future : 'over %s',
61
+ past : '%s geleden',
62
+ s : 'een paar seconden',
63
+ m : 'één minuut',
64
+ mm : '%d minuten',
65
+ h : 'één uur',
66
+ hh : '%d uur',
67
+ d : 'één dag',
68
+ dd : '%d dagen',
69
+ M : 'één maand',
70
+ MM : '%d maanden',
71
+ y : 'één jaar',
72
+ yy : '%d jaar'
73
+ },
74
+ ordinalParse: /\d{1,2}(ste|de)/,
75
+ ordinal : function (number) {
76
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
77
+ },
78
+ week : {
79
+ dow : 1, // Monday is the first day of the week.
80
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
81
+ }
82
+ });
83
+
84
+ return nl;
85
+
86
+ }));
bp-core/js/vendor/moment-js/locale/nl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),d=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],e=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,f=a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},monthsRegex:e,monthsShortRegex:e,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/nn.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Nynorsk [nn]
3
+ //! author : https://github.com/mechuwind
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var nn = moment.defineLocale('nn', {
14
+ months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
15
+ monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
16
+ weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
17
+ weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
18
+ weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD.MM.YYYY',
23
+ LL : 'D. MMMM YYYY',
24
+ LLL : 'D. MMMM YYYY [kl.] H:mm',
25
+ LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay: '[I dag klokka] LT',
29
+ nextDay: '[I morgon klokka] LT',
30
+ nextWeek: 'dddd [klokka] LT',
31
+ lastDay: '[I går klokka] LT',
32
+ lastWeek: '[Føregåande] dddd [klokka] LT',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'om %s',
37
+ past : '%s sidan',
38
+ s : 'nokre sekund',
39
+ m : 'eit minutt',
40
+ mm : '%d minutt',
41
+ h : 'ein time',
42
+ hh : '%d timar',
43
+ d : 'ein dag',
44
+ dd : '%d dagar',
45
+ M : 'ein månad',
46
+ MM : '%d månader',
47
+ y : 'eit år',
48
+ yy : '%d år'
49
+ },
50
+ ordinalParse: /\d{1,2}\./,
51
+ ordinal : '%d.',
52
+ week : {
53
+ dow : 1, // Monday is the first day of the week.
54
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
55
+ }
56
+ });
57
+
58
+ return nn;
59
+
60
+ }));
bp-core/js/vendor/moment-js/locale/nn.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/pa-in.js ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Punjabi (India) [pa-in]
3
+ //! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '੧',
15
+ '2': '੨',
16
+ '3': '੩',
17
+ '4': '੪',
18
+ '5': '੫',
19
+ '6': '੬',
20
+ '7': '੭',
21
+ '8': '੮',
22
+ '9': '੯',
23
+ '0': '੦'
24
+ },
25
+ numberMap = {
26
+ '੧': '1',
27
+ '੨': '2',
28
+ '੩': '3',
29
+ '੪': '4',
30
+ '੫': '5',
31
+ '੬': '6',
32
+ '੭': '7',
33
+ '੮': '8',
34
+ '੯': '9',
35
+ '੦': '0'
36
+ };
37
+
38
+ var pa_in = moment.defineLocale('pa-in', {
39
+ // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
40
+ months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
41
+ monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
42
+ weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
43
+ weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
44
+ weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
45
+ longDateFormat : {
46
+ LT : 'A h:mm ਵਜੇ',
47
+ LTS : 'A h:mm:ss ਵਜੇ',
48
+ L : 'DD/MM/YYYY',
49
+ LL : 'D MMMM YYYY',
50
+ LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
51
+ LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
52
+ },
53
+ calendar : {
54
+ sameDay : '[ਅਜ] LT',
55
+ nextDay : '[ਕਲ] LT',
56
+ nextWeek : 'dddd, LT',
57
+ lastDay : '[ਕਲ] LT',
58
+ lastWeek : '[ਪਿਛਲੇ] dddd, LT',
59
+ sameElse : 'L'
60
+ },
61
+ relativeTime : {
62
+ future : '%s ਵਿੱਚ',
63
+ past : '%s ਪਿਛਲੇ',
64
+ s : 'ਕੁਝ ਸਕਿੰਟ',
65
+ m : 'ਇਕ ਮਿੰਟ',
66
+ mm : '%d ਮਿੰਟ',
67
+ h : 'ਇੱਕ ਘੰਟਾ',
68
+ hh : '%d ਘੰਟੇ',
69
+ d : 'ਇੱਕ ਦਿਨ',
70
+ dd : '%d ਦਿਨ',
71
+ M : 'ਇੱਕ ਮਹੀਨਾ',
72
+ MM : '%d ਮਹੀਨੇ',
73
+ y : 'ਇੱਕ ਸਾਲ',
74
+ yy : '%d ਸਾਲ'
75
+ },
76
+ preparse: function (string) {
77
+ return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
78
+ return numberMap[match];
79
+ });
80
+ },
81
+ postformat: function (string) {
82
+ return string.replace(/\d/g, function (match) {
83
+ return symbolMap[match];
84
+ });
85
+ },
86
+ // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
87
+ // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
88
+ meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
89
+ meridiemHour : function (hour, meridiem) {
90
+ if (hour === 12) {
91
+ hour = 0;
92
+ }
93
+ if (meridiem === 'ਰਾਤ') {
94
+ return hour < 4 ? hour : hour + 12;
95
+ } else if (meridiem === 'ਸਵੇਰ') {
96
+ return hour;
97
+ } else if (meridiem === 'ਦੁਪਹਿਰ') {
98
+ return hour >= 10 ? hour : hour + 12;
99
+ } else if (meridiem === 'ਸ਼ਾਮ') {
100
+ return hour + 12;
101
+ }
102
+ },
103
+ meridiem : function (hour, minute, isLower) {
104
+ if (hour < 4) {
105
+ return 'ਰਾਤ';
106
+ } else if (hour < 10) {
107
+ return 'ਸਵੇਰ';
108
+ } else if (hour < 17) {
109
+ return 'ਦੁਪਹਿਰ';
110
+ } else if (hour < 20) {
111
+ return 'ਸ਼ਾਮ';
112
+ } else {
113
+ return 'ਰਾਤ';
114
+ }
115
+ },
116
+ week : {
117
+ dow : 0, // Sunday is the first day of the week.
118
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
119
+ }
120
+ });
121
+
122
+ return pa_in;
123
+
124
+ }));
bp-core/js/vendor/moment-js/locale/pa-in.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},c={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"},d=a.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(a){return a.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ਰਾਤ"===b?a<4?a:a+12:"ਸਵੇਰ"===b?a:"ਦੁਪਹਿਰ"===b?a>=10?a:a+12:"ਸ਼ਾਮ"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"ਰਾਤ":a<10?"ਸਵੇਰ":a<17?"ਦੁਪਹਿਰ":a<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/pl.js ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Polish [pl]
3
+ //! author : Rafal Hirsz : https://github.com/evoL
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
14
+ monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
15
+ function plural(n) {
16
+ return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
17
+ }
18
+ function translate(number, withoutSuffix, key) {
19
+ var result = number + ' ';
20
+ switch (key) {
21
+ case 'm':
22
+ return withoutSuffix ? 'minuta' : 'minutę';
23
+ case 'mm':
24
+ return result + (plural(number) ? 'minuty' : 'minut');
25
+ case 'h':
26
+ return withoutSuffix ? 'godzina' : 'godzinę';
27
+ case 'hh':
28
+ return result + (plural(number) ? 'godziny' : 'godzin');
29
+ case 'MM':
30
+ return result + (plural(number) ? 'miesiące' : 'miesięcy');
31
+ case 'yy':
32
+ return result + (plural(number) ? 'lata' : 'lat');
33
+ }
34
+ }
35
+
36
+ var pl = moment.defineLocale('pl', {
37
+ months : function (momentToFormat, format) {
38
+ if (format === '') {
39
+ // Hack: if format empty we know this is used to generate
40
+ // RegExp by moment. Give then back both valid forms of months
41
+ // in RegExp ready format.
42
+ return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
43
+ } else if (/D MMMM/.test(format)) {
44
+ return monthsSubjective[momentToFormat.month()];
45
+ } else {
46
+ return monthsNominative[momentToFormat.month()];
47
+ }
48
+ },
49
+ monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
50
+ weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
51
+ weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),
52
+ weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
53
+ longDateFormat : {
54
+ LT : 'HH:mm',
55
+ LTS : 'HH:mm:ss',
56
+ L : 'DD.MM.YYYY',
57
+ LL : 'D MMMM YYYY',
58
+ LLL : 'D MMMM YYYY HH:mm',
59
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
60
+ },
61
+ calendar : {
62
+ sameDay: '[Dziś o] LT',
63
+ nextDay: '[Jutro o] LT',
64
+ nextWeek: '[W] dddd [o] LT',
65
+ lastDay: '[Wczoraj o] LT',
66
+ lastWeek: function () {
67
+ switch (this.day()) {
68
+ case 0:
69
+ return '[W zeszłą niedzielę o] LT';
70
+ case 3:
71
+ return '[W zeszłą środę o] LT';
72
+ case 6:
73
+ return '[W zeszłą sobotę o] LT';
74
+ default:
75
+ return '[W zeszły] dddd [o] LT';
76
+ }
77
+ },
78
+ sameElse: 'L'
79
+ },
80
+ relativeTime : {
81
+ future : 'za %s',
82
+ past : '%s temu',
83
+ s : 'kilka sekund',
84
+ m : translate,
85
+ mm : translate,
86
+ h : translate,
87
+ hh : translate,
88
+ d : '1 dzień',
89
+ dd : '%d dni',
90
+ M : 'miesiąc',
91
+ MM : translate,
92
+ y : 'rok',
93
+ yy : translate
94
+ },
95
+ ordinalParse: /\d{1,2}\./,
96
+ ordinal : '%d.',
97
+ week : {
98
+ dow : 1, // Monday is the first day of the week.
99
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
100
+ }
101
+ });
102
+
103
+ return pl;
104
+
105
+ }));
bp-core/js/vendor/moment-js/locale/pl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){return a%10<5&&a%10>1&&~~(a/10)%10!==1}function c(a,c,d){var e=a+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(b(a)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(b(a)?"godziny":"godzin");case"MM":return e+(b(a)?"miesiące":"miesięcy");case"yy":return e+(b(a)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),f=a.defineLocale("pl",{months:function(a,b){return""===b?"("+e[a.month()]+"|"+d[a.month()]+")":/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/pt-br.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Portuguese (Brazil) [pt-br]
3
+ //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var pt_br = moment.defineLocale('pt-br', {
14
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
15
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
16
+ weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
17
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
18
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
19
+ weekdaysParseExact : true,
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D [de] MMMM [de] YYYY',
25
+ LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
26
+ LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay: '[Hoje às] LT',
30
+ nextDay: '[Amanhã às] LT',
31
+ nextWeek: 'dddd [às] LT',
32
+ lastDay: '[Ontem às] LT',
33
+ lastWeek: function () {
34
+ return (this.day() === 0 || this.day() === 6) ?
35
+ '[Último] dddd [às] LT' : // Saturday + Sunday
36
+ '[Última] dddd [às] LT'; // Monday - Friday
37
+ },
38
+ sameElse: 'L'
39
+ },
40
+ relativeTime : {
41
+ future : 'em %s',
42
+ past : '%s atrás',
43
+ s : 'poucos segundos',
44
+ m : 'um minuto',
45
+ mm : '%d minutos',
46
+ h : 'uma hora',
47
+ hh : '%d horas',
48
+ d : 'um dia',
49
+ dd : '%d dias',
50
+ M : 'um mês',
51
+ MM : '%d meses',
52
+ y : 'um ano',
53
+ yy : '%d anos'
54
+ },
55
+ ordinalParse: /\d{1,2}º/,
56
+ ordinal : '%dº'
57
+ });
58
+
59
+ return pt_br;
60
+
61
+ }));
bp-core/js/vendor/moment-js/locale/pt-br.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return b});
bp-core/js/vendor/moment-js/locale/pt.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Portuguese [pt]
3
+ //! author : Jefferson : https://github.com/jalex79
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var pt = moment.defineLocale('pt', {
14
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
15
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
16
+ weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
17
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
18
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
19
+ weekdaysParseExact : true,
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D [de] MMMM [de] YYYY',
25
+ LLL : 'D [de] MMMM [de] YYYY HH:mm',
26
+ LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay: '[Hoje às] LT',
30
+ nextDay: '[Amanhã às] LT',
31
+ nextWeek: 'dddd [às] LT',
32
+ lastDay: '[Ontem às] LT',
33
+ lastWeek: function () {
34
+ return (this.day() === 0 || this.day() === 6) ?
35
+ '[Último] dddd [às] LT' : // Saturday + Sunday
36
+ '[Última] dddd [às] LT'; // Monday - Friday
37
+ },
38
+ sameElse: 'L'
39
+ },
40
+ relativeTime : {
41
+ future : 'em %s',
42
+ past : 'há %s',
43
+ s : 'segundos',
44
+ m : 'um minuto',
45
+ mm : '%d minutos',
46
+ h : 'uma hora',
47
+ hh : '%d horas',
48
+ d : 'um dia',
49
+ dd : '%d dias',
50
+ M : 'um mês',
51
+ MM : '%d meses',
52
+ y : 'um ano',
53
+ yy : '%d anos'
54
+ },
55
+ ordinalParse: /\d{1,2}º/,
56
+ ordinal : '%dº',
57
+ week : {
58
+ dow : 1, // Monday is the first day of the week.
59
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
60
+ }
61
+ });
62
+
63
+ return pt;
64
+
65
+ }));
bp-core/js/vendor/moment-js/locale/pt.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/ro.js ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Romanian [ro]
3
+ //! author : Vlad Gurdiga : https://github.com/gurdiga
4
+ //! author : Valentin Agachi : https://github.com/avaly
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
15
+ var format = {
16
+ 'mm': 'minute',
17
+ 'hh': 'ore',
18
+ 'dd': 'zile',
19
+ 'MM': 'luni',
20
+ 'yy': 'ani'
21
+ },
22
+ separator = ' ';
23
+ if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
24
+ separator = ' de ';
25
+ }
26
+ return number + separator + format[key];
27
+ }
28
+
29
+ var ro = moment.defineLocale('ro', {
30
+ months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
31
+ monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
32
+ monthsParseExact: true,
33
+ weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
34
+ weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
35
+ weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
36
+ longDateFormat : {
37
+ LT : 'H:mm',
38
+ LTS : 'H:mm:ss',
39
+ L : 'DD.MM.YYYY',
40
+ LL : 'D MMMM YYYY',
41
+ LLL : 'D MMMM YYYY H:mm',
42
+ LLLL : 'dddd, D MMMM YYYY H:mm'
43
+ },
44
+ calendar : {
45
+ sameDay: '[azi la] LT',
46
+ nextDay: '[mâine la] LT',
47
+ nextWeek: 'dddd [la] LT',
48
+ lastDay: '[ieri la] LT',
49
+ lastWeek: '[fosta] dddd [la] LT',
50
+ sameElse: 'L'
51
+ },
52
+ relativeTime : {
53
+ future : 'peste %s',
54
+ past : '%s în urmă',
55
+ s : 'câteva secunde',
56
+ m : 'un minut',
57
+ mm : relativeTimeWithPlural,
58
+ h : 'o oră',
59
+ hh : relativeTimeWithPlural,
60
+ d : 'o zi',
61
+ dd : relativeTimeWithPlural,
62
+ M : 'o lună',
63
+ MM : relativeTimeWithPlural,
64
+ y : 'un an',
65
+ yy : relativeTimeWithPlural
66
+ },
67
+ week : {
68
+ dow : 1, // Monday is the first day of the week.
69
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
70
+ }
71
+ });
72
+
73
+ return ro;
74
+
75
+ }));
bp-core/js/vendor/moment-js/locale/ro.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}var c=a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:b,h:"o oră",hh:b,d:"o zi",dd:b,M:"o lună",MM:b,y:"un an",yy:b},week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/ru.js ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Russian [ru]
3
+ //! author : Viktorminator : https://github.com/Viktorminator
4
+ //! Author : Menelion Elensúle : https://github.com/Oire
5
+ //! author : Коренберг Марк : https://github.com/socketpair
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ function plural(word, num) {
16
+ var forms = word.split('_');
17
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
18
+ }
19
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
20
+ var format = {
21
+ 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
22
+ 'hh': 'час_часа_часов',
23
+ 'dd': 'день_дня_дней',
24
+ 'MM': 'месяц_месяца_месяцев',
25
+ 'yy': 'год_года_лет'
26
+ };
27
+ if (key === 'm') {
28
+ return withoutSuffix ? 'минута' : 'минуту';
29
+ }
30
+ else {
31
+ return number + ' ' + plural(format[key], +number);
32
+ }
33
+ }
34
+ var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
35
+
36
+ // http://new.gramota.ru/spravka/rules/139-prop : § 103
37
+ // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
38
+ // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
39
+ var ru = moment.defineLocale('ru', {
40
+ months : {
41
+ format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
42
+ standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
43
+ },
44
+ monthsShort : {
45
+ // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
46
+ format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
47
+ standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
48
+ },
49
+ weekdays : {
50
+ standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
51
+ format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
52
+ isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
53
+ },
54
+ weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
55
+ weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
56
+ monthsParse : monthsParse,
57
+ longMonthsParse : monthsParse,
58
+ shortMonthsParse : monthsParse,
59
+
60
+ // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
61
+ monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
62
+
63
+ // копия предыдущего
64
+ monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
65
+
66
+ // полные названия с падежами
67
+ monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
68
+
69
+ // Выражение, которое соотвествует только сокращённым формам
70
+ monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
71
+ longDateFormat : {
72
+ LT : 'HH:mm',
73
+ LTS : 'HH:mm:ss',
74
+ L : 'DD.MM.YYYY',
75
+ LL : 'D MMMM YYYY г.',
76
+ LLL : 'D MMMM YYYY г., HH:mm',
77
+ LLLL : 'dddd, D MMMM YYYY г., HH:mm'
78
+ },
79
+ calendar : {
80
+ sameDay: '[Сегодня в] LT',
81
+ nextDay: '[Завтра в] LT',
82
+ lastDay: '[Вчера в] LT',
83
+ nextWeek: function (now) {
84
+ if (now.week() !== this.week()) {
85
+ switch (this.day()) {
86
+ case 0:
87
+ return '[В следующее] dddd [в] LT';
88
+ case 1:
89
+ case 2:
90
+ case 4:
91
+ return '[В следующий] dddd [в] LT';
92
+ case 3:
93
+ case 5:
94
+ case 6:
95
+ return '[В следующую] dddd [в] LT';
96
+ }
97
+ } else {
98
+ if (this.day() === 2) {
99
+ return '[Во] dddd [в] LT';
100
+ } else {
101
+ return '[В] dddd [в] LT';
102
+ }
103
+ }
104
+ },
105
+ lastWeek: function (now) {
106
+ if (now.week() !== this.week()) {
107
+ switch (this.day()) {
108
+ case 0:
109
+ return '[В прошлое] dddd [в] LT';
110
+ case 1:
111
+ case 2:
112
+ case 4:
113
+ return '[В прошлый] dddd [в] LT';
114
+ case 3:
115
+ case 5:
116
+ case 6:
117
+ return '[В прошлую] dddd [в] LT';
118
+ }
119
+ } else {
120
+ if (this.day() === 2) {
121
+ return '[Во] dddd [в] LT';
122
+ } else {
123
+ return '[В] dddd [в] LT';
124
+ }
125
+ }
126
+ },
127
+ sameElse: 'L'
128
+ },
129
+ relativeTime : {
130
+ future : 'через %s',
131
+ past : '%s назад',
132
+ s : 'несколько секунд',
133
+ m : relativeTimeWithPlural,
134
+ mm : relativeTimeWithPlural,
135
+ h : 'час',
136
+ hh : relativeTimeWithPlural,
137
+ d : 'день',
138
+ dd : relativeTimeWithPlural,
139
+ M : 'месяц',
140
+ MM : relativeTimeWithPlural,
141
+ y : 'год',
142
+ yy : relativeTimeWithPlural
143
+ },
144
+ meridiemParse: /ночи|утра|дня|вечера/i,
145
+ isPM : function (input) {
146
+ return /^(дня|вечера)$/.test(input);
147
+ },
148
+ meridiem : function (hour, minute, isLower) {
149
+ if (hour < 4) {
150
+ return 'ночи';
151
+ } else if (hour < 12) {
152
+ return 'утра';
153
+ } else if (hour < 17) {
154
+ return 'дня';
155
+ } else {
156
+ return 'вечера';
157
+ }
158
+ },
159
+ ordinalParse: /\d{1,2}-(й|го|я)/,
160
+ ordinal: function (number, period) {
161
+ switch (period) {
162
+ case 'M':
163
+ case 'd':
164
+ case 'DDD':
165
+ return number + '-й';
166
+ case 'D':
167
+ return number + '-го';
168
+ case 'w':
169
+ case 'W':
170
+ return number + '-я';
171
+ default:
172
+ return number;
173
+ }
174
+ },
175
+ week : {
176
+ dow : 1, // Monday is the first day of the week.
177
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
178
+ }
179
+ });
180
+
181
+ return ru;
182
+
183
+ }));
bp-core/js/vendor/moment-js/locale/ru.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":a+" "+b(e[d],+a)}var d=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],e=a.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночи":a<12?"утра":a<17?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});return e});
bp-core/js/vendor/moment-js/locale/se.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Northern Sami [se]
3
+ //! authors : Bård Rolstad Henriksen : https://github.com/karamell
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+
14
+ var se = moment.defineLocale('se', {
15
+ months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
16
+ monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
17
+ weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
18
+ weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
19
+ weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD.MM.YYYY',
24
+ LL : 'MMMM D. [b.] YYYY',
25
+ LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
26
+ LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay: '[otne ti] LT',
30
+ nextDay: '[ihttin ti] LT',
31
+ nextWeek: 'dddd [ti] LT',
32
+ lastDay: '[ikte ti] LT',
33
+ lastWeek: '[ovddit] dddd [ti] LT',
34
+ sameElse: 'L'
35
+ },
36
+ relativeTime : {
37
+ future : '%s geažes',
38
+ past : 'maŋit %s',
39
+ s : 'moadde sekunddat',
40
+ m : 'okta minuhta',
41
+ mm : '%d minuhtat',
42
+ h : 'okta diimmu',
43
+ hh : '%d diimmut',
44
+ d : 'okta beaivi',
45
+ dd : '%d beaivvit',
46
+ M : 'okta mánnu',
47
+ MM : '%d mánut',
48
+ y : 'okta jahki',
49
+ yy : '%d jagit'
50
+ },
51
+ ordinalParse: /\d{1,2}\./,
52
+ ordinal : '%d.',
53
+ week : {
54
+ dow : 1, // Monday is the first day of the week.
55
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
56
+ }
57
+ });
58
+
59
+ return se;
60
+
61
+ }));
bp-core/js/vendor/moment-js/locale/se.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/si.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Sinhalese [si]
3
+ //! author : Sampath Sitinamaluwa : https://github.com/sampathsris
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ /*jshint -W100*/
14
+ var si = moment.defineLocale('si', {
15
+ months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
16
+ monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
17
+ weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
18
+ weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
19
+ weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'a h:mm',
23
+ LTS : 'a h:mm:ss',
24
+ L : 'YYYY/MM/DD',
25
+ LL : 'YYYY MMMM D',
26
+ LLL : 'YYYY MMMM D, a h:mm',
27
+ LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
28
+ },
29
+ calendar : {
30
+ sameDay : '[අද] LT[ට]',
31
+ nextDay : '[හෙට] LT[ට]',
32
+ nextWeek : 'dddd LT[ට]',
33
+ lastDay : '[ඊයේ] LT[ට]',
34
+ lastWeek : '[පසුගිය] dddd LT[ට]',
35
+ sameElse : 'L'
36
+ },
37
+ relativeTime : {
38
+ future : '%sකින්',
39
+ past : '%sකට පෙර',
40
+ s : 'තත්පර කිහිපය',
41
+ m : 'මිනිත්තුව',
42
+ mm : 'මිනිත්තු %d',
43
+ h : 'පැය',
44
+ hh : 'පැය %d',
45
+ d : 'දිනය',
46
+ dd : 'දින %d',
47
+ M : 'මාසය',
48
+ MM : 'මාස %d',
49
+ y : 'වසර',
50
+ yy : 'වසර %d'
51
+ },
52
+ ordinalParse: /\d{1,2} වැනි/,
53
+ ordinal : function (number) {
54
+ return number + ' වැනි';
55
+ },
56
+ meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
57
+ isPM : function (input) {
58
+ return input === 'ප.ව.' || input === 'පස් වරු';
59
+ },
60
+ meridiem : function (hours, minutes, isLower) {
61
+ if (hours > 11) {
62
+ return isLower ? 'ප.ව.' : 'පස් වරු';
63
+ } else {
64
+ return isLower ? 'පෙ.ව.' : 'පෙර වරු';
65
+ }
66
+ }
67
+ });
68
+
69
+ return si;
70
+
71
+ }));
bp-core/js/vendor/moment-js/locale/si.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(a){return"ප.ව."===a||"පස් වරු"===a},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}});return b});
bp-core/js/vendor/moment-js/locale/sk.js ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Slovak [sk]
3
+ //! author : Martin Minka : https://github.com/k2s
4
+ //! based on work of petrbela : https://github.com/petrbela
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
15
+ monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
16
+ function plural(n) {
17
+ return (n > 1) && (n < 5);
18
+ }
19
+ function translate(number, withoutSuffix, key, isFuture) {
20
+ var result = number + ' ';
21
+ switch (key) {
22
+ case 's': // a few seconds / in a few seconds / a few seconds ago
23
+ return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
24
+ case 'm': // a minute / in a minute / a minute ago
25
+ return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
26
+ case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
27
+ if (withoutSuffix || isFuture) {
28
+ return result + (plural(number) ? 'minúty' : 'minút');
29
+ } else {
30
+ return result + 'minútami';
31
+ }
32
+ break;
33
+ case 'h': // an hour / in an hour / an hour ago
34
+ return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
35
+ case 'hh': // 9 hours / in 9 hours / 9 hours ago
36
+ if (withoutSuffix || isFuture) {
37
+ return result + (plural(number) ? 'hodiny' : 'hodín');
38
+ } else {
39
+ return result + 'hodinami';
40
+ }
41
+ break;
42
+ case 'd': // a day / in a day / a day ago
43
+ return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
44
+ case 'dd': // 9 days / in 9 days / 9 days ago
45
+ if (withoutSuffix || isFuture) {
46
+ return result + (plural(number) ? 'dni' : 'dní');
47
+ } else {
48
+ return result + 'dňami';
49
+ }
50
+ break;
51
+ case 'M': // a month / in a month / a month ago
52
+ return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
53
+ case 'MM': // 9 months / in 9 months / 9 months ago
54
+ if (withoutSuffix || isFuture) {
55
+ return result + (plural(number) ? 'mesiace' : 'mesiacov');
56
+ } else {
57
+ return result + 'mesiacmi';
58
+ }
59
+ break;
60
+ case 'y': // a year / in a year / a year ago
61
+ return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
62
+ case 'yy': // 9 years / in 9 years / 9 years ago
63
+ if (withoutSuffix || isFuture) {
64
+ return result + (plural(number) ? 'roky' : 'rokov');
65
+ } else {
66
+ return result + 'rokmi';
67
+ }
68
+ break;
69
+ }
70
+ }
71
+
72
+ var sk = moment.defineLocale('sk', {
73
+ months : months,
74
+ monthsShort : monthsShort,
75
+ weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
76
+ weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
77
+ weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
78
+ longDateFormat : {
79
+ LT: 'H:mm',
80
+ LTS : 'H:mm:ss',
81
+ L : 'DD.MM.YYYY',
82
+ LL : 'D. MMMM YYYY',
83
+ LLL : 'D. MMMM YYYY H:mm',
84
+ LLLL : 'dddd D. MMMM YYYY H:mm'
85
+ },
86
+ calendar : {
87
+ sameDay: '[dnes o] LT',
88
+ nextDay: '[zajtra o] LT',
89
+ nextWeek: function () {
90
+ switch (this.day()) {
91
+ case 0:
92
+ return '[v nedeľu o] LT';
93
+ case 1:
94
+ case 2:
95
+ return '[v] dddd [o] LT';
96
+ case 3:
97
+ return '[v stredu o] LT';
98
+ case 4:
99
+ return '[vo štvrtok o] LT';
100
+ case 5:
101
+ return '[v piatok o] LT';
102
+ case 6:
103
+ return '[v sobotu o] LT';
104
+ }
105
+ },
106
+ lastDay: '[včera o] LT',
107
+ lastWeek: function () {
108
+ switch (this.day()) {
109
+ case 0:
110
+ return '[minulú nedeľu o] LT';
111
+ case 1:
112
+ case 2:
113
+ return '[minulý] dddd [o] LT';
114
+ case 3:
115
+ return '[minulú stredu o] LT';
116
+ case 4:
117
+ case 5:
118
+ return '[minulý] dddd [o] LT';
119
+ case 6:
120
+ return '[minulú sobotu o] LT';
121
+ }
122
+ },
123
+ sameElse: 'L'
124
+ },
125
+ relativeTime : {
126
+ future : 'za %s',
127
+ past : 'pred %s',
128
+ s : translate,
129
+ m : translate,
130
+ mm : translate,
131
+ h : translate,
132
+ hh : translate,
133
+ d : translate,
134
+ dd : translate,
135
+ M : translate,
136
+ MM : translate,
137
+ y : translate,
138
+ yy : translate
139
+ },
140
+ ordinalParse: /\d{1,2}\./,
141
+ ordinal : '%d.',
142
+ week : {
143
+ dow : 1, // Monday is the first day of the week.
144
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
145
+ }
146
+ });
147
+
148
+ return sk;
149
+
150
+ }));
bp-core/js/vendor/moment-js/locale/sk.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){return a>1&&a<5}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(b(a)?"minúty":"minút"):f+"minútami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodín"):f+"hodinami";case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(b(a)?"dni":"dní"):f+"dňami";case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(b(a)?"mesiace":"mesiacov"):f+"mesiacmi";case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(b(a)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),f=a.defineLocale("sk",{months:d,monthsShort:e,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f});
bp-core/js/vendor/moment-js/locale/sl.js ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Slovenian [sl]
3
+ //! author : Robert Sedovšek : https://github.com/sedovsek
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
14
+ var result = number + ' ';
15
+ switch (key) {
16
+ case 's':
17
+ return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
18
+ case 'm':
19
+ return withoutSuffix ? 'ena minuta' : 'eno minuto';
20
+ case 'mm':
21
+ if (number === 1) {
22
+ result += withoutSuffix ? 'minuta' : 'minuto';
23
+ } else if (number === 2) {
24
+ result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
25
+ } else if (number < 5) {
26
+ result += withoutSuffix || isFuture ? 'minute' : 'minutami';
27
+ } else {
28
+ result += withoutSuffix || isFuture ? 'minut' : 'minutami';
29
+ }
30
+ return result;
31
+ case 'h':
32
+ return withoutSuffix ? 'ena ura' : 'eno uro';
33
+ case 'hh':
34
+ if (number === 1) {
35
+ result += withoutSuffix ? 'ura' : 'uro';
36
+ } else if (number === 2) {
37
+ result += withoutSuffix || isFuture ? 'uri' : 'urama';
38
+ } else if (number < 5) {
39
+ result += withoutSuffix || isFuture ? 'ure' : 'urami';
40
+ } else {
41
+ result += withoutSuffix || isFuture ? 'ur' : 'urami';
42
+ }
43
+ return result;
44
+ case 'd':
45
+ return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
46
+ case 'dd':
47
+ if (number === 1) {
48
+ result += withoutSuffix || isFuture ? 'dan' : 'dnem';
49
+ } else if (number === 2) {
50
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
51
+ } else {
52
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
53
+ }
54
+ return result;
55
+ case 'M':
56
+ return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
57
+ case 'MM':
58
+ if (number === 1) {
59
+ result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
60
+ } else if (number === 2) {
61
+ result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
62
+ } else if (number < 5) {
63
+ result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
64
+ } else {
65
+ result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
66
+ }
67
+ return result;
68
+ case 'y':
69
+ return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
70
+ case 'yy':
71
+ if (number === 1) {
72
+ result += withoutSuffix || isFuture ? 'leto' : 'letom';
73
+ } else if (number === 2) {
74
+ result += withoutSuffix || isFuture ? 'leti' : 'letoma';
75
+ } else if (number < 5) {
76
+ result += withoutSuffix || isFuture ? 'leta' : 'leti';
77
+ } else {
78
+ result += withoutSuffix || isFuture ? 'let' : 'leti';
79
+ }
80
+ return result;
81
+ }
82
+ }
83
+
84
+ var sl = moment.defineLocale('sl', {
85
+ months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
86
+ monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
87
+ monthsParseExact: true,
88
+ weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
89
+ weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
90
+ weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
91
+ weekdaysParseExact : true,
92
+ longDateFormat : {
93
+ LT : 'H:mm',
94
+ LTS : 'H:mm:ss',
95
+ L : 'DD.MM.YYYY',
96
+ LL : 'D. MMMM YYYY',
97
+ LLL : 'D. MMMM YYYY H:mm',
98
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
99
+ },
100
+ calendar : {
101
+ sameDay : '[danes ob] LT',
102
+ nextDay : '[jutri ob] LT',
103
+
104
+ nextWeek : function () {
105
+ switch (this.day()) {
106
+ case 0:
107
+ return '[v] [nedeljo] [ob] LT';
108
+ case 3:
109
+ return '[v] [sredo] [ob] LT';
110
+ case 6:
111
+ return '[v] [soboto] [ob] LT';
112
+ case 1:
113
+ case 2:
114
+ case 4:
115
+ case 5:
116
+ return '[v] dddd [ob] LT';
117
+ }
118
+ },
119
+ lastDay : '[včeraj ob] LT',
120
+ lastWeek : function () {
121
+ switch (this.day()) {
122
+ case 0:
123
+ return '[prejšnjo] [nedeljo] [ob] LT';
124
+ case 3:
125
+ return '[prejšnjo] [sredo] [ob] LT';
126
+ case 6:
127
+ return '[prejšnjo] [soboto] [ob] LT';
128
+ case 1:
129
+ case 2:
130
+ case 4:
131
+ case 5:
132
+ return '[prejšnji] dddd [ob] LT';
133
+ }
134
+ },
135
+ sameElse : 'L'
136
+ },
137
+ relativeTime : {
138
+ future : 'čez %s',
139
+ past : 'pred %s',
140
+ s : processRelativeTime,
141
+ m : processRelativeTime,
142
+ mm : processRelativeTime,
143
+ h : processRelativeTime,
144
+ hh : processRelativeTime,
145
+ d : processRelativeTime,
146
+ dd : processRelativeTime,
147
+ M : processRelativeTime,
148
+ MM : processRelativeTime,
149
+ y : processRelativeTime,
150
+ yy : processRelativeTime
151
+ },
152
+ ordinalParse: /\d{1,2}\./,
153
+ ordinal : '%d.',
154
+ week : {
155
+ dow : 1, // Monday is the first day of the week.
156
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
157
+ }
158
+ });
159
+
160
+ return sl;
161
+
162
+ }));
bp-core/js/vendor/moment-js/locale/sl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":a<5?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":a<5?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":a<5?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":a<5?b||d?"leta":"leti":b||d?"let":"leti"}}var c=a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/sq.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Albanian [sq]
3
+ //! author : Flakërim Ismani : https://github.com/flakerimi
4
+ //! author : Menelion Elensúle : https://github.com/Oire
5
+ //! author : Oerd Cukalla : https://github.com/oerd
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var sq = moment.defineLocale('sq', {
16
+ months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
17
+ monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
18
+ weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
19
+ weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
20
+ weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
21
+ weekdaysParseExact : true,
22
+ meridiemParse: /PD|MD/,
23
+ isPM: function (input) {
24
+ return input.charAt(0) === 'M';
25
+ },
26
+ meridiem : function (hours, minutes, isLower) {
27
+ return hours < 12 ? 'PD' : 'MD';
28
+ },
29
+ longDateFormat : {
30
+ LT : 'HH:mm',
31
+ LTS : 'HH:mm:ss',
32
+ L : 'DD/MM/YYYY',
33
+ LL : 'D MMMM YYYY',
34
+ LLL : 'D MMMM YYYY HH:mm',
35
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
36
+ },
37
+ calendar : {
38
+ sameDay : '[Sot në] LT',
39
+ nextDay : '[Nesër në] LT',
40
+ nextWeek : 'dddd [në] LT',
41
+ lastDay : '[Dje në] LT',
42
+ lastWeek : 'dddd [e kaluar në] LT',
43
+ sameElse : 'L'
44
+ },
45
+ relativeTime : {
46
+ future : 'në %s',
47
+ past : '%s më parë',
48
+ s : 'disa sekonda',
49
+ m : 'një minutë',
50
+ mm : '%d minuta',
51
+ h : 'një orë',
52
+ hh : '%d orë',
53
+ d : 'një ditë',
54
+ dd : '%d ditë',
55
+ M : 'një muaj',
56
+ MM : '%d muaj',
57
+ y : 'një vit',
58
+ yy : '%d vite'
59
+ },
60
+ ordinalParse: /\d{1,2}\./,
61
+ ordinal : '%d.',
62
+ week : {
63
+ dow : 1, // Monday is the first day of the week.
64
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
65
+ }
66
+ });
67
+
68
+ return sq;
69
+
70
+ }));
bp-core/js/vendor/moment-js/locale/sq.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return a<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/sr-cyrl.js ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Serbian Cyrillic [sr-cyrl]
3
+ //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var translator = {
14
+ words: { //Different grammatical cases
15
+ m: ['један минут', 'једне минуте'],
16
+ mm: ['минут', 'минуте', 'минута'],
17
+ h: ['један сат', 'једног сата'],
18
+ hh: ['сат', 'сата', 'сати'],
19
+ dd: ['дан', 'дана', 'дана'],
20
+ MM: ['месец', 'месеца', 'месеци'],
21
+ yy: ['година', 'године', 'година']
22
+ },
23
+ correctGrammaticalCase: function (number, wordKey) {
24
+ return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
25
+ },
26
+ translate: function (number, withoutSuffix, key) {
27
+ var wordKey = translator.words[key];
28
+ if (key.length === 1) {
29
+ return withoutSuffix ? wordKey[0] : wordKey[1];
30
+ } else {
31
+ return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
32
+ }
33
+ }
34
+ };
35
+
36
+ var sr_cyrl = moment.defineLocale('sr-cyrl', {
37
+ months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
38
+ monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
39
+ monthsParseExact: true,
40
+ weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
41
+ weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
42
+ weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
43
+ weekdaysParseExact : true,
44
+ longDateFormat: {
45
+ LT: 'H:mm',
46
+ LTS : 'H:mm:ss',
47
+ L: 'DD.MM.YYYY',
48
+ LL: 'D. MMMM YYYY',
49
+ LLL: 'D. MMMM YYYY H:mm',
50
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
51
+ },
52
+ calendar: {
53
+ sameDay: '[данас у] LT',
54
+ nextDay: '[сутра у] LT',
55
+ nextWeek: function () {
56
+ switch (this.day()) {
57
+ case 0:
58
+ return '[у] [недељу] [у] LT';
59
+ case 3:
60
+ return '[у] [среду] [у] LT';
61
+ case 6:
62
+ return '[у] [суботу] [у] LT';
63
+ case 1:
64
+ case 2:
65
+ case 4:
66
+ case 5:
67
+ return '[у] dddd [у] LT';
68
+ }
69
+ },
70
+ lastDay : '[јуче у] LT',
71
+ lastWeek : function () {
72
+ var lastWeekDays = [
73
+ '[прошле] [недеље] [у] LT',
74
+ '[прошлог] [понедељка] [у] LT',
75
+ '[прошлог] [уторка] [у] LT',
76
+ '[прошле] [среде] [у] LT',
77
+ '[прошлог] [четвртка] [у] LT',
78
+ '[прошлог] [петка] [у] LT',
79
+ '[прошле] [суботе] [у] LT'
80
+ ];
81
+ return lastWeekDays[this.day()];
82
+ },
83
+ sameElse : 'L'
84
+ },
85
+ relativeTime : {
86
+ future : 'за %s',
87
+ past : 'пре %s',
88
+ s : 'неколико секунди',
89
+ m : translator.translate,
90
+ mm : translator.translate,
91
+ h : translator.translate,
92
+ hh : translator.translate,
93
+ d : 'дан',
94
+ dd : translator.translate,
95
+ M : 'месец',
96
+ MM : translator.translate,
97
+ y : 'годину',
98
+ yy : translator.translate
99
+ },
100
+ ordinalParse: /\d{1,2}\./,
101
+ ordinal : '%d.',
102
+ week : {
103
+ dow : 1, // Monday is the first day of the week.
104
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
105
+ }
106
+ });
107
+
108
+ return sr_cyrl;
109
+
110
+ }));
bp-core/js/vendor/moment-js/locale/sr-cyrl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,c,d){var e=b.words[d];return 1===d.length?c?e[0]:e[1]:a+" "+b.correctGrammaticalCase(a,e)}},c=a.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:b.translate,mm:b.translate,h:b.translate,hh:b.translate,d:"дан",dd:b.translate,M:"месец",MM:b.translate,y:"годину",yy:b.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/sr.js ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Serbian [sr]
3
+ //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var translator = {
14
+ words: { //Different grammatical cases
15
+ m: ['jedan minut', 'jedne minute'],
16
+ mm: ['minut', 'minute', 'minuta'],
17
+ h: ['jedan sat', 'jednog sata'],
18
+ hh: ['sat', 'sata', 'sati'],
19
+ dd: ['dan', 'dana', 'dana'],
20
+ MM: ['mesec', 'meseca', 'meseci'],
21
+ yy: ['godina', 'godine', 'godina']
22
+ },
23
+ correctGrammaticalCase: function (number, wordKey) {
24
+ return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
25
+ },
26
+ translate: function (number, withoutSuffix, key) {
27
+ var wordKey = translator.words[key];
28
+ if (key.length === 1) {
29
+ return withoutSuffix ? wordKey[0] : wordKey[1];
30
+ } else {
31
+ return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
32
+ }
33
+ }
34
+ };
35
+
36
+ var sr = moment.defineLocale('sr', {
37
+ months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
38
+ monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
39
+ monthsParseExact: true,
40
+ weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
41
+ weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
42
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
43
+ weekdaysParseExact : true,
44
+ longDateFormat: {
45
+ LT: 'H:mm',
46
+ LTS : 'H:mm:ss',
47
+ L: 'DD.MM.YYYY',
48
+ LL: 'D. MMMM YYYY',
49
+ LLL: 'D. MMMM YYYY H:mm',
50
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
51
+ },
52
+ calendar: {
53
+ sameDay: '[danas u] LT',
54
+ nextDay: '[sutra u] LT',
55
+ nextWeek: function () {
56
+ switch (this.day()) {
57
+ case 0:
58
+ return '[u] [nedelju] [u] LT';
59
+ case 3:
60
+ return '[u] [sredu] [u] LT';
61
+ case 6:
62
+ return '[u] [subotu] [u] LT';
63
+ case 1:
64
+ case 2:
65
+ case 4:
66
+ case 5:
67
+ return '[u] dddd [u] LT';
68
+ }
69
+ },
70
+ lastDay : '[juče u] LT',
71
+ lastWeek : function () {
72
+ var lastWeekDays = [
73
+ '[prošle] [nedelje] [u] LT',
74
+ '[prošlog] [ponedeljka] [u] LT',
75
+ '[prošlog] [utorka] [u] LT',
76
+ '[prošle] [srede] [u] LT',
77
+ '[prošlog] [četvrtka] [u] LT',
78
+ '[prošlog] [petka] [u] LT',
79
+ '[prošle] [subote] [u] LT'
80
+ ];
81
+ return lastWeekDays[this.day()];
82
+ },
83
+ sameElse : 'L'
84
+ },
85
+ relativeTime : {
86
+ future : 'za %s',
87
+ past : 'pre %s',
88
+ s : 'nekoliko sekundi',
89
+ m : translator.translate,
90
+ mm : translator.translate,
91
+ h : translator.translate,
92
+ hh : translator.translate,
93
+ d : 'dan',
94
+ dd : translator.translate,
95
+ M : 'mesec',
96
+ MM : translator.translate,
97
+ y : 'godinu',
98
+ yy : translator.translate
99
+ },
100
+ ordinalParse: /\d{1,2}\./,
101
+ ordinal : '%d.',
102
+ week : {
103
+ dow : 1, // Monday is the first day of the week.
104
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
105
+ }
106
+ });
107
+
108
+ return sr;
109
+
110
+ }));
bp-core/js/vendor/moment-js/locale/sr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,c,d){var e=b.words[d];return 1===d.length?c?e[0]:e[1]:a+" "+b.correctGrammaticalCase(a,e)}},c=a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:b.translate,mm:b.translate,h:b.translate,hh:b.translate,d:"dan",dd:b.translate,M:"mesec",MM:b.translate,y:"godinu",yy:b.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/ss.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : siSwati [ss]
3
+ //! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+
14
+ var ss = moment.defineLocale('ss', {
15
+ months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
16
+ monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
17
+ weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
18
+ weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
19
+ weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'h:mm A',
23
+ LTS : 'h:mm:ss A',
24
+ L : 'DD/MM/YYYY',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY h:mm A',
27
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
28
+ },
29
+ calendar : {
30
+ sameDay : '[Namuhla nga] LT',
31
+ nextDay : '[Kusasa nga] LT',
32
+ nextWeek : 'dddd [nga] LT',
33
+ lastDay : '[Itolo nga] LT',
34
+ lastWeek : 'dddd [leliphelile] [nga] LT',
35
+ sameElse : 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'nga %s',
39
+ past : 'wenteka nga %s',
40
+ s : 'emizuzwana lomcane',
41
+ m : 'umzuzu',
42
+ mm : '%d emizuzu',
43
+ h : 'lihora',
44
+ hh : '%d emahora',
45
+ d : 'lilanga',
46
+ dd : '%d emalanga',
47
+ M : 'inyanga',
48
+ MM : '%d tinyanga',
49
+ y : 'umnyaka',
50
+ yy : '%d iminyaka'
51
+ },
52
+ meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
53
+ meridiem : function (hours, minutes, isLower) {
54
+ if (hours < 11) {
55
+ return 'ekuseni';
56
+ } else if (hours < 15) {
57
+ return 'emini';
58
+ } else if (hours < 19) {
59
+ return 'entsambama';
60
+ } else {
61
+ return 'ebusuku';
62
+ }
63
+ },
64
+ meridiemHour : function (hour, meridiem) {
65
+ if (hour === 12) {
66
+ hour = 0;
67
+ }
68
+ if (meridiem === 'ekuseni') {
69
+ return hour;
70
+ } else if (meridiem === 'emini') {
71
+ return hour >= 11 ? hour : hour + 12;
72
+ } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
73
+ if (hour === 0) {
74
+ return 0;
75
+ }
76
+ return hour + 12;
77
+ }
78
+ },
79
+ ordinalParse: /\d{1,2}/,
80
+ ordinal : '%d',
81
+ week : {
82
+ dow : 1, // Monday is the first day of the week.
83
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
84
+ }
85
+ });
86
+
87
+ return ss;
88
+
89
+ }));
bp-core/js/vendor/moment-js/locale/ss.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(a,b,c){return a<11?"ekuseni":a<15?"emini":a<19?"entsambama":"ebusuku"},meridiemHour:function(a,b){return 12===a&&(a=0),"ekuseni"===b?a:"emini"===b?a>=11?a:a+12:"entsambama"===b||"ebusuku"===b?0===a?0:a+12:void 0},ordinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/sv.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Swedish [sv]
3
+ //! author : Jens Alm : https://github.com/ulmus
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var sv = moment.defineLocale('sv', {
14
+ months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
15
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
16
+ weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
17
+ weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
18
+ weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'YYYY-MM-DD',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY [kl.] HH:mm',
25
+ LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
26
+ lll : 'D MMM YYYY HH:mm',
27
+ llll : 'ddd D MMM YYYY HH:mm'
28
+ },
29
+ calendar : {
30
+ sameDay: '[Idag] LT',
31
+ nextDay: '[Imorgon] LT',
32
+ lastDay: '[Igår] LT',
33
+ nextWeek: '[På] dddd LT',
34
+ lastWeek: '[I] dddd[s] LT',
35
+ sameElse: 'L'
36
+ },
37
+ relativeTime : {
38
+ future : 'om %s',
39
+ past : 'för %s sedan',
40
+ s : 'några sekunder',
41
+ m : 'en minut',
42
+ mm : '%d minuter',
43
+ h : 'en timme',
44
+ hh : '%d timmar',
45
+ d : 'en dag',
46
+ dd : '%d dagar',
47
+ M : 'en månad',
48
+ MM : '%d månader',
49
+ y : 'ett år',
50
+ yy : '%d år'
51
+ },
52
+ ordinalParse: /\d{1,2}(e|a)/,
53
+ ordinal : function (number) {
54
+ var b = number % 10,
55
+ output = (~~(number % 100 / 10) === 1) ? 'e' :
56
+ (b === 1) ? 'a' :
57
+ (b === 2) ? 'a' :
58
+ (b === 3) ? 'e' : 'e';
59
+ return number + output;
60
+ },
61
+ week : {
62
+ dow : 1, // Monday is the first day of the week.
63
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
64
+ }
65
+ });
66
+
67
+ return sv;
68
+
69
+ }));
bp-core/js/vendor/moment-js/locale/sv.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/sw.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Swahili [sw]
3
+ //! author : Fahad Kassim : https://github.com/fadsel
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var sw = moment.defineLocale('sw', {
14
+ months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
15
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
16
+ weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
17
+ weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
18
+ weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
19
+ weekdaysParseExact : true,
20
+ longDateFormat : {
21
+ LT : 'HH:mm',
22
+ LTS : 'HH:mm:ss',
23
+ L : 'DD.MM.YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY HH:mm',
26
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay : '[leo saa] LT',
30
+ nextDay : '[kesho saa] LT',
31
+ nextWeek : '[wiki ijayo] dddd [saat] LT',
32
+ lastDay : '[jana] LT',
33
+ lastWeek : '[wiki iliyopita] dddd [saat] LT',
34
+ sameElse : 'L'
35
+ },
36
+ relativeTime : {
37
+ future : '%s baadaye',
38
+ past : 'tokea %s',
39
+ s : 'hivi punde',
40
+ m : 'dakika moja',
41
+ mm : 'dakika %d',
42
+ h : 'saa limoja',
43
+ hh : 'masaa %d',
44
+ d : 'siku moja',
45
+ dd : 'masiku %d',
46
+ M : 'mwezi mmoja',
47
+ MM : 'miezi %d',
48
+ y : 'mwaka mmoja',
49
+ yy : 'miaka %d'
50
+ },
51
+ week : {
52
+ dow : 1, // Monday is the first day of the week.
53
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
54
+ }
55
+ });
56
+
57
+ return sw;
58
+
59
+ }));
bp-core/js/vendor/moment-js/locale/sw.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/ta.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Tamil [ta]
3
+ //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var symbolMap = {
14
+ '1': '௧',
15
+ '2': '௨',
16
+ '3': '௩',
17
+ '4': '௪',
18
+ '5': '௫',
19
+ '6': '௬',
20
+ '7': '௭',
21
+ '8': '௮',
22
+ '9': '௯',
23
+ '0': '௦'
24
+ }, numberMap = {
25
+ '௧': '1',
26
+ '௨': '2',
27
+ '௩': '3',
28
+ '௪': '4',
29
+ '௫': '5',
30
+ '௬': '6',
31
+ '௭': '7',
32
+ '௮': '8',
33
+ '௯': '9',
34
+ '௦': '0'
35
+ };
36
+
37
+ var ta = moment.defineLocale('ta', {
38
+ months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
39
+ monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
40
+ weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
41
+ weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
42
+ weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
43
+ longDateFormat : {
44
+ LT : 'HH:mm',
45
+ LTS : 'HH:mm:ss',
46
+ L : 'DD/MM/YYYY',
47
+ LL : 'D MMMM YYYY',
48
+ LLL : 'D MMMM YYYY, HH:mm',
49
+ LLLL : 'dddd, D MMMM YYYY, HH:mm'
50
+ },
51
+ calendar : {
52
+ sameDay : '[இன்று] LT',
53
+ nextDay : '[நாளை] LT',
54
+ nextWeek : 'dddd, LT',
55
+ lastDay : '[நேற்று] LT',
56
+ lastWeek : '[கடந்த வாரம்] dddd, LT',
57
+ sameElse : 'L'
58
+ },
59
+ relativeTime : {
60
+ future : '%s இல்',
61
+ past : '%s முன்',
62
+ s : 'ஒரு சில விநாடிகள்',
63
+ m : 'ஒரு நிமிடம்',
64
+ mm : '%d நிமிடங்கள்',
65
+ h : 'ஒரு மணி நேரம்',
66
+ hh : '%d மணி நேரம்',
67
+ d : 'ஒரு நாள்',
68
+ dd : '%d நாட்கள்',
69
+ M : 'ஒரு மாதம்',
70
+ MM : '%d மாதங்கள்',
71
+ y : 'ஒரு வருடம்',
72
+ yy : '%d ஆண்டுகள்'
73
+ },
74
+ ordinalParse: /\d{1,2}வது/,
75
+ ordinal : function (number) {
76
+ return number + 'வது';
77
+ },
78
+ preparse: function (string) {
79
+ return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
80
+ return numberMap[match];
81
+ });
82
+ },
83
+ postformat: function (string) {
84
+ return string.replace(/\d/g, function (match) {
85
+ return symbolMap[match];
86
+ });
87
+ },
88
+ // refer http://ta.wikipedia.org/s/1er1
89
+ meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
90
+ meridiem : function (hour, minute, isLower) {
91
+ if (hour < 2) {
92
+ return ' யாமம்';
93
+ } else if (hour < 6) {
94
+ return ' வைகறை'; // வைகறை
95
+ } else if (hour < 10) {
96
+ return ' காலை'; // காலை
97
+ } else if (hour < 14) {
98
+ return ' நண்பகல்'; // நண்பகல்
99
+ } else if (hour < 18) {
100
+ return ' எற்பாடு'; // எற்பாடு
101
+ } else if (hour < 22) {
102
+ return ' மாலை'; // மாலை
103
+ } else {
104
+ return ' யாமம்';
105
+ }
106
+ },
107
+ meridiemHour : function (hour, meridiem) {
108
+ if (hour === 12) {
109
+ hour = 0;
110
+ }
111
+ if (meridiem === 'யாமம்') {
112
+ return hour < 2 ? hour : hour + 12;
113
+ } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
114
+ return hour;
115
+ } else if (meridiem === 'நண்பகல்') {
116
+ return hour >= 10 ? hour : hour + 12;
117
+ } else {
118
+ return hour + 12;
119
+ }
120
+ },
121
+ week : {
122
+ dow : 0, // Sunday is the first day of the week.
123
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
124
+ }
125
+ });
126
+
127
+ return ta;
128
+
129
+ }));
bp-core/js/vendor/moment-js/locale/ta.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},c={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"},d=a.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},preparse:function(a){return a.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return a<2?" யாமம்":a<6?" வைகறை":a<10?" காலை":a<14?" நண்பகல்":a<18?" எற்பாடு":a<22?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?a<2?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}});return d});
bp-core/js/vendor/moment-js/locale/te.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Telugu [te]
3
+ //! author : Krishna Chaitanya Thota : https://github.com/kcthota
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var te = moment.defineLocale('te', {
14
+ months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
15
+ monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
18
+ weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
19
+ weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'A h:mm',
22
+ LTS : 'A h:mm:ss',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY, A h:mm',
26
+ LLLL : 'dddd, D MMMM YYYY, A h:mm'
27
+ },
28
+ calendar : {
29
+ sameDay : '[నేడు] LT',
30
+ nextDay : '[రేపు] LT',
31
+ nextWeek : 'dddd, LT',
32
+ lastDay : '[నిన్న] LT',
33
+ lastWeek : '[గత] dddd, LT',
34
+ sameElse : 'L'
35
+ },
36
+ relativeTime : {
37
+ future : '%s లో',
38
+ past : '%s క్రితం',
39
+ s : 'కొన్ని క్షణాలు',
40
+ m : 'ఒక నిమిషం',
41
+ mm : '%d నిమిషాలు',
42
+ h : 'ఒక గంట',
43
+ hh : '%d గంటలు',
44
+ d : 'ఒక రోజు',
45
+ dd : '%d రోజులు',
46
+ M : 'ఒక నెల',
47
+ MM : '%d నెలలు',
48
+ y : 'ఒక సంవత్సరం',
49
+ yy : '%d సంవత్సరాలు'
50
+ },
51
+ ordinalParse : /\d{1,2}వ/,
52
+ ordinal : '%dవ',
53
+ meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
54
+ meridiemHour : function (hour, meridiem) {
55
+ if (hour === 12) {
56
+ hour = 0;
57
+ }
58
+ if (meridiem === 'రాత్రి') {
59
+ return hour < 4 ? hour : hour + 12;
60
+ } else if (meridiem === 'ఉదయం') {
61
+ return hour;
62
+ } else if (meridiem === 'మధ్యాహ్నం') {
63
+ return hour >= 10 ? hour : hour + 12;
64
+ } else if (meridiem === 'సాయంత్రం') {
65
+ return hour + 12;
66
+ }
67
+ },
68
+ meridiem : function (hour, minute, isLower) {
69
+ if (hour < 4) {
70
+ return 'రాత్రి';
71
+ } else if (hour < 10) {
72
+ return 'ఉదయం';
73
+ } else if (hour < 17) {
74
+ return 'మధ్యాహ్నం';
75
+ } else if (hour < 20) {
76
+ return 'సాయంత్రం';
77
+ } else {
78
+ return 'రాత్రి';
79
+ }
80
+ },
81
+ week : {
82
+ dow : 0, // Sunday is the first day of the week.
83
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
84
+ }
85
+ });
86
+
87
+ return te;
88
+
89
+ }));
bp-core/js/vendor/moment-js/locale/te.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},ordinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(a,b){return 12===a&&(a=0),"రాత్రి"===b?a<4?a:a+12:"ఉదయం"===b?a:"మధ్యాహ్నం"===b?a>=10?a:a+12:"సాయంత్రం"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"రాత్రి":a<10?"ఉదయం":a<17?"మధ్యాహ్నం":a<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}});return b});
bp-core/js/vendor/moment-js/locale/th.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Thai [th]
3
+ //! author : Kridsada Thanabulpong : https://github.com/sirn
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var th = moment.defineLocale('th', {
14
+ months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
15
+ monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
16
+ monthsParseExact: true,
17
+ weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
18
+ weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
19
+ weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'H:mm',
23
+ LTS : 'H:mm:ss',
24
+ L : 'YYYY/MM/DD',
25
+ LL : 'D MMMM YYYY',
26
+ LLL : 'D MMMM YYYY เวลา H:mm',
27
+ LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
28
+ },
29
+ meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
30
+ isPM: function (input) {
31
+ return input === 'หลังเที่ยง';
32
+ },
33
+ meridiem : function (hour, minute, isLower) {
34
+ if (hour < 12) {
35
+ return 'ก่อนเที่ยง';
36
+ } else {
37
+ return 'หลังเที่ยง';
38
+ }
39
+ },
40
+ calendar : {
41
+ sameDay : '[วันนี้ เวลา] LT',
42
+ nextDay : '[พรุ่งนี้ เวลา] LT',
43
+ nextWeek : 'dddd[หน้า เวลา] LT',
44
+ lastDay : '[เมื่อวานนี้ เวลา] LT',
45
+ lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
46
+ sameElse : 'L'
47
+ },
48
+ relativeTime : {
49
+ future : 'อีก %s',
50
+ past : '%sที่แล้ว',
51
+ s : 'ไม่กี่วินาที',
52
+ m : '1 นาที',
53
+ mm : '%d นาที',
54
+ h : '1 ชั่วโมง',
55
+ hh : '%d ชั่วโมง',
56
+ d : '1 วัน',
57
+ dd : '%d วัน',
58
+ M : '1 เดือน',
59
+ MM : '%d เดือน',
60
+ y : '1 ปี',
61
+ yy : '%d ปี'
62
+ }
63
+ });
64
+
65
+ return th;
66
+
67
+ }));
bp-core/js/vendor/moment-js/locale/th.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return a<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return b});
bp-core/js/vendor/moment-js/locale/tl-ph.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Tagalog (Philippines) [tl-ph]
3
+ //! author : Dan Hagman : https://github.com/hagmandan
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var tl_ph = moment.defineLocale('tl-ph', {
14
+ months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
15
+ monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
16
+ weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
17
+ weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
18
+ weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'MM/D/YYYY',
23
+ LL : 'MMMM D, YYYY',
24
+ LLL : 'MMMM D, YYYY HH:mm',
25
+ LLLL : 'dddd, MMMM DD, YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay: '[Ngayon sa] LT',
29
+ nextDay: '[Bukas sa] LT',
30
+ nextWeek: 'dddd [sa] LT',
31
+ lastDay: '[Kahapon sa] LT',
32
+ lastWeek: 'dddd [huling linggo] LT',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'sa loob ng %s',
37
+ past : '%s ang nakalipas',
38
+ s : 'ilang segundo',
39
+ m : 'isang minuto',
40
+ mm : '%d minuto',
41
+ h : 'isang oras',
42
+ hh : '%d oras',
43
+ d : 'isang araw',
44
+ dd : '%d araw',
45
+ M : 'isang buwan',
46
+ MM : '%d buwan',
47
+ y : 'isang taon',
48
+ yy : '%d taon'
49
+ },
50
+ ordinalParse: /\d{1,2}/,
51
+ ordinal : function (number) {
52
+ return number;
53
+ },
54
+ week : {
55
+ dow : 1, // Monday is the first day of the week.
56
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
57
+ }
58
+ });
59
+
60
+ return tl_ph;
61
+
62
+ }));
bp-core/js/vendor/moment-js/locale/tl-ph.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/tlh.js ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Klingon [tlh]
3
+ //! author : Dominika Kruk : https://github.com/amaranthrose
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
14
+
15
+ function translateFuture(output) {
16
+ var time = output;
17
+ time = (output.indexOf('jaj') !== -1) ?
18
+ time.slice(0, -3) + 'leS' :
19
+ (output.indexOf('jar') !== -1) ?
20
+ time.slice(0, -3) + 'waQ' :
21
+ (output.indexOf('DIS') !== -1) ?
22
+ time.slice(0, -3) + 'nem' :
23
+ time + ' pIq';
24
+ return time;
25
+ }
26
+
27
+ function translatePast(output) {
28
+ var time = output;
29
+ time = (output.indexOf('jaj') !== -1) ?
30
+ time.slice(0, -3) + 'Hu’' :
31
+ (output.indexOf('jar') !== -1) ?
32
+ time.slice(0, -3) + 'wen' :
33
+ (output.indexOf('DIS') !== -1) ?
34
+ time.slice(0, -3) + 'ben' :
35
+ time + ' ret';
36
+ return time;
37
+ }
38
+
39
+ function translate(number, withoutSuffix, string, isFuture) {
40
+ var numberNoun = numberAsNoun(number);
41
+ switch (string) {
42
+ case 'mm':
43
+ return numberNoun + ' tup';
44
+ case 'hh':
45
+ return numberNoun + ' rep';
46
+ case 'dd':
47
+ return numberNoun + ' jaj';
48
+ case 'MM':
49
+ return numberNoun + ' jar';
50
+ case 'yy':
51
+ return numberNoun + ' DIS';
52
+ }
53
+ }
54
+
55
+ function numberAsNoun(number) {
56
+ var hundred = Math.floor((number % 1000) / 100),
57
+ ten = Math.floor((number % 100) / 10),
58
+ one = number % 10,
59
+ word = '';
60
+ if (hundred > 0) {
61
+ word += numbersNouns[hundred] + 'vatlh';
62
+ }
63
+ if (ten > 0) {
64
+ word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
65
+ }
66
+ if (one > 0) {
67
+ word += ((word !== '') ? ' ' : '') + numbersNouns[one];
68
+ }
69
+ return (word === '') ? 'pagh' : word;
70
+ }
71
+
72
+ var tlh = moment.defineLocale('tlh', {
73
+ months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
74
+ monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
75
+ monthsParseExact : true,
76
+ weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
77
+ weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
78
+ weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
79
+ longDateFormat : {
80
+ LT : 'HH:mm',
81
+ LTS : 'HH:mm:ss',
82
+ L : 'DD.MM.YYYY',
83
+ LL : 'D MMMM YYYY',
84
+ LLL : 'D MMMM YYYY HH:mm',
85
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
86
+ },
87
+ calendar : {
88
+ sameDay: '[DaHjaj] LT',
89
+ nextDay: '[wa’leS] LT',
90
+ nextWeek: 'LLL',
91
+ lastDay: '[wa’Hu’] LT',
92
+ lastWeek: 'LLL',
93
+ sameElse: 'L'
94
+ },
95
+ relativeTime : {
96
+ future : translateFuture,
97
+ past : translatePast,
98
+ s : 'puS lup',
99
+ m : 'wa’ tup',
100
+ mm : translate,
101
+ h : 'wa’ rep',
102
+ hh : translate,
103
+ d : 'wa’ jaj',
104
+ dd : translate,
105
+ M : 'wa’ jar',
106
+ MM : translate,
107
+ y : 'wa’ DIS',
108
+ yy : translate
109
+ },
110
+ ordinalParse: /\d{1,2}\./,
111
+ ordinal : '%d.',
112
+ week : {
113
+ dow : 1, // Monday is the first day of the week.
114
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
115
+ }
116
+ });
117
+
118
+ return tlh;
119
+
120
+ }));
bp-core/js/vendor/moment-js/locale/tlh.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a){var b=a;return b=a.indexOf("jaj")!==-1?b.slice(0,-3)+"leS":a.indexOf("jar")!==-1?b.slice(0,-3)+"waQ":a.indexOf("DIS")!==-1?b.slice(0,-3)+"nem":b+" pIq"}function c(a){var b=a;return b=a.indexOf("jaj")!==-1?b.slice(0,-3)+"Hu’":a.indexOf("jar")!==-1?b.slice(0,-3)+"wen":a.indexOf("DIS")!==-1?b.slice(0,-3)+"ben":b+" ret"}function d(a,b,c,d){var f=e(a);switch(c){case"mm":return f+" tup";case"hh":return f+" rep";case"dd":return f+" jaj";case"MM":return f+" jar";case"yy":return f+" DIS"}}function e(a){var b=Math.floor(a%1e3/100),c=Math.floor(a%100/10),d=a%10,e="";return b>0&&(e+=f[b]+"vatlh"),c>0&&(e+=(""!==e?" ":"")+f[c]+"maH"),d>0&&(e+=(""!==e?" ":"")+f[d]),""===e?"pagh":e}var f="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"),g=a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:b,past:c,s:"puS lup",m:"wa’ tup",mm:d,h:"wa’ rep",hh:d,d:"wa’ jaj",dd:d,M:"wa’ jar",MM:d,y:"wa’ DIS",yy:d},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g});
bp-core/js/vendor/moment-js/locale/tr.js ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Turkish [tr]
3
+ //! authors : Erhan Gundogan : https://github.com/erhangundogan,
4
+ //! Burak Yiğit Kaya: https://github.com/BYK
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var suffixes = {
15
+ 1: '\'inci',
16
+ 5: '\'inci',
17
+ 8: '\'inci',
18
+ 70: '\'inci',
19
+ 80: '\'inci',
20
+ 2: '\'nci',
21
+ 7: '\'nci',
22
+ 20: '\'nci',
23
+ 50: '\'nci',
24
+ 3: '\'üncü',
25
+ 4: '\'üncü',
26
+ 100: '\'üncü',
27
+ 6: '\'ncı',
28
+ 9: '\'uncu',
29
+ 10: '\'uncu',
30
+ 30: '\'uncu',
31
+ 60: '\'ıncı',
32
+ 90: '\'ıncı'
33
+ };
34
+
35
+ var tr = moment.defineLocale('tr', {
36
+ months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
37
+ monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
38
+ weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
39
+ weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
40
+ weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
41
+ longDateFormat : {
42
+ LT : 'HH:mm',
43
+ LTS : 'HH:mm:ss',
44
+ L : 'DD.MM.YYYY',
45
+ LL : 'D MMMM YYYY',
46
+ LLL : 'D MMMM YYYY HH:mm',
47
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
48
+ },
49
+ calendar : {
50
+ sameDay : '[bugün saat] LT',
51
+ nextDay : '[yarın saat] LT',
52
+ nextWeek : '[haftaya] dddd [saat] LT',
53
+ lastDay : '[dün] LT',
54
+ lastWeek : '[geçen hafta] dddd [saat] LT',
55
+ sameElse : 'L'
56
+ },
57
+ relativeTime : {
58
+ future : '%s sonra',
59
+ past : '%s önce',
60
+ s : 'birkaç saniye',
61
+ m : 'bir dakika',
62
+ mm : '%d dakika',
63
+ h : 'bir saat',
64
+ hh : '%d saat',
65
+ d : 'bir gün',
66
+ dd : '%d gün',
67
+ M : 'bir ay',
68
+ MM : '%d ay',
69
+ y : 'bir yıl',
70
+ yy : '%d yıl'
71
+ },
72
+ ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
73
+ ordinal : function (number) {
74
+ if (number === 0) { // special case for zero
75
+ return number + '\'ıncı';
76
+ }
77
+ var a = number % 10,
78
+ b = number % 100 - a,
79
+ c = number >= 100 ? 100 : null;
80
+ return number + (suffixes[a] || suffixes[b] || suffixes[c]);
81
+ },
82
+ week : {
83
+ dow : 1, // Monday is the first day of the week.
84
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
85
+ }
86
+ });
87
+
88
+ return tr;
89
+
90
+ }));
bp-core/js/vendor/moment-js/locale/tr.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},c=a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}});return c});
bp-core/js/vendor/moment-js/locale/tzl.js ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Talossan [tzl]
3
+ //! author : Robin van der Vliet : https://github.com/robin0van0der0v
4
+ //! author : Iustì Canun
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
15
+ // This is currently too difficult (maybe even impossible) to add.
16
+ var tzl = moment.defineLocale('tzl', {
17
+ months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
18
+ monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
19
+ weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
20
+ weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
21
+ weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
22
+ longDateFormat : {
23
+ LT : 'HH.mm',
24
+ LTS : 'HH.mm.ss',
25
+ L : 'DD.MM.YYYY',
26
+ LL : 'D. MMMM [dallas] YYYY',
27
+ LLL : 'D. MMMM [dallas] YYYY HH.mm',
28
+ LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
29
+ },
30
+ meridiemParse: /d\'o|d\'a/i,
31
+ isPM : function (input) {
32
+ return 'd\'o' === input.toLowerCase();
33
+ },
34
+ meridiem : function (hours, minutes, isLower) {
35
+ if (hours > 11) {
36
+ return isLower ? 'd\'o' : 'D\'O';
37
+ } else {
38
+ return isLower ? 'd\'a' : 'D\'A';
39
+ }
40
+ },
41
+ calendar : {
42
+ sameDay : '[oxhi à] LT',
43
+ nextDay : '[demà à] LT',
44
+ nextWeek : 'dddd [à] LT',
45
+ lastDay : '[ieiri à] LT',
46
+ lastWeek : '[sür el] dddd [lasteu à] LT',
47
+ sameElse : 'L'
48
+ },
49
+ relativeTime : {
50
+ future : 'osprei %s',
51
+ past : 'ja%s',
52
+ s : processRelativeTime,
53
+ m : processRelativeTime,
54
+ mm : processRelativeTime,
55
+ h : processRelativeTime,
56
+ hh : processRelativeTime,
57
+ d : processRelativeTime,
58
+ dd : processRelativeTime,
59
+ M : processRelativeTime,
60
+ MM : processRelativeTime,
61
+ y : processRelativeTime,
62
+ yy : processRelativeTime
63
+ },
64
+ ordinalParse: /\d{1,2}\./,
65
+ ordinal : '%d.',
66
+ week : {
67
+ dow : 1, // Monday is the first day of the week.
68
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
69
+ }
70
+ });
71
+
72
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
73
+ var format = {
74
+ 's': ['viensas secunds', '\'iensas secunds'],
75
+ 'm': ['\'n míut', '\'iens míut'],
76
+ 'mm': [number + ' míuts', '' + number + ' míuts'],
77
+ 'h': ['\'n þora', '\'iensa þora'],
78
+ 'hh': [number + ' þoras', '' + number + ' þoras'],
79
+ 'd': ['\'n ziua', '\'iensa ziua'],
80
+ 'dd': [number + ' ziuas', '' + number + ' ziuas'],
81
+ 'M': ['\'n mes', '\'iens mes'],
82
+ 'MM': [number + ' mesen', '' + number + ' mesen'],
83
+ 'y': ['\'n ar', '\'iens ar'],
84
+ 'yy': [number + ' ars', '' + number + ' ars']
85
+ };
86
+ return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
87
+ }
88
+
89
+ return tzl;
90
+
91
+ }));
bp-core/js/vendor/moment-js/locale/tzl.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts",""+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras",""+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas",""+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen",""+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars",""+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1]}var c=a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(a){return"d'o"===a.toLowerCase()},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c});
bp-core/js/vendor/moment-js/locale/tzm-latn.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Central Atlas Tamazight Latin [tzm-latn]
3
+ //! author : Abdel Said : https://github.com/abdelsaid
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var tzm_latn = moment.defineLocale('tzm-latn', {
14
+ months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
15
+ monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
16
+ weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
17
+ weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
18
+ weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'dddd D MMMM YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay: '[asdkh g] LT',
29
+ nextDay: '[aska g] LT',
30
+ nextWeek: 'dddd [g] LT',
31
+ lastDay: '[assant g] LT',
32
+ lastWeek: 'dddd [g] LT',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'dadkh s yan %s',
37
+ past : 'yan %s',
38
+ s : 'imik',
39
+ m : 'minuḍ',
40
+ mm : '%d minuḍ',
41
+ h : 'saɛa',
42
+ hh : '%d tassaɛin',
43
+ d : 'ass',
44
+ dd : '%d ossan',
45
+ M : 'ayowr',
46
+ MM : '%d iyyirn',
47
+ y : 'asgas',
48
+ yy : '%d isgasn'
49
+ },
50
+ week : {
51
+ dow : 6, // Saturday is the first day of the week.
52
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
53
+ }
54
+ });
55
+
56
+ return tzm_latn;
57
+
58
+ }));
bp-core/js/vendor/moment-js/locale/tzm-latn.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}});return b});
bp-core/js/vendor/moment-js/locale/tzm.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Central Atlas Tamazight [tzm]
3
+ //! author : Abdel Said : https://github.com/abdelsaid
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var tzm = moment.defineLocale('tzm', {
14
+ months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
15
+ monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
16
+ weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17
+ weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
18
+ weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS: 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'dddd D MMMM YYYY HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
29
+ nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
30
+ nextWeek: 'dddd [ⴴ] LT',
31
+ lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
32
+ lastWeek: 'dddd [ⴴ] LT',
33
+ sameElse: 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
37
+ past : 'ⵢⴰⵏ %s',
38
+ s : 'ⵉⵎⵉⴽ',
39
+ m : 'ⵎⵉⵏⵓⴺ',
40
+ mm : '%d ⵎⵉⵏⵓⴺ',
41
+ h : 'ⵙⴰⵄⴰ',
42
+ hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
43
+ d : 'ⴰⵙⵙ',
44
+ dd : '%d oⵙⵙⴰⵏ',
45
+ M : 'ⴰⵢoⵓⵔ',
46
+ MM : '%d ⵉⵢⵢⵉⵔⵏ',
47
+ y : 'ⴰⵙⴳⴰⵙ',
48
+ yy : '%d ⵉⵙⴳⴰⵙⵏ'
49
+ },
50
+ week : {
51
+ dow : 6, // Saturday is the first day of the week.
52
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
53
+ }
54
+ });
55
+
56
+ return tzm;
57
+
58
+ }));
bp-core/js/vendor/moment-js/locale/tzm.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}});return b});
bp-core/js/vendor/moment-js/locale/uk.js ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Ukrainian [uk]
3
+ //! author : zemlanin : https://github.com/zemlanin
4
+ //! Author : Menelion Elensúle : https://github.com/Oire
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ function plural(word, num) {
15
+ var forms = word.split('_');
16
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
17
+ }
18
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
19
+ var format = {
20
+ 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
21
+ 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
22
+ 'dd': 'день_дні_днів',
23
+ 'MM': 'місяць_місяці_місяців',
24
+ 'yy': 'рік_роки_років'
25
+ };
26
+ if (key === 'm') {
27
+ return withoutSuffix ? 'хвилина' : 'хвилину';
28
+ }
29
+ else if (key === 'h') {
30
+ return withoutSuffix ? 'година' : 'годину';
31
+ }
32
+ else {
33
+ return number + ' ' + plural(format[key], +number);
34
+ }
35
+ }
36
+ function weekdaysCaseReplace(m, format) {
37
+ var weekdays = {
38
+ 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
39
+ 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
40
+ 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
41
+ },
42
+ nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
43
+ 'accusative' :
44
+ ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
45
+ 'genitive' :
46
+ 'nominative');
47
+ return weekdays[nounCase][m.day()];
48
+ }
49
+ function processHoursFunction(str) {
50
+ return function () {
51
+ return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
52
+ };
53
+ }
54
+
55
+ var uk = moment.defineLocale('uk', {
56
+ months : {
57
+ 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
58
+ 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
59
+ },
60
+ monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
61
+ weekdays : weekdaysCaseReplace,
62
+ weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
63
+ weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
64
+ longDateFormat : {
65
+ LT : 'HH:mm',
66
+ LTS : 'HH:mm:ss',
67
+ L : 'DD.MM.YYYY',
68
+ LL : 'D MMMM YYYY р.',
69
+ LLL : 'D MMMM YYYY р., HH:mm',
70
+ LLLL : 'dddd, D MMMM YYYY р., HH:mm'
71
+ },
72
+ calendar : {
73
+ sameDay: processHoursFunction('[Сьогодні '),
74
+ nextDay: processHoursFunction('[Завтра '),
75
+ lastDay: processHoursFunction('[Вчора '),
76
+ nextWeek: processHoursFunction('[У] dddd ['),
77
+ lastWeek: function () {
78
+ switch (this.day()) {
79
+ case 0:
80
+ case 3:
81
+ case 5:
82
+ case 6:
83
+ return processHoursFunction('[Минулої] dddd [').call(this);
84
+ case 1:
85
+ case 2:
86
+ case 4:
87
+ return processHoursFunction('[Минулого] dddd [').call(this);
88
+ }
89
+ },
90
+ sameElse: 'L'
91
+ },
92
+ relativeTime : {
93
+ future : 'за %s',
94
+ past : '%s тому',
95
+ s : 'декілька секунд',
96
+ m : relativeTimeWithPlural,
97
+ mm : relativeTimeWithPlural,
98
+ h : 'годину',
99
+ hh : relativeTimeWithPlural,
100
+ d : 'день',
101
+ dd : relativeTimeWithPlural,
102
+ M : 'місяць',
103
+ MM : relativeTimeWithPlural,
104
+ y : 'рік',
105
+ yy : relativeTimeWithPlural
106
+ },
107
+ // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
108
+ meridiemParse: /ночі|ранку|дня|вечора/,
109
+ isPM: function (input) {
110
+ return /^(дня|вечора)$/.test(input);
111
+ },
112
+ meridiem : function (hour, minute, isLower) {
113
+ if (hour < 4) {
114
+ return 'ночі';
115
+ } else if (hour < 12) {
116
+ return 'ранку';
117
+ } else if (hour < 17) {
118
+ return 'дня';
119
+ } else {
120
+ return 'вечора';
121
+ }
122
+ },
123
+ ordinalParse: /\d{1,2}-(й|го)/,
124
+ ordinal: function (number, period) {
125
+ switch (period) {
126
+ case 'M':
127
+ case 'd':
128
+ case 'DDD':
129
+ case 'w':
130
+ case 'W':
131
+ return number + '-й';
132
+ case 'D':
133
+ return number + '-го';
134
+ default:
135
+ return number;
136
+ }
137
+ },
138
+ week : {
139
+ dow : 1, // Monday is the first day of the week.
140
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
141
+ }
142
+ });
143
+
144
+ return uk;
145
+
146
+ }));
bp-core/js/vendor/moment-js/locale/uk.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:c?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function e(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var f=a.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:d,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:e("[Сьогодні "),nextDay:e("[Завтра "),lastDay:e("[Вчора "),nextWeek:e("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[Минулої] dddd [").call(this);case 1:case 2:case 4:return e("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночі":a<12?"ранку":a<17?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});return f});
bp-core/js/vendor/moment-js/locale/uz.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Uzbek [uz]
3
+ //! author : Sardor Muminov : https://github.com/muminoff
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var uz = moment.defineLocale('uz', {
14
+ months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
15
+ monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
16
+ weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
17
+ weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
18
+ weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
19
+ longDateFormat : {
20
+ LT : 'HH:mm',
21
+ LTS : 'HH:mm:ss',
22
+ L : 'DD/MM/YYYY',
23
+ LL : 'D MMMM YYYY',
24
+ LLL : 'D MMMM YYYY HH:mm',
25
+ LLLL : 'D MMMM YYYY, dddd HH:mm'
26
+ },
27
+ calendar : {
28
+ sameDay : '[Бугун соат] LT [да]',
29
+ nextDay : '[Эртага] LT [да]',
30
+ nextWeek : 'dddd [куни соат] LT [да]',
31
+ lastDay : '[Кеча соат] LT [да]',
32
+ lastWeek : '[Утган] dddd [куни соат] LT [да]',
33
+ sameElse : 'L'
34
+ },
35
+ relativeTime : {
36
+ future : 'Якин %s ичида',
37
+ past : 'Бир неча %s олдин',
38
+ s : 'фурсат',
39
+ m : 'бир дакика',
40
+ mm : '%d дакика',
41
+ h : 'бир соат',
42
+ hh : '%d соат',
43
+ d : 'бир кун',
44
+ dd : '%d кун',
45
+ M : 'бир ой',
46
+ MM : '%d ой',
47
+ y : 'бир йил',
48
+ yy : '%d йил'
49
+ },
50
+ week : {
51
+ dow : 1, // Monday is the first day of the week.
52
+ doy : 7 // The week that contains Jan 4th is the first week of the year.
53
+ }
54
+ });
55
+
56
+ return uz;
57
+
58
+ }));
bp-core/js/vendor/moment-js/locale/uz.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}});return b});
bp-core/js/vendor/moment-js/locale/vi.js ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Vietnamese [vi]
3
+ //! author : Bang Nguyen : https://github.com/bangnk
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var vi = moment.defineLocale('vi', {
14
+ months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
15
+ monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
18
+ weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
19
+ weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
20
+ weekdaysParseExact : true,
21
+ meridiemParse: /sa|ch/i,
22
+ isPM : function (input) {
23
+ return /^ch$/i.test(input);
24
+ },
25
+ meridiem : function (hours, minutes, isLower) {
26
+ if (hours < 12) {
27
+ return isLower ? 'sa' : 'SA';
28
+ } else {
29
+ return isLower ? 'ch' : 'CH';
30
+ }
31
+ },
32
+ longDateFormat : {
33
+ LT : 'HH:mm',
34
+ LTS : 'HH:mm:ss',
35
+ L : 'DD/MM/YYYY',
36
+ LL : 'D MMMM [năm] YYYY',
37
+ LLL : 'D MMMM [năm] YYYY HH:mm',
38
+ LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
39
+ l : 'DD/M/YYYY',
40
+ ll : 'D MMM YYYY',
41
+ lll : 'D MMM YYYY HH:mm',
42
+ llll : 'ddd, D MMM YYYY HH:mm'
43
+ },
44
+ calendar : {
45
+ sameDay: '[Hôm nay lúc] LT',
46
+ nextDay: '[Ngày mai lúc] LT',
47
+ nextWeek: 'dddd [tuần tới lúc] LT',
48
+ lastDay: '[Hôm qua lúc] LT',
49
+ lastWeek: 'dddd [tuần rồi lúc] LT',
50
+ sameElse: 'L'
51
+ },
52
+ relativeTime : {
53
+ future : '%s tới',
54
+ past : '%s trước',
55
+ s : 'vài giây',
56
+ m : 'một phút',
57
+ mm : '%d phút',
58
+ h : 'một giờ',
59
+ hh : '%d giờ',
60
+ d : 'một ngày',
61
+ dd : '%d ngày',
62
+ M : 'một tháng',
63
+ MM : '%d tháng',
64
+ y : 'một năm',
65
+ yy : '%d năm'
66
+ },
67
+ ordinalParse: /\d{1,2}/,
68
+ ordinal : function (number) {
69
+ return number;
70
+ },
71
+ week : {
72
+ dow : 1, // Monday is the first day of the week.
73
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
74
+ }
75
+ });
76
+
77
+ return vi;
78
+
79
+ }));
bp-core/js/vendor/moment-js/locale/vi.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/x-pseudo.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Pseudo [x-pseudo]
3
+ //! author : Andrew Hood : https://github.com/andrewhood125
4
+
5
+ ;(function (global, factory) {
6
+ typeof exports === 'object' && typeof module !== 'undefined'
7
+ && typeof require === 'function' ? factory(require('../moment')) :
8
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
+ factory(global.moment)
10
+ }(this, function (moment) { 'use strict';
11
+
12
+
13
+ var x_pseudo = moment.defineLocale('x-pseudo', {
14
+ months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
15
+ monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
16
+ monthsParseExact : true,
17
+ weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
18
+ weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
19
+ weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
20
+ weekdaysParseExact : true,
21
+ longDateFormat : {
22
+ LT : 'HH:mm',
23
+ L : 'DD/MM/YYYY',
24
+ LL : 'D MMMM YYYY',
25
+ LLL : 'D MMMM YYYY HH:mm',
26
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
27
+ },
28
+ calendar : {
29
+ sameDay : '[T~ódá~ý át] LT',
30
+ nextDay : '[T~ómó~rró~w át] LT',
31
+ nextWeek : 'dddd [át] LT',
32
+ lastDay : '[Ý~ést~érdá~ý át] LT',
33
+ lastWeek : '[L~ást] dddd [át] LT',
34
+ sameElse : 'L'
35
+ },
36
+ relativeTime : {
37
+ future : 'í~ñ %s',
38
+ past : '%s á~gó',
39
+ s : 'á ~féw ~sécó~ñds',
40
+ m : 'á ~míñ~úté',
41
+ mm : '%d m~íñú~tés',
42
+ h : 'á~ñ hó~úr',
43
+ hh : '%d h~óúrs',
44
+ d : 'á ~dáý',
45
+ dd : '%d d~áýs',
46
+ M : 'á ~móñ~th',
47
+ MM : '%d m~óñt~hs',
48
+ y : 'á ~ýéár',
49
+ yy : '%d ý~éárs'
50
+ },
51
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
52
+ ordinal : function (number) {
53
+ var b = number % 10,
54
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
55
+ (b === 1) ? 'st' :
56
+ (b === 2) ? 'nd' :
57
+ (b === 3) ? 'rd' : 'th';
58
+ return number + output;
59
+ },
60
+ week : {
61
+ dow : 1, // Monday is the first day of the week.
62
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
63
+ }
64
+ });
65
+
66
+ return x_pseudo;
67
+
68
+ }));
bp-core/js/vendor/moment-js/locale/x-pseudo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/zh-cn.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Chinese (China) [zh-cn]
3
+ //! author : suupic : https://github.com/suupic
4
+ //! author : Zeno Zeng : https://github.com/zenozeng
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var zh_cn = moment.defineLocale('zh-cn', {
15
+ months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
16
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
17
+ weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18
+ weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
19
+ weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'Ah点mm分',
22
+ LTS : 'Ah点m分s秒',
23
+ L : 'YYYY-MM-DD',
24
+ LL : 'YYYY年MMMD日',
25
+ LLL : 'YYYY年MMMD日Ah点mm分',
26
+ LLLL : 'YYYY年MMMD日ddddAh点mm分',
27
+ l : 'YYYY-MM-DD',
28
+ ll : 'YYYY年MMMD日',
29
+ lll : 'YYYY年MMMD日Ah点mm分',
30
+ llll : 'YYYY年MMMD日ddddAh点mm分'
31
+ },
32
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
33
+ meridiemHour: function (hour, meridiem) {
34
+ if (hour === 12) {
35
+ hour = 0;
36
+ }
37
+ if (meridiem === '凌晨' || meridiem === '早上' ||
38
+ meridiem === '上午') {
39
+ return hour;
40
+ } else if (meridiem === '下午' || meridiem === '晚上') {
41
+ return hour + 12;
42
+ } else {
43
+ // '中午'
44
+ return hour >= 11 ? hour : hour + 12;
45
+ }
46
+ },
47
+ meridiem : function (hour, minute, isLower) {
48
+ var hm = hour * 100 + minute;
49
+ if (hm < 600) {
50
+ return '凌晨';
51
+ } else if (hm < 900) {
52
+ return '早上';
53
+ } else if (hm < 1130) {
54
+ return '上午';
55
+ } else if (hm < 1230) {
56
+ return '中午';
57
+ } else if (hm < 1800) {
58
+ return '下午';
59
+ } else {
60
+ return '晚上';
61
+ }
62
+ },
63
+ calendar : {
64
+ sameDay : function () {
65
+ return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
66
+ },
67
+ nextDay : function () {
68
+ return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
69
+ },
70
+ lastDay : function () {
71
+ return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
72
+ },
73
+ nextWeek : function () {
74
+ var startOfWeek, prefix;
75
+ startOfWeek = moment().startOf('week');
76
+ prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';
77
+ return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
78
+ },
79
+ lastWeek : function () {
80
+ var startOfWeek, prefix;
81
+ startOfWeek = moment().startOf('week');
82
+ prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
83
+ return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
84
+ },
85
+ sameElse : 'LL'
86
+ },
87
+ ordinalParse: /\d{1,2}(日|月|周)/,
88
+ ordinal : function (number, period) {
89
+ switch (period) {
90
+ case 'd':
91
+ case 'D':
92
+ case 'DDD':
93
+ return number + '日';
94
+ case 'M':
95
+ return number + '月';
96
+ case 'w':
97
+ case 'W':
98
+ return number + '周';
99
+ default:
100
+ return number;
101
+ }
102
+ },
103
+ relativeTime : {
104
+ future : '%s内',
105
+ past : '%s前',
106
+ s : '几秒',
107
+ m : '1 分钟',
108
+ mm : '%d 分钟',
109
+ h : '1 小时',
110
+ hh : '%d 小时',
111
+ d : '1 天',
112
+ dd : '%d 天',
113
+ M : '1 个月',
114
+ MM : '%d 个月',
115
+ y : '1 年',
116
+ yy : '%d 年'
117
+ },
118
+ week : {
119
+ // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
120
+ dow : 1, // Monday is the first day of the week.
121
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
122
+ }
123
+ });
124
+
125
+ return zh_cn;
126
+
127
+ }));
bp-core/js/vendor/moment-js/locale/zh-cn.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.diff(b,"days")>=7?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()<b.unix()?"[上]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return b});
bp-core/js/vendor/moment-js/locale/zh-hk.js ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Chinese (Hong Kong) [zh-hk]
3
+ //! author : Ben : https://github.com/ben-lin
4
+ //! author : Chris Lam : https://github.com/hehachris
5
+ //! author : Konstantin : https://github.com/skfd
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined'
9
+ && typeof require === 'function' ? factory(require('../moment')) :
10
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
+ factory(global.moment)
12
+ }(this, function (moment) { 'use strict';
13
+
14
+
15
+ var zh_hk = moment.defineLocale('zh-hk', {
16
+ months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
17
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
18
+ weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
19
+ weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
20
+ weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
21
+ longDateFormat : {
22
+ LT : 'Ah點mm分',
23
+ LTS : 'Ah點m分s秒',
24
+ L : 'YYYY年MMMD日',
25
+ LL : 'YYYY年MMMD日',
26
+ LLL : 'YYYY年MMMD日Ah點mm分',
27
+ LLLL : 'YYYY年MMMD日ddddAh點mm分',
28
+ l : 'YYYY年MMMD日',
29
+ ll : 'YYYY年MMMD日',
30
+ lll : 'YYYY年MMMD日Ah點mm分',
31
+ llll : 'YYYY年MMMD日ddddAh點mm分'
32
+ },
33
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
34
+ meridiemHour : function (hour, meridiem) {
35
+ if (hour === 12) {
36
+ hour = 0;
37
+ }
38
+ if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
39
+ return hour;
40
+ } else if (meridiem === '中午') {
41
+ return hour >= 11 ? hour : hour + 12;
42
+ } else if (meridiem === '下午' || meridiem === '晚上') {
43
+ return hour + 12;
44
+ }
45
+ },
46
+ meridiem : function (hour, minute, isLower) {
47
+ var hm = hour * 100 + minute;
48
+ if (hm < 600) {
49
+ return '凌晨';
50
+ } else if (hm < 900) {
51
+ return '早上';
52
+ } else if (hm < 1130) {
53
+ return '上午';
54
+ } else if (hm < 1230) {
55
+ return '中午';
56
+ } else if (hm < 1800) {
57
+ return '下午';
58
+ } else {
59
+ return '晚上';
60
+ }
61
+ },
62
+ calendar : {
63
+ sameDay : '[今天]LT',
64
+ nextDay : '[明天]LT',
65
+ nextWeek : '[下]ddddLT',
66
+ lastDay : '[昨天]LT',
67
+ lastWeek : '[上]ddddLT',
68
+ sameElse : 'L'
69
+ },
70
+ ordinalParse: /\d{1,2}(日|月|週)/,
71
+ ordinal : function (number, period) {
72
+ switch (period) {
73
+ case 'd' :
74
+ case 'D' :
75
+ case 'DDD' :
76
+ return number + '日';
77
+ case 'M' :
78
+ return number + '月';
79
+ case 'w' :
80
+ case 'W' :
81
+ return number + '週';
82
+ default :
83
+ return number;
84
+ }
85
+ },
86
+ relativeTime : {
87
+ future : '%s內',
88
+ past : '%s前',
89
+ s : '幾秒',
90
+ m : '1 分鐘',
91
+ mm : '%d 分鐘',
92
+ h : '1 小時',
93
+ hh : '%d 小時',
94
+ d : '1 天',
95
+ dd : '%d 天',
96
+ M : '1 個月',
97
+ MM : '%d 個月',
98
+ y : '1 年',
99
+ yy : '%d 年'
100
+ }
101
+ });
102
+
103
+ return zh_hk;
104
+
105
+ }));
bp-core/js/vendor/moment-js/locale/zh-hk.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return b});
bp-core/js/vendor/moment-js/locale/zh-tw.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js locale configuration
2
+ //! locale : Chinese (Taiwan) [zh-tw]
3
+ //! author : Ben : https://github.com/ben-lin
4
+ //! author : Chris Lam : https://github.com/hehachris
5
+
6
+ ;(function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined'
8
+ && typeof require === 'function' ? factory(require('../moment')) :
9
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
+ factory(global.moment)
11
+ }(this, function (moment) { 'use strict';
12
+
13
+
14
+ var zh_tw = moment.defineLocale('zh-tw', {
15
+ months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
16
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
17
+ weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18
+ weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
19
+ weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
20
+ longDateFormat : {
21
+ LT : 'Ah點mm分',
22
+ LTS : 'Ah點m分s秒',
23
+ L : 'YYYY年MMMD日',
24
+ LL : 'YYYY年MMMD日',
25
+ LLL : 'YYYY年MMMD日Ah點mm分',
26
+ LLLL : 'YYYY年MMMD日ddddAh點mm分',
27
+ l : 'YYYY年MMMD日',
28
+ ll : 'YYYY年MMMD日',
29
+ lll : 'YYYY年MMMD日Ah點mm分',
30
+ llll : 'YYYY年MMMD日ddddAh點mm分'
31
+ },
32
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
33
+ meridiemHour : function (hour, meridiem) {
34
+ if (hour === 12) {
35
+ hour = 0;
36
+ }
37
+ if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
38
+ return hour;
39
+ } else if (meridiem === '中午') {
40
+ return hour >= 11 ? hour : hour + 12;
41
+ } else if (meridiem === '下午' || meridiem === '晚上') {
42
+ return hour + 12;
43
+ }
44
+ },
45
+ meridiem : function (hour, minute, isLower) {
46
+ var hm = hour * 100 + minute;
47
+ if (hm < 600) {
48
+ return '凌晨';
49
+ } else if (hm < 900) {
50
+ return '早上';
51
+ } else if (hm < 1130) {
52
+ return '上午';
53
+ } else if (hm < 1230) {
54
+ return '中午';
55
+ } else if (hm < 1800) {
56
+ return '下午';
57
+ } else {
58
+ return '晚上';
59
+ }
60
+ },
61
+ calendar : {
62
+ sameDay : '[今天]LT',
63
+ nextDay : '[明天]LT',
64
+ nextWeek : '[下]ddddLT',
65
+ lastDay : '[昨天]LT',
66
+ lastWeek : '[上]ddddLT',
67
+ sameElse : 'L'
68
+ },
69
+ ordinalParse: /\d{1,2}(日|月|週)/,
70
+ ordinal : function (number, period) {
71
+ switch (period) {
72
+ case 'd' :
73
+ case 'D' :
74
+ case 'DDD' :
75
+ return number + '日';
76
+ case 'M' :
77
+ return number + '月';
78
+ case 'w' :
79
+ case 'W' :
80
+ return number + '週';
81
+ default :
82
+ return number;
83
+ }
84
+ },
85
+ relativeTime : {
86
+ future : '%s內',
87
+ past : '%s前',
88
+ s : '幾秒',
89
+ m : '1 分鐘',
90
+ mm : '%d 分鐘',
91
+ h : '1 小時',
92
+ hh : '%d 小時',
93
+ d : '1 天',
94
+ dd : '%d 天',
95
+ M : '1 個月',
96
+ MM : '%d 個月',
97
+ y : '1 年',
98
+ yy : '%d 年'
99
+ }
100
+ });
101
+
102
+ return zh_tw;
103
+
104
+ }));
bp-core/js/vendor/moment-js/locale/zh-tw.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?b(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],b):b(a.moment)}(this,function(a){"use strict";var b=a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return b});
bp-core/js/vendor/moment-js/moment.js ADDED
@@ -0,0 +1,4234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment.js
2
+ //! version : 2.15.1
3
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4
+ //! license : MIT
5
+ //! momentjs.com
6
+
7
+ ;(function (global, factory) {
8
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
9
+ typeof define === 'function' && define.amd ? define(factory) :
10
+ global.moment = factory()
11
+ }(this, function () { 'use strict';
12
+
13
+ var hookCallback;
14
+
15
+ function utils_hooks__hooks () {
16
+ return hookCallback.apply(null, arguments);
17
+ }
18
+
19
+ // This is done to register the method called with moment()
20
+ // without creating circular dependencies.
21
+ function setHookCallback (callback) {
22
+ hookCallback = callback;
23
+ }
24
+
25
+ function isArray(input) {
26
+ return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
27
+ }
28
+
29
+ function isObject(input) {
30
+ // IE8 will treat undefined and null as object if it wasn't for
31
+ // input != null
32
+ return input != null && Object.prototype.toString.call(input) === '[object Object]';
33
+ }
34
+
35
+ function isObjectEmpty(obj) {
36
+ var k;
37
+ for (k in obj) {
38
+ // even if its not own property I'd still call it non-empty
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+
44
+ function isDate(input) {
45
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
46
+ }
47
+
48
+ function map(arr, fn) {
49
+ var res = [], i;
50
+ for (i = 0; i < arr.length; ++i) {
51
+ res.push(fn(arr[i], i));
52
+ }
53
+ return res;
54
+ }
55
+
56
+ function hasOwnProp(a, b) {
57
+ return Object.prototype.hasOwnProperty.call(a, b);
58
+ }
59
+
60
+ function extend(a, b) {
61
+ for (var i in b) {
62
+ if (hasOwnProp(b, i)) {
63
+ a[i] = b[i];
64
+ }
65
+ }
66
+
67
+ if (hasOwnProp(b, 'toString')) {
68
+ a.toString = b.toString;
69
+ }
70
+
71
+ if (hasOwnProp(b, 'valueOf')) {
72
+ a.valueOf = b.valueOf;
73
+ }
74
+
75
+ return a;
76
+ }
77
+
78
+ function create_utc__createUTC (input, format, locale, strict) {
79
+ return createLocalOrUTC(input, format, locale, strict, true).utc();
80
+ }
81
+
82
+ function defaultParsingFlags() {
83
+ // We need to deep clone this object.
84
+ return {
85
+ empty : false,
86
+ unusedTokens : [],
87
+ unusedInput : [],
88
+ overflow : -2,
89
+ charsLeftOver : 0,
90
+ nullInput : false,
91
+ invalidMonth : null,
92
+ invalidFormat : false,
93
+ userInvalidated : false,
94
+ iso : false,
95
+ parsedDateParts : [],
96
+ meridiem : null
97
+ };
98
+ }
99
+
100
+ function getParsingFlags(m) {
101
+ if (m._pf == null) {
102
+ m._pf = defaultParsingFlags();
103
+ }
104
+ return m._pf;
105
+ }
106
+
107
+ var some;
108
+ if (Array.prototype.some) {
109
+ some = Array.prototype.some;
110
+ } else {
111
+ some = function (fun) {
112
+ var t = Object(this);
113
+ var len = t.length >>> 0;
114
+
115
+ for (var i = 0; i < len; i++) {
116
+ if (i in t && fun.call(this, t[i], i, t)) {
117
+ return true;
118
+ }
119
+ }
120
+
121
+ return false;
122
+ };
123
+ }
124
+
125
+ function valid__isValid(m) {
126
+ if (m._isValid == null) {
127
+ var flags = getParsingFlags(m);
128
+ var parsedParts = some.call(flags.parsedDateParts, function (i) {
129
+ return i != null;
130
+ });
131
+ var isNowValid = !isNaN(m._d.getTime()) &&
132
+ flags.overflow < 0 &&
133
+ !flags.empty &&
134
+ !flags.invalidMonth &&
135
+ !flags.invalidWeekday &&
136
+ !flags.nullInput &&
137
+ !flags.invalidFormat &&
138
+ !flags.userInvalidated &&
139
+ (!flags.meridiem || (flags.meridiem && parsedParts));
140
+
141
+ if (m._strict) {
142
+ isNowValid = isNowValid &&
143
+ flags.charsLeftOver === 0 &&
144
+ flags.unusedTokens.length === 0 &&
145
+ flags.bigHour === undefined;
146
+ }
147
+
148
+ if (Object.isFrozen == null || !Object.isFrozen(m)) {
149
+ m._isValid = isNowValid;
150
+ }
151
+ else {
152
+ return isNowValid;
153
+ }
154
+ }
155
+ return m._isValid;
156
+ }
157
+
158
+ function valid__createInvalid (flags) {
159
+ var m = create_utc__createUTC(NaN);
160
+ if (flags != null) {
161
+ extend(getParsingFlags(m), flags);
162
+ }
163
+ else {
164
+ getParsingFlags(m).userInvalidated = true;
165
+ }
166
+
167
+ return m;
168
+ }
169
+
170
+ function isUndefined(input) {
171
+ return input === void 0;
172
+ }
173
+
174
+ // Plugins that add properties should also add the key here (null value),
175
+ // so we can properly clone ourselves.
176
+ var momentProperties = utils_hooks__hooks.momentProperties = [];
177
+
178
+ function copyConfig(to, from) {
179
+ var i, prop, val;
180
+
181
+ if (!isUndefined(from._isAMomentObject)) {
182
+ to._isAMomentObject = from._isAMomentObject;
183
+ }
184
+ if (!isUndefined(from._i)) {
185
+ to._i = from._i;
186
+ }
187
+ if (!isUndefined(from._f)) {
188
+ to._f = from._f;
189
+ }
190
+ if (!isUndefined(from._l)) {
191
+ to._l = from._l;
192
+ }
193
+ if (!isUndefined(from._strict)) {
194
+ to._strict = from._strict;
195
+ }
196
+ if (!isUndefined(from._tzm)) {
197
+ to._tzm = from._tzm;
198
+ }
199
+ if (!isUndefined(from._isUTC)) {
200
+ to._isUTC = from._isUTC;
201
+ }
202
+ if (!isUndefined(from._offset)) {
203
+ to._offset = from._offset;
204
+ }
205
+ if (!isUndefined(from._pf)) {
206
+ to._pf = getParsingFlags(from);
207
+ }
208
+ if (!isUndefined(from._locale)) {
209
+ to._locale = from._locale;
210
+ }
211
+
212
+ if (momentProperties.length > 0) {
213
+ for (i in momentProperties) {
214
+ prop = momentProperties[i];
215
+ val = from[prop];
216
+ if (!isUndefined(val)) {
217
+ to[prop] = val;
218
+ }
219
+ }
220
+ }
221
+
222
+ return to;
223
+ }
224
+
225
+ var updateInProgress = false;
226
+
227
+ // Moment prototype object
228
+ function Moment(config) {
229
+ copyConfig(this, config);
230
+ this._d = new Date(config._d != null ? config._d.getTime() : NaN);
231
+ // Prevent infinite loop in case updateOffset creates new moment
232
+ // objects.
233
+ if (updateInProgress === false) {
234
+ updateInProgress = true;
235
+ utils_hooks__hooks.updateOffset(this);
236
+ updateInProgress = false;
237
+ }
238
+ }
239
+
240
+ function isMoment (obj) {
241
+ return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
242
+ }
243
+
244
+ function absFloor (number) {
245
+ if (number < 0) {
246
+ // -0 -> 0
247
+ return Math.ceil(number) || 0;
248
+ } else {
249
+ return Math.floor(number);
250
+ }
251
+ }
252
+
253
+ function toInt(argumentForCoercion) {
254
+ var coercedNumber = +argumentForCoercion,
255
+ value = 0;
256
+
257
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
258
+ value = absFloor(coercedNumber);
259
+ }
260
+
261
+ return value;
262
+ }
263
+
264
+ // compare two arrays, return the number of differences
265
+ function compareArrays(array1, array2, dontConvert) {
266
+ var len = Math.min(array1.length, array2.length),
267
+ lengthDiff = Math.abs(array1.length - array2.length),
268
+ diffs = 0,
269
+