All-in-One Event Calendar - Version 1.6

Version Description

Premium

Download this release

Release Info

Developer yani.iliev
Plugin Icon 128x128 All-in-One Event Calendar
Version 1.6
Comparing to
See all releases

Code changes from version 1.5 to 1.6

Files changed (222) hide show
  1. all-in-one-event-calendar.php +146 -65
  2. app/controller/class-ai1ec-app-controller.php +197 -147
  3. app/controller/class-ai1ec-calendar-controller.php +37 -24
  4. app/controller/class-ai1ec-events-controller.php +69 -59
  5. app/controller/class-ai1ec-importer-controller.php +3 -3
  6. app/controller/class-ai1ec-settings-controller.php +121 -111
  7. app/controller/class-ai1ec-themes-controller.php +164 -0
  8. app/helper/class-ai1ec-app-helper.php +403 -266
  9. app/helper/class-ai1ec-calendar-helper.php +20 -11
  10. app/helper/class-ai1ec-events-helper.php +69 -39
  11. app/helper/class-ai1ec-exporter-helper.php +1 -1
  12. app/helper/class-ai1ec-settings-helper.php +90 -73
  13. app/helper/class-ai1ec-view-helper.php +430 -13
  14. app/model/class-ai1ec-event.php +69 -45
  15. app/model/class-ai1ec-settings.php +127 -67
  16. app/view/{admin_notices.php → admin/admin_notices.php} +0 -0
  17. app/view/admin/box_advanced_settings.php +7 -0
  18. app/view/{box_event_contact.php → admin/box_event_contact.php} +0 -0
  19. app/view/{box_event_cost.php → admin/box_event_cost.php} +0 -0
  20. app/view/admin/box_event_location.php +44 -0
  21. app/view/{box_eventbrite.php → admin/box_eventbrite.php} +0 -0
  22. app/view/{box_ics_import_settings.php → admin/box_feeds.php} +14 -1
  23. app/view/{box_general_settings.php → admin/box_general_settings.php} +25 -19
  24. app/view/{box_publish_button.php → admin/box_publish_button.php} +0 -0
  25. app/view/{box_repeat.php → admin/box_repeat.php} +0 -0
  26. app/view/admin/box_the_seed_studio.php +60 -0
  27. app/view/{box_time_and_date.php → admin/box_time_and_date.php} +0 -0
  28. app/view/admin/calendar_tasks.php +82 -0
  29. app/view/{class-ai1ec-agenda-widget.php → admin/class-ai1ec-agenda-widget.php} +5 -8
  30. {css → app/view/admin/css}/add_new_event.css +6 -1
  31. app/view/admin/css/admin.css +4 -0
  32. app/view/admin/css/bootstrap.min.css +9 -0
  33. {css → app/view/admin/css}/colorpicker.css +11 -1
  34. app/view/admin/css/dashboard.css +28 -0
  35. {css → app/view/admin/css}/datepicker.css +0 -0
  36. {css → app/view/admin/css}/jquery.autocomplete.css +0 -0
  37. app/view/admin/css/platform.css +61 -0
  38. {css → app/view/admin/css}/selector.css +0 -0
  39. app/view/admin/css/settings.css +139 -0
  40. {css → app/view/admin/css}/widget.css +0 -0
  41. app/view/{donate_button.php → admin/donate_button.php} +0 -0
  42. app/view/{event_categories-color_picker.php → admin/event_categories-color_picker.php} +0 -0
  43. app/view/{feed_row.php → admin/feed_row.php} +0 -0
  44. app/view/admin/font/fontawesome-webfont.eot +0 -0
  45. app/view/admin/font/fontawesome-webfont.svg +175 -0
  46. app/view/admin/font/fontawesome-webfont.svgz +0 -0
  47. app/view/admin/font/fontawesome-webfont.ttf +0 -0
  48. app/view/admin/font/fontawesome-webfont.woff +0 -0
  49. app/view/admin/img/admin-bar-sprite.png +0 -0
  50. {img → app/view/admin/img}/admin-menu.png +0 -0
  51. {img → app/view/admin/img}/ajax-loader.gif +0 -0
  52. app/view/admin/img/color-picker-default.png +0 -0
  53. {img → app/view/admin/img}/color-picker.png +0 -0
  54. {img → app/view/admin/img}/colorpicker_background.png +0 -0
  55. {img → app/view/admin/img}/colorpicker_hex.png +0 -0
  56. {img → app/view/admin/img}/colorpicker_hsb_b.png +0 -0
  57. {img → app/view/admin/img}/colorpicker_hsb_h.png +0 -0
  58. {img → app/view/admin/img}/colorpicker_hsb_s.png +0 -0
  59. {img → app/view/admin/img}/colorpicker_indic.gif +0 -0
  60. {img → app/view/admin/img}/colorpicker_overlay.png +0 -0
  61. {img → app/view/admin/img}/colorpicker_rgb_b.png +0 -0
  62. {img → app/view/admin/img}/colorpicker_rgb_g.png +0 -0
  63. {img → app/view/admin/img}/colorpicker_rgb_r.png +0 -0
  64. {img → app/view/admin/img}/colorpicker_select.gif +0 -0
  65. {img → app/view/admin/img}/colorpicker_submit.png +0 -0
  66. {img → app/view/admin/img}/custom_b.png +0 -0
  67. {img → app/view/admin/img}/custom_background.png +0 -0
  68. {img → app/view/admin/img}/custom_bl.png +0 -0
  69. {img → app/view/admin/img}/custom_br.png +0 -0
  70. {img → app/view/admin/img}/custom_hex.png +0 -0
  71. {img → app/view/admin/img}/custom_hsb_b.png +0 -0
  72. {img → app/view/admin/img}/custom_hsb_h.png +0 -0
  73. {img → app/view/admin/img}/custom_hsb_s.png +0 -0
  74. {img → app/view/admin/img}/custom_indic.gif +0 -0
  75. {img → app/view/admin/img}/custom_l.png +0 -0
  76. {img → app/view/admin/img}/custom_r.png +0 -0
  77. {img → app/view/admin/img}/custom_rgb_b.png +0 -0
  78. {img → app/view/admin/img}/custom_rgb_g.png +0 -0
  79. {img → app/view/admin/img}/custom_rgb_r.png +0 -0
  80. {img → app/view/admin/img}/custom_submit.png +0 -0
  81. {img → app/view/admin/img}/custom_t.png +0 -0
  82. {img → app/view/admin/img}/custom_tl.png +0 -0
  83. {img → app/view/admin/img}/custom_tr.png +0 -0
  84. {img → app/view/admin/img}/datepicker_b.png +0 -0
  85. {img → app/view/admin/img}/datepicker_bl.png +0 -0
  86. {img → app/view/admin/img}/datepicker_br.png +0 -0
  87. {img → app/view/admin/img}/datepicker_l.png +0 -0
  88. {img → app/view/admin/img}/datepicker_r.png +0 -0
  89. {img → app/view/admin/img}/datepicker_t.png +0 -0
  90. {img → app/view/admin/img}/datepicker_tl.png +0 -0
  91. {img → app/view/admin/img}/datepicker_tr.png +0 -0
  92. {img → app/view/admin/img}/field.png +0 -0
  93. {img → app/view/admin/img}/icon-close.png +0 -0
  94. {img → app/view/admin/img}/indicator.gif +0 -0
  95. app/view/admin/img/logo.png +0 -0
  96. {img → app/view/admin/img}/slider.png +0 -0
  97. app/view/{import.php → admin/import.php} +0 -0
  98. {js → app/view/admin/js}/add_new_event.js +206 -105
  99. {js → app/view/admin/js}/colorpicker.js +21 -8
  100. {js → app/view/admin/js}/datepicker.js +0 -0
  101. {js → app/view/admin/js}/element-selector.js +0 -0
  102. {js → app/view/admin/js}/geo_autocomplete.js +0 -0
  103. {js → app/view/admin/js}/jquery-tools-1.2.5.min.js +0 -0
  104. {js → app/view/admin/js}/jquery.autocomplete_geomod.js +0 -0
  105. {js → app/view/admin/js}/jquery.blockUI.js +0 -0
  106. {js → app/view/admin/js}/jquery.calendrical.js +0 -0
  107. {js → app/view/admin/js}/jquery.inputdate.js +0 -0
  108. {js → app/view/admin/js}/jquery.timespan.js +0 -0
  109. app/view/admin/js/platform-all.js +11 -0
  110. app/view/admin/js/platform.js +15 -0
  111. {js → app/view/admin/js}/settings.js +0 -0
  112. {js → app/view/admin/js}/widget.js +0 -0
  113. app/view/admin/less/bootstrap.less +82 -0
  114. app/view/admin/less/build-css.sh +10 -0
  115. app/view/admin/less/button-groups.less +172 -0
  116. app/view/admin/less/buttons.less +187 -0
  117. app/view/admin/less/dropdowns.less +148 -0
  118. app/view/admin/less/font-awesome.less +264 -0
  119. app/view/admin/less/grid.less +5 -0
  120. app/view/admin/less/hero-unit.less +22 -0
  121. app/view/admin/less/mixins.less +614 -0
  122. app/view/admin/less/navs.less +363 -0
  123. app/view/admin/less/reset.less +126 -0
  124. app/view/admin/less/scaffolding.less +29 -0
  125. app/view/admin/less/type.less +234 -0
  126. app/view/admin/less/utilities.less +23 -0
  127. app/view/admin/less/variables.less +205 -0
  128. app/view/{on_the_select.php → admin/on_the_select.php} +0 -0
  129. app/view/{row_daily.php → admin/row_daily.php} +0 -0
  130. app/view/{row_monthly.php → admin/row_monthly.php} +0 -0
  131. app/view/{row_weekly.php → admin/row_weekly.php} +0 -0
  132. app/view/{row_yearly.php → admin/row_yearly.php} +0 -0
  133. app/view/{save_successful.php → admin/save_successful.php} +0 -0
  134. app/view/{settings.php → admin/settings.php} +1 -1
  135. app/view/{subscription_button.php → admin/subscription_button.php} +0 -0
  136. app/view/agenda-widget-form.php +0 -69
  137. app/view/agenda-widget.php +0 -81
  138. app/view/box_event_location.php +0 -42
  139. app/view/box_the_seed_studio.php +0 -56
  140. app/view/calendar.php +0 -128
  141. app/view/event-excerpt.php +0 -6
  142. app/view/event-multi.php +0 -56
  143. app/view/oneday.php +0 -137
  144. css/calendar.css +0 -1009
  145. css/event.css +0 -202
  146. css/general.css +0 -356
  147. css/settings.css +0 -185
  148. img/agenda-view.png +0 -0
  149. img/blank.gif +0 -0
  150. img/month-view.png +0 -0
  151. img/oneday-view.png +0 -0
  152. img/scroll-down.png +0 -0
  153. img/scroll-up.png +0 -0
  154. img/week-view.png +0 -0
  155. language/all-in-one-event-calendar.pot +611 -517
  156. lib/class-ai1ec-updater.php +103 -0
  157. lib/global-functions.php +11 -29
  158. readme.txt +41 -19
  159. screenshot-11.jpg +0 -0
  160. screenshot-2.jpg +0 -0
  161. themes-ai1ec/vortex/agenda-widget.php +85 -0
  162. {app/view → themes-ai1ec/vortex}/agenda.php +30 -27
  163. themes-ai1ec/vortex/calendar.php +125 -0
  164. themes-ai1ec/vortex/css/calendar.css +1 -0
  165. themes-ai1ec/vortex/css/event.css +1 -0
  166. themes-ai1ec/vortex/css/general.css +1 -0
  167. themes-ai1ec/vortex/css/print.css +1 -0
  168. themes-ai1ec/vortex/event-excerpt.php +6 -0
  169. {app/view → themes-ai1ec/vortex}/event-map.php +3 -3
  170. themes-ai1ec/vortex/event-multi.php +56 -0
  171. {app/view → themes-ai1ec/vortex}/event-single-footer.php +2 -1
  172. {app/view → themes-ai1ec/vortex}/event-single.php +7 -7
  173. themes-ai1ec/vortex/font/fontawesome-webfont.eot +0 -0
  174. themes-ai1ec/vortex/font/fontawesome-webfont.svg +175 -0
  175. themes-ai1ec/vortex/font/fontawesome-webfont.svgz +0 -0
  176. themes-ai1ec/vortex/font/fontawesome-webfont.ttf +0 -0
  177. themes-ai1ec/vortex/font/fontawesome-webfont.woff +0 -0
  178. themes-ai1ec/vortex/functions.php +19 -0
  179. themes-ai1ec/vortex/img/agenda-view.png +0 -0
  180. themes-ai1ec/vortex/img/ajax-loader.gif +0 -0
  181. {img → themes-ai1ec/vortex/img}/google-calendar.png +0 -0
  182. {img → themes-ai1ec/vortex/img}/ics-icon.png +0 -0
  183. themes-ai1ec/vortex/img/month-view.png +0 -0
  184. themes-ai1ec/vortex/img/oneday-view.png +0 -0
  185. themes-ai1ec/vortex/img/week-view.png +0 -0
  186. themes-ai1ec/vortex/index.php +0 -0
  187. themes-ai1ec/vortex/js/bootstrap-dropdown.js +93 -0
  188. themes-ai1ec/vortex/js/bootstrap-tooltip.js +272 -0
  189. themes-ai1ec/vortex/js/build-js.sh +10 -0
  190. {js → themes-ai1ec/vortex/js}/calendar.js +860 -627
  191. themes-ai1ec/vortex/js/calendar.min.js +1 -0
  192. {js → themes-ai1ec/vortex/js}/event.js +3 -3
  193. themes-ai1ec/vortex/js/event.min.js +1 -0
  194. themes-ai1ec/vortex/js/general.js +23 -0
  195. themes-ai1ec/vortex/js/general.min.js +1 -0
  196. {js → themes-ai1ec/vortex/js}/jquery.scrollTo-min.js +0 -0
  197. {js → themes-ai1ec/vortex/js}/jquery.tablescroll.js +0 -0
  198. {js → themes-ai1ec/vortex/js}/modernizr.custom.78720.js +0 -0
  199. themes-ai1ec/vortex/less/build-css.sh +13 -0
  200. themes-ai1ec/vortex/less/button-groups.less +172 -0
  201. themes-ai1ec/vortex/less/buttons.less +187 -0
  202. themes-ai1ec/vortex/less/calendar.less +837 -0
  203. themes-ai1ec/vortex/less/dropdowns.less +148 -0
  204. themes-ai1ec/vortex/less/event.less +208 -0
  205. themes-ai1ec/vortex/less/font-awesome.less +264 -0
  206. themes-ai1ec/vortex/less/general.less +313 -0
  207. themes-ai1ec/vortex/less/grid.less +5 -0
  208. themes-ai1ec/vortex/less/mixins-custom.less +65 -0
  209. themes-ai1ec/vortex/less/mixins.less +614 -0
  210. themes-ai1ec/vortex/less/navs.less +363 -0
  211. themes-ai1ec/vortex/less/print.less +30 -0
  212. themes-ai1ec/vortex/less/reset.less +126 -0
  213. themes-ai1ec/vortex/less/scaffolding.less +29 -0
  214. themes-ai1ec/vortex/less/tooltip.less +35 -0
  215. themes-ai1ec/vortex/less/type.less +234 -0
  216. themes-ai1ec/vortex/less/utilities.less +23 -0
  217. themes-ai1ec/vortex/less/variables.less +235 -0
  218. {app/view → themes-ai1ec/vortex}/month.php +32 -19
  219. themes-ai1ec/vortex/oneday.php +165 -0
  220. themes-ai1ec/vortex/screenshot.png +0 -0
  221. themes-ai1ec/vortex/style.css +9 -0
  222. {app/view → themes-ai1ec/vortex}/week.php +37 -22
all-in-one-event-calendar.php CHANGED
@@ -1,143 +1,218 @@
1
  <?php
2
  /**
3
- * Plugin Name: All-in-One Event Calendar
4
- * Plugin URI: http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/
5
- * Description: An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
6
- * Author: The Seed Studio
7
- * Author URI: http://theseednetwork.com/
8
- * Version: 1.5
9
- */ // NOTE: When updating version number also update first line of app/view/calendar.php and AI1EC_VERSION constant listed below
10
  @set_time_limit( 0 );
11
- @ini_set( "memory_limit", "256M" );
12
- @ini_set( "max_input_time", "-1" );
13
 
14
  // ===============
15
  // = Plugin Name =
16
  // ===============
17
- define( 'AI1EC_PLUGIN_NAME', 'all-in-one-event-calendar' );
18
 
19
  // ===================
20
  // = Plugin Basename =
21
  // ===================
22
- define( 'AI1EC_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
23
 
24
  // ==================
25
  // = Plugin Version =
26
  // ==================
27
- define( 'AI1EC_VERSION', '1.5' );
28
 
29
  // ====================
30
  // = Database Version =
31
  // ====================
32
- define( 'AI1EC_DB_VERSION', 107 );
33
 
34
  // ================
35
  // = Cron Version =
36
  // ================
37
- define( 'AI1EC_CRON_VERSION', 102 );
38
- define( 'AI1EC_N_CRON_VERSION', 101 );
39
- define( 'AI1EC_N_CRON_FREQ', 'daily' );
40
 
41
  // ===============
42
  // = Plugin Path =
43
  // ===============
44
- define( 'AI1EC_PATH', dirname( __FILE__ ) );
45
 
46
- // ===============
47
- // = Images Path =
48
- // ===============
49
- define( 'AI1EC_IMAGE_PATH', AI1EC_PATH . '/img' );
50
 
51
- // ============
52
- // = CSS Path =
53
- // ============
54
- define( 'AI1EC_CSS_PATH', AI1EC_PATH . '/css' );
55
 
56
- // ===========
57
- // = JS Path =
58
- // ===========
59
- define( 'AI1EC_JS_PATH', AI1EC_PATH . '/js' );
60
 
61
  // ============
62
  // = Lib Path =
63
  // ============
64
- define( 'AI1EC_LIB_PATH', AI1EC_PATH . '/lib' );
65
 
66
  // =================
67
  // = Language Path =
68
  // =================
69
- define( 'AI1EC_LANGUAGE_PATH', AI1EC_PLUGIN_NAME . '/language' );
70
 
71
  // ============
72
  // = App Path =
73
  // ============
74
- define( 'AI1EC_APP_PATH', AI1EC_PATH . '/app' );
75
 
76
  // ===================
77
  // = Controller Path =
78
  // ===================
79
- define( 'AI1EC_CONTROLLER_PATH', AI1EC_APP_PATH . '/controller' );
80
 
81
  // ==============
82
  // = Model Path =
83
  // ==============
84
- define( 'AI1EC_MODEL_PATH', AI1EC_APP_PATH . '/model' );
85
 
86
  // =============
87
  // = View Path =
88
  // =============
89
- define( 'AI1EC_VIEW_PATH', AI1EC_APP_PATH . '/view' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
  // ===============
92
  // = Helper Path =
93
  // ===============
94
- define( 'AI1EC_HELPER_PATH', AI1EC_APP_PATH . '/helper' );
95
 
96
  // ==================
97
  // = Exception Path =
98
  // ==================
99
- define( 'AI1EC_EXCEPTION_PATH', AI1EC_APP_PATH . '/exception' );
100
 
101
  // ==============
102
  // = Plugin Url =
103
  // ==============
104
- define( 'AI1EC_URL', plugins_url( '', __FILE__ ) );
105
 
106
  // ==============
107
  // = Images URL =
108
  // ==============
109
- define( 'AI1EC_IMAGE_URL', AI1EC_URL . '/img' );
110
 
111
  // ===========
112
  // = CSS URL =
113
  // ===========
114
- define( 'AI1EC_CSS_URL', AI1EC_URL . '/css' );
115
 
116
  // ==========
117
  // = JS URL =
118
  // ==========
119
- define( 'AI1EC_JS_URL', AI1EC_URL . '/js' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
 
121
  // =============
122
  // = POST TYPE =
123
  // =============
124
- define( 'AI1EC_POST_TYPE', 'ai1ec_event' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
  // ================
127
  // = RSS FEED URL =
128
  // ================
129
- define( 'AI1EC_RSS_FEED', 'http://feeds.feedburner.com/ai1ec' );
130
 
131
  // ======================================
132
  // = FAKE CATEGORY ID FOR CALENDAR PAGE =
133
  // ======================================
134
- define( 'AI1EC_FAKE_CATEGORY_ID', -4113473042 ); // Numeric-only 1337-speak of AI1EC_CALENDAR - ID must be numeric
135
 
136
  // ==============
137
  // = SCRIPT URL =
138
  // ==============
139
  $ai1ec_script_url = get_option( 'home' ) . '/?plugin=' . AI1EC_PLUGIN_NAME;
140
- define( 'AI1EC_SCRIPT_URL', $ai1ec_script_url );
141
 
142
  // ====================================================
143
  // = Convert http:// to webcal:// in AI1EC_SCRIPT_URL =
@@ -148,7 +223,7 @@ $tmp = str_replace( 'http://', 'webcal://', AI1EC_SCRIPT_URL );
148
  // ==============
149
  // = EXPORT URL =
150
  // ==============
151
- define( 'AI1EC_EXPORT_URL', "$tmp&controller=ai1ec_exporter_controller&action=export_events&cb=".rand() );
152
 
153
  // ====================================
154
  // = Include iCal parsers and helpers =
@@ -187,12 +262,18 @@ function ai1ec_autoload( $class_name )
187
  AI1EC_EXCEPTION_PATH,
188
  AI1EC_LIB_PATH,
189
  AI1EC_VIEW_PATH,
 
 
 
190
  );
191
 
 
 
 
192
  // Search each path for the class.
193
  foreach( $paths as $path ) {
194
  if( file_exists( "$path/class-$class_name.php" ) )
195
- require_once( "$path/class-$class_name.php" );
196
  }
197
  }
198
  spl_autoload_register( 'ai1ec_autoload' );
@@ -210,11 +291,11 @@ $ai1ec_settings = Ai1ec_Settings::get_instance();
210
  // ================================
211
  global $ai1ec_view_helper,
212
  $ai1ec_settings_helper,
213
- $ai1ec_calendar_helper,
214
- $ai1ec_app_helper,
215
- $ai1ec_events_helper,
216
- $ai1ec_importer_helper,
217
- $ai1ec_exporter_helper;
218
 
219
  $ai1ec_view_helper = Ai1ec_View_Helper::get_instance();
220
  $ai1ec_settings_helper = Ai1ec_Settings_Helper::get_instance();
@@ -224,7 +305,6 @@ $ai1ec_events_helper = Ai1ec_Events_Helper::get_instance();
224
  $ai1ec_importer_helper = Ai1ec_Importer_Helper::get_instance();
225
  $ai1ec_exporter_helper = Ai1ec_Exporter_Helper::get_instance();
226
 
227
-
228
  // ====================================
229
  // = Initialize and setup CONTROLLERS =
230
  // ====================================
@@ -233,16 +313,17 @@ global $ai1ec_app_controller,
233
  $ai1ec_events_controller,
234
  $ai1ec_calendar_controller,
235
  $ai1ec_importer_controller,
236
- $ai1ec_exporter_controller;
237
-
 
 
 
 
 
 
 
 
 
 
 
238
  $ai1ec_app_controller = Ai1ec_App_Controller::get_instance();
239
- $ai1ec_settings_controller = Ai1ec_Settings_Controller::get_instance();
240
- $ai1ec_events_controller = Ai1ec_Events_Controller::get_instance();
241
- $ai1ec_calendar_controller = Ai1ec_Calendar_Controller::get_instance();
242
- $ai1ec_importer_controller = Ai1ec_Importer_Controller::get_instance();
243
- $ai1ec_exporter_controller = Ai1ec_Exporter_Controller::get_instance();
244
-
245
- // ===================
246
- // = Call admin menu =
247
- // ===================
248
- $ai1ec_app_controller->setup_menus();
1
  <?php
2
  /**
3
+ * Plugin Name: All-in-One Calendar by Then.ly
4
+ * Plugin URI: http://then.ly/
5
+ * Description: A calendar system with month, week, day, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
6
+ * Author: Then.ly
7
+ * Author URI: http://then.ly/
8
+ * Version: 1.6
9
+ */
10
  @set_time_limit( 0 );
11
+ @ini_set( 'memory_limit', '256M' );
12
+ @ini_set( 'max_input_time', '-1' );
13
 
14
  // ===============
15
  // = Plugin Name =
16
  // ===============
17
+ define( 'AI1EC_PLUGIN_NAME', 'all-in-one-event-calendar' );
18
 
19
  // ===================
20
  // = Plugin Basename =
21
  // ===================
22
+ define( 'AI1EC_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
23
 
24
  // ==================
25
  // = Plugin Version =
26
  // ==================
27
+ define( 'AI1EC_VERSION', '1.6' );
28
 
29
  // ====================
30
  // = Database Version =
31
  // ====================
32
+ define( 'AI1EC_DB_VERSION', 108 );
33
 
34
  // ================
35
  // = Cron Version =
36
  // ================
37
+ define( 'AI1EC_CRON_VERSION', 102 );
38
+ define( 'AI1EC_N_CRON_VERSION', 101 );
39
+ define( 'AI1EC_N_CRON_FREQ', 'daily' );
40
 
41
  // ===============
42
  // = Plugin Path =
43
  // ===============
44
+ define( 'AI1EC_PATH', dirname( __FILE__ ) );
45
 
46
+ // ===================
47
+ // = CSS Folder name =
48
+ // ===================
49
+ define( 'AI1EC_CSS_FOLDER', 'css' );
50
 
51
+ // ==================
52
+ // = JS Folder name =
53
+ // ==================
54
+ define( 'AI1EC_JS_FOLDER', 'js' );
55
 
56
+ // =====================
57
+ // = Image folder name =
58
+ // =====================
59
+ define( 'AI1EC_IMG_FOLDER', 'img' );
60
 
61
  // ============
62
  // = Lib Path =
63
  // ============
64
+ define( 'AI1EC_LIB_PATH', AI1EC_PATH . '/lib' );
65
 
66
  // =================
67
  // = Language Path =
68
  // =================
69
+ define( 'AI1EC_LANGUAGE_PATH', AI1EC_PLUGIN_NAME . '/language' );
70
 
71
  // ============
72
  // = App Path =
73
  // ============
74
+ define( 'AI1EC_APP_PATH', AI1EC_PATH . '/app' );
75
 
76
  // ===================
77
  // = Controller Path =
78
  // ===================
79
+ define( 'AI1EC_CONTROLLER_PATH', AI1EC_APP_PATH . '/controller' );
80
 
81
  // ==============
82
  // = Model Path =
83
  // ==============
84
+ define( 'AI1EC_MODEL_PATH', AI1EC_APP_PATH . '/model' );
85
 
86
  // =============
87
  // = View Path =
88
  // =============
89
+ define( 'AI1EC_VIEW_PATH', AI1EC_APP_PATH . '/view' );
90
+
91
+ // ====================
92
+ // = Admin Theme Path =
93
+ // ====================
94
+ define( 'AI1EC_ADMIN_THEME_PATH', AI1EC_VIEW_PATH . '/admin' );
95
+
96
+ // ==================
97
+ // = Admin theme CSS path =
98
+ // ==================
99
+ define( 'AI1EC_ADMIN_THEME_CSS_PATH', AI1EC_ADMIN_THEME_PATH . '/' . AI1EC_CSS_FOLDER );
100
+
101
+ // =======================
102
+ // = Admin theme JS path =
103
+ // =======================
104
+ define( 'AI1EC_ADMIN_THEME_JS_PATH', AI1EC_ADMIN_THEME_PATH . '/' . AI1EC_JS_FOLDER );
105
+
106
+ // ========================
107
+ // = Admin theme IMG path =
108
+ // ========================
109
+ define( 'AI1EC_ADMIN_THEME_IMG_PATH', AI1EC_ADMIN_THEME_PATH . '/' . AI1EC_IMG_FOLDER );
110
 
111
  // ===============
112
  // = Helper Path =
113
  // ===============
114
+ define( 'AI1EC_HELPER_PATH', AI1EC_APP_PATH . '/helper' );
115
 
116
  // ==================
117
  // = Exception Path =
118
  // ==================
119
+ define( 'AI1EC_EXCEPTION_PATH', AI1EC_APP_PATH . '/exception' );
120
 
121
  // ==============
122
  // = Plugin Url =
123
  // ==============
124
+ define( 'AI1EC_URL', plugins_url( '', __FILE__ ) );
125
 
126
  // ==============
127
  // = Images URL =
128
  // ==============
129
+ define( 'AI1EC_IMAGE_URL', AI1EC_URL . '/' . AI1EC_IMG_FOLDER );
130
 
131
  // ===========
132
  // = CSS URL =
133
  // ===========
134
+ define( 'AI1EC_CSS_URL', AI1EC_URL . '/' . AI1EC_CSS_FOLDER );
135
 
136
  // ==========
137
  // = JS URL =
138
  // ==========
139
+ define( 'AI1EC_JS_URL', AI1EC_URL . '/' . AI1EC_JS_FOLDER );
140
+
141
+ // ================
142
+ // = Admin JS URL =
143
+ // ================
144
+ define( 'AI1EC_ADMIN_THEME_JS_URL', AI1EC_URL . '/app/view/admin/' . AI1EC_JS_FOLDER );
145
+
146
+ // =================
147
+ // = Admin CSS URL =
148
+ // =================
149
+ define( 'AI1EC_ADMIN_THEME_CSS_URL', AI1EC_URL . '/app/view/admin/' . AI1EC_CSS_FOLDER );
150
+
151
+ // =================
152
+ // = Admin IMG URL =
153
+ // =================
154
+ define( 'AI1EC_ADMIN_THEME_IMG_URL', AI1EC_URL . '/app/view/admin/' . AI1EC_IMG_FOLDER );
155
 
156
  // =============
157
  // = POST TYPE =
158
  // =============
159
+ define( 'AI1EC_POST_TYPE', 'ai1ec_event' );
160
+
161
+ // =====================================================
162
+ // = FEED SETTINGS PAGE BASE URL (wrap in admin_url()) =
163
+ // =====================================================
164
+ define( 'AI1EC_FEED_SETTINGS_BASE_URL', 'edit.php?post_type=' . AI1EC_POST_TYPE . '&page=' . AI1EC_PLUGIN_NAME . '-feeds' );
165
+
166
+ // ================================================
167
+ // = SETTINGS PAGE BASE URL (wrap in admin_url()) =
168
+ // ================================================
169
+ define( 'AI1EC_SETTINGS_BASE_URL', 'options-general.php?page=' . AI1EC_PLUGIN_NAME . '-settings' );
170
+
171
+ // ======================
172
+ // = Default Theme Name =
173
+ // ======================
174
+ define( 'AI1EC_DEFAULT_THEME_NAME', 'vortex' );
175
+
176
+ // =============================
177
+ // = Default Theme folder name =
178
+ // =============================
179
+ define( 'AI1EC_THEMES_FOLDER', 'themes-ai1ec' );
180
+
181
+ // ========================
182
+ // = AI1EC Theme location =
183
+ // ========================
184
+ define( 'AI1EC_THEMES_ROOT', WP_CONTENT_DIR . '/' . AI1EC_THEMES_FOLDER );
185
+
186
+ // ===================
187
+ // = AI1EC Theme URL =
188
+ // ===================
189
+ define( 'AI1EC_THEMES_URL', WP_CONTENT_URL . '/' . AI1EC_THEMES_FOLDER );
190
+
191
+ // ======================
192
+ // = Default theme path =
193
+ // ======================
194
+ define( 'AI1EC_DEFAULT_THEME_PATH', AI1EC_THEMES_ROOT . '/' . AI1EC_DEFAULT_THEME_NAME );
195
+
196
+ // =====================
197
+ // = Default theme url =
198
+ // =====================
199
+ define( 'AI1EC_DEFAULT_THEME_URL', AI1EC_THEMES_URL . '/' . AI1EC_DEFAULT_THEME_NAME );
200
 
201
  // ================
202
  // = RSS FEED URL =
203
  // ================
204
+ define( 'AI1EC_RSS_FEED', 'http://feeds.feedburner.com/ai1ec' );
205
 
206
  // ======================================
207
  // = FAKE CATEGORY ID FOR CALENDAR PAGE =
208
  // ======================================
209
+ define( 'AI1EC_FAKE_CATEGORY_ID', -4113473042 ); // Numeric-only 1337-speak of AI1EC_CALENDAR - ID must be numeric
210
 
211
  // ==============
212
  // = SCRIPT URL =
213
  // ==============
214
  $ai1ec_script_url = get_option( 'home' ) . '/?plugin=' . AI1EC_PLUGIN_NAME;
215
+ define( 'AI1EC_SCRIPT_URL', $ai1ec_script_url );
216
 
217
  // ====================================================
218
  // = Convert http:// to webcal:// in AI1EC_SCRIPT_URL =
223
  // ==============
224
  // = EXPORT URL =
225
  // ==============
226
+ define( 'AI1EC_EXPORT_URL', $tmp . "&controller=ai1ec_exporter_controller&action=export_events&cb=" . rand() );
227
 
228
  // ====================================
229
  // = Include iCal parsers and helpers =
262
  AI1EC_EXCEPTION_PATH,
263
  AI1EC_LIB_PATH,
264
  AI1EC_VIEW_PATH,
265
+ AI1EC_ADMIN_THEME_PATH,
266
+ get_option( 'ai1ec_current_theme_path', AI1EC_DEFAULT_THEME_PATH ),
267
+ AI1EC_DEFAULT_THEME_PATH
268
  );
269
 
270
+ // remove duplicates from the paths array
271
+ $paths = array_unique( $paths, SORT_STRING );
272
+
273
  // Search each path for the class.
274
  foreach( $paths as $path ) {
275
  if( file_exists( "$path/class-$class_name.php" ) )
276
+ require_once( "$path/class-$class_name.php" );
277
  }
278
  }
279
  spl_autoload_register( 'ai1ec_autoload' );
291
  // ================================
292
  global $ai1ec_view_helper,
293
  $ai1ec_settings_helper,
294
+ $ai1ec_calendar_helper,
295
+ $ai1ec_app_helper,
296
+ $ai1ec_events_helper,
297
+ $ai1ec_importer_helper,
298
+ $ai1ec_exporter_helper;
299
 
300
  $ai1ec_view_helper = Ai1ec_View_Helper::get_instance();
301
  $ai1ec_settings_helper = Ai1ec_Settings_Helper::get_instance();
305
  $ai1ec_importer_helper = Ai1ec_Importer_Helper::get_instance();
306
  $ai1ec_exporter_helper = Ai1ec_Exporter_Helper::get_instance();
307
 
 
308
  // ====================================
309
  // = Initialize and setup CONTROLLERS =
310
  // ====================================
313
  $ai1ec_events_controller,
314
  $ai1ec_calendar_controller,
315
  $ai1ec_importer_controller,
316
+ $ai1ec_exporter_controller,
317
+ $ai1ec_themes_controller;
318
+
319
+ $ai1ec_settings_controller = Ai1ec_Settings_Controller::get_instance();
320
+ $ai1ec_events_controller = Ai1ec_Events_Controller::get_instance();
321
+ $ai1ec_calendar_controller = Ai1ec_Calendar_Controller::get_instance();
322
+ $ai1ec_importer_controller = Ai1ec_Importer_Controller::get_instance();
323
+ $ai1ec_exporter_controller = Ai1ec_Exporter_Controller::get_instance();
324
+ $ai1ec_themes_controller = Ai1ec_Themes_Controller::get_instance();
325
+
326
+ // ==========================================================================
327
+ // = All app initialization is done in Ai1ec_App_Controller::__construct(). =
328
+ // ==========================================================================
329
  $ai1ec_app_controller = Ai1ec_App_Controller::get_instance();
 
 
 
 
 
 
 
 
 
 
app/controller/class-ai1ec-app-controller.php CHANGED
@@ -6,7 +6,6 @@
6
  // Created by The Seed Studio on 2011-07-13.
7
  //
8
 
9
-
10
  /**
11
  * Ai1ec_App_Controller class
12
  *
@@ -62,15 +61,16 @@ class Ai1ec_App_Controller {
62
  * Default constructor - application initialization
63
  **/
64
  private function __construct()
65
- {
66
  global $wpdb,
67
  $ai1ec_app_helper,
68
  $ai1ec_events_controller,
69
  $ai1ec_events_helper,
70
  $ai1ec_importer_controller,
71
- $ai1ec_exporter_controller,
72
  $ai1ec_settings_controller,
73
- $ai1ec_settings;
 
74
 
75
  // register_activation_hook
76
  register_activation_hook( AI1EC_PLUGIN_NAME . '/' . AI1EC_PLUGIN_NAME . '.php', array( &$this, 'activation_hook' ) );
@@ -86,30 +86,44 @@ class Ai1ec_App_Controller {
86
 
87
  // Install/update cron as necessary
88
  $this->install_cron();
89
-
90
  // Enable stats collection
91
  $this->install_n_cron();
92
 
 
 
 
 
 
 
 
 
93
  // ===========
94
  // = ACTIONS =
95
  // ===========
 
 
96
  // Create custom post type
97
- add_action( 'init', array( &$ai1ec_app_helper, 'create_post_type' ) );
98
  // Handle ICS export requests
99
- add_action( 'init', array( &$this, 'parse_standalone_request' ) );
100
  // General initialization
101
  add_action( 'init', array( &$ai1ec_events_controller, 'init' ) );
102
  // Load plugin text domain
103
  add_action( 'init', array( &$this, 'load_textdomain' ) );
104
  // Register The Event Calendar importer
105
  add_action( 'admin_init', array( &$ai1ec_importer_controller, 'register_importer' ) );
 
 
 
 
106
  // add content for our custom columns
107
  add_action( 'manage_posts_custom_column', array( &$ai1ec_app_helper, 'custom_columns' ), 10, 2 );
108
  // Add filtering dropdowns for event categories and tags
109
  add_action( 'restrict_manage_posts', array( &$ai1ec_app_helper, 'taxonomy_filter_restrict_manage_posts' ) );
110
  // Trigger display of page in front-end depending on request
111
  add_action( 'template_redirect', array( &$this, 'route_request' ) );
112
- // Add meta boxes to event creation/edit form
113
  add_action( 'add_meta_boxes', array( &$ai1ec_app_helper, 'add_meta_boxes' ) );
114
  add_filter( 'screen_layout_columns', array( &$ai1ec_app_helper, 'screen_layout_columns' ), 10, 2 );
115
  // Save event data when post is saved
@@ -126,42 +140,44 @@ class Ai1ec_App_Controller {
126
  add_action( 'created_events_categories', array( &$ai1ec_events_controller, 'created_events_categories' ) );
127
  add_action( 'edited_events_categories', array( &$ai1ec_events_controller, 'edited_events_categories' ) );
128
  add_action( 'admin_notices', array( &$ai1ec_app_helper, 'admin_notices' ) );
129
- // Scripts/styles for settings/widget screens
130
- add_action( 'admin_enqueue_scripts', array( &$ai1ec_settings_controller, 'admin_enqueue_scripts' ) );
131
  // Widgets
132
- add_action( 'widgets_init', create_function( '', "return register_widget( 'Ai1ec_Agenda_Widget' );" ) );
133
 
134
  // ===========
135
  // = FILTERS =
136
  // ===========
137
- add_filter( 'posts_orderby', array( &$ai1ec_app_helper, 'orderby' ), 10, 2 );
138
  // add custom column names and change existing columns
139
- add_filter( 'manage_ai1ec_event_posts_columns', array( &$ai1ec_app_helper, 'change_columns' ) );
140
  // filter the post lists by custom filters
141
- add_filter( 'parse_query', array( &$ai1ec_app_helper, 'taxonomy_filter_post_type_request' ) );
142
  // Filter event post content, in single- and multi-post views
143
- add_filter( 'the_content', array( &$ai1ec_events_controller, 'event_content' ), PHP_INT_MAX - 1 );
144
  // Override excerpt filters for proper event display in excerpt form
145
- add_filter( 'get_the_excerpt', array( &$ai1ec_events_controller, 'event_excerpt' ), 11 );
146
- add_filter( 'the_excerpt', array( &$ai1ec_events_controller, 'event_excerpt_noautop' ), 11 );
147
- remove_filter( 'the_excerpt', 'wpautop', 10 );
148
  // Update event post update messages
149
- add_filter( 'post_updated_messages', array( &$ai1ec_events_controller, 'post_updated_messages' ) );
150
  // Sort the custom columns
151
  add_filter( 'manage_edit-ai1ec_event_sortable_columns', array( &$ai1ec_app_helper, 'sortable_columns' ) );
152
- add_filter( 'map_meta_cap', array( &$ai1ec_app_helper, 'map_meta_cap' ), 10, 4 );
153
  // Inject event categories, only in front-end, depending on setting
154
  if( $ai1ec_settings->inject_categories && ! is_admin() ) {
155
  add_filter( 'get_terms', array( &$ai1ec_app_helper, 'inject_categories' ), 10, 3 );
156
  add_filter( 'wp_list_categories', array( &$ai1ec_app_helper, 'selected_category_link' ), 10, 2 );
157
  }
158
- // Rewrite event category URLs to point to calendar page
159
  add_filter( 'term_link', array( &$ai1ec_app_helper, 'calendar_term_link' ), 10, 3 );
160
- // add a link to settings page on the plugin list page
161
  add_filter( 'plugin_action_links_' . AI1EC_PLUGIN_BASENAME, array( &$ai1ec_settings_controller, 'plugin_action_links' ) );
162
- // add a link to donate page on plugin list page
163
  add_filter( 'plugin_row_meta', array( &$ai1ec_settings_controller, 'plugin_row_meta' ), 10, 2 );
164
  add_filter( 'post_type_link', array( &$ai1ec_events_helper, 'post_type_link' ), 10, 3 );
 
 
165
 
166
  // ========
167
  // = AJAX =
@@ -174,22 +190,22 @@ class Ai1ec_App_Controller {
174
  add_action( 'wp_ajax_ai1ec_flush_ics', array( &$ai1ec_settings_controller, 'flush_ics_feed' ) );
175
  // Update iCalendar feed
176
  add_action( 'wp_ajax_ai1ec_update_ics', array( &$ai1ec_settings_controller, 'update_ics_feed' ) );
177
-
178
  // RRule to Text
179
  add_action( 'wp_ajax_ai1ec_rrule_to_text', array( &$ai1ec_events_helper, 'convert_rrule_to_text' ) );
180
-
181
  // Display Repeat Box
182
  add_action( 'wp_ajax_ai1ec_get_repeat_box', array( &$ai1ec_events_helper, 'get_repeat_box' ) );
183
  add_action( 'wp_ajax_ai1ec_get_date_picker_box', array( &$ai1ec_events_helper, 'get_date_picker_box' ) );
184
-
185
  // Disable notification
186
  add_action( 'wp_ajax_ai1ec_disable_notification', array( &$ai1ec_settings_controller, 'disable_notification' ) );
187
-
188
  // ==============
189
  // = Shortcodes =
190
  // ==============
191
  add_shortcode( 'ai1ec', array( &$ai1ec_events_helper, 'shortcode' ) );
192
-
193
  }
194
 
195
  /**
@@ -200,12 +216,11 @@ class Ai1ec_App_Controller {
200
  * @return void
201
  **/
202
  function activation_hook() {
 
 
203
 
204
- // load plugin text domain
205
- $this->load_textdomain();
206
-
207
- // flush rewrite rules
208
- $this->rewrite_flush();
209
  }
210
 
211
  /**
@@ -216,11 +231,10 @@ class Ai1ec_App_Controller {
216
  * @return void
217
  **/
218
  function load_textdomain() {
219
- if( self::$_load_domain === FALSE ) {
220
- load_plugin_textdomain( AI1EC_PLUGIN_NAME, false, AI1EC_LANGUAGE_PATH );
221
- self::$_load_domain = TRUE;
222
-
223
- }
224
  }
225
 
226
  /**
@@ -255,30 +269,30 @@ class Ai1ec_App_Controller {
255
  // =======================
256
  $table_name = $wpdb->prefix . 'ai1ec_events';
257
  $sql = "CREATE TABLE $table_name (
258
- post_id bigint(20) NOT NULL,
259
- start datetime NOT NULL,
260
- end datetime,
261
- allday tinyint(1) NOT NULL,
262
- recurrence_rules longtext,
263
- exception_rules longtext,
264
- recurrence_dates longtext,
265
- exception_dates longtext,
266
- venue varchar(255),
267
- country varchar(255),
268
- address varchar(255),
269
- city varchar(255),
270
- province varchar(255),
271
- postal_code varchar(32),
272
- show_map tinyint(1),
273
- contact_name varchar(255),
274
- contact_phone varchar(32),
275
- contact_email varchar(128),
276
- cost varchar(255),
277
- ical_feed_url varchar(255),
278
- ical_source_url varchar(255),
279
- ical_organizer varchar(255),
280
- ical_contact varchar(255),
281
- ical_uid varchar(255),
282
  PRIMARY KEY (post_id)
283
  ) CHARACTER SET utf8;";
284
 
@@ -287,10 +301,10 @@ class Ai1ec_App_Controller {
287
  // ==========================
288
  $table_name = $wpdb->prefix . 'ai1ec_event_instances';
289
  $sql .= "CREATE TABLE $table_name (
290
- id bigint(20) NOT NULL AUTO_INCREMENT,
291
  post_id bigint(20) NOT NULL,
292
- start datetime NOT NULL,
293
- end datetime NOT NULL,
294
  PRIMARY KEY (id)
295
  ) CHARACTER SET utf8;";
296
 
@@ -299,20 +313,20 @@ class Ai1ec_App_Controller {
299
  // ======================
300
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
301
  $sql .= "CREATE TABLE $table_name (
302
- feed_id bigint(20) NOT NULL AUTO_INCREMENT,
303
- feed_url varchar(255) NOT NULL,
304
  feed_category bigint(20) NOT NULL,
305
- feed_tags varchar(255) NOT NULL,
306
  PRIMARY KEY (feed_id)
307
  ) CHARACTER SET utf8;";
308
 
309
- // ================================
310
  // = Create table category colors =
311
  // ================================
312
  $table_name = $wpdb->prefix . 'ai1ec_event_category_colors';
313
  $sql .= "CREATE TABLE $table_name (
314
- term_id bigint(20) NOT NULL,
315
- term_color varchar(255) NOT NULL,
316
  PRIMARY KEY (term_id)
317
  ) CHARACTER SET utf8;";
318
 
@@ -343,7 +357,7 @@ class Ai1ec_App_Controller {
343
  update_option( 'ai1ec_cron_version', AI1EC_CRON_VERSION );
344
  }
345
  }
346
-
347
  /**
348
  * install_notification_cron function
349
  *
@@ -353,19 +367,19 @@ class Ai1ec_App_Controller {
353
  **/
354
  function install_n_cron() {
355
  global $ai1ec_settings;
356
-
357
  // if stats are disabled, cancel the cron
358
  if( $ai1ec_settings->allow_statistics == false ) {
359
  // delete our scheduled crons
360
  wp_clear_scheduled_hook( 'ai1ec_n_cron_version' );
361
-
362
  // remove the cron version
363
  delete_option( 'ai1ec_n_cron_version' );
364
-
365
  // prevent the execution of the code below
366
  return;
367
  }
368
-
369
  // If existing CRON version is not consistent with current plugin's version,
370
  // or does not exist, then create/update cron using
371
  if( get_option( 'ai1ec_n_cron_version' ) != AI1EC_N_CRON_VERSION ) {
@@ -379,44 +393,62 @@ class Ai1ec_App_Controller {
379
  }
380
 
381
  /**
382
- * setup_menus function
383
- * Adds the hook to admin_menu that is pointing to menu member function
384
- *
385
- * @return void
386
- **/
387
- function setup_menus() {
388
- add_action( "admin_menu", array( &$this, "menu" ) );
389
- }
390
-
391
- /**
392
- * menu function
393
  * Display the admin menu items using the add_menu_page WP function.
394
  *
395
  * @return void
396
- **/
397
- function menu() {
398
  global $ai1ec_settings_controller,
399
- $ai1ec_settings_helper,
400
- $ai1ec_settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
 
402
  // =================
403
  // = Settings Page =
404
  // =================
405
  $ai1ec_settings->settings_page = add_submenu_page(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  'edit.php?post_type=' . AI1EC_POST_TYPE,
407
- __( 'Settings', AI1EC_PLUGIN_NAME ),
408
- __( 'Settings', AI1EC_PLUGIN_NAME ),
409
- 'manage_options',
410
- AI1EC_PLUGIN_NAME . "-settings",
411
- array( &$ai1ec_settings_controller, "view" )
412
  );
413
- // Create a hook for adding meta boxes
414
- add_action( "load-{$ai1ec_settings->settings_page}", array( &$ai1ec_settings_helper, 'add_meta_boxes') );
415
- // Load the meta boxes
416
- add_action( "load-{$ai1ec_settings->settings_page}", array( &$ai1ec_settings_controller, 'add_meta_boxes' ) );
417
  }
418
 
419
-
420
  /**
421
  * route_request function
422
  *
@@ -427,10 +459,11 @@ class Ai1ec_App_Controller {
427
  **/
428
  function route_request() {
429
  global $ai1ec_settings,
430
- $ai1ec_calendar_controller,
431
- $ai1ec_events_controller,
432
- $post;
433
-
 
434
  // regex pattern to match our shortcode [ai1ec]
435
  // \[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
436
  $out = array();
@@ -440,29 +473,29 @@ class Ai1ec_App_Controller {
440
 
441
  // Find out if the calendar page ID is defined, and we're on it
442
  if( $ai1ec_settings->calendar_page_id &&
443
- is_page( $ai1ec_settings->calendar_page_id ) )
444
  {
445
- // Proceed only if the page password is correctly entered OR
446
- // the page doesn't require a password
447
- if( ! post_password_required( $ai1ec_settings->calendar_page_id ) ) {
448
- ob_start();
449
- // Render view
450
- $ai1ec_calendar_controller->view();
451
- // Save page content to local variable
452
- $this->page_content = ob_get_contents();
453
- ob_end_clean();
454
-
455
- // Replace page content - make sure it happens at (almost) the very end of
456
- // page content filters (some themes are overly ambitious here)
457
- add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
458
- }
459
  } else if( isset( $out[2] ) && $out[2] == 'ai1ec' ) {
460
  // if content has [ai1ec] shortcode, display the calendar page
461
  $attr = shortcode_parse_atts( $out[3] );
462
  // Proceed only if the page password is correctly entered OR
463
- // the page doesn't require a password
464
- if( ! post_password_required( $post->ID ) ) {
465
- ob_start();
466
  if( isset( $attr["view"] ) && ! empty( $attr["view"] ) ) {
467
  switch( $attr["view"] ) {
468
  case "monthly":
@@ -495,9 +528,9 @@ class Ai1ec_App_Controller {
495
  // Parse categories by id
496
  if( isset( $attr["cat_id"] ) && ! empty( $attr["cat_id"] ) ) {
497
  // append cat_id to the ai1ec_cat_ids array
498
- $_REQUEST["ai1ec_cat_ids"] = ( isset( $_REQUEST["ai1ec_cat_ids"] ) && strlen( $_REQUEST["ai1ec_cat_ids"] ) > 0 )
499
- ? $_REQUEST["ai1ec_cat_ids"] . ',' . $attr["cat_id"]
500
- : $attr["cat_id"];
501
  }
502
 
503
  // Parse tags by name
@@ -519,25 +552,25 @@ class Ai1ec_App_Controller {
519
  if( isset( $attr["tag_id"] ) && ! empty( $attr["tag_id"] ) ) {
520
  // append tag_id to the ai1ec_tag_ids array
521
  $_REQUEST["ai1ec_tag_ids"] = ( isset( $_REQUEST["ai1ec_tag_ids"] ) && strlen( $_REQUEST["ai1ec_tag_ids"] ) > 0 )
522
- ? $_REQUEST["ai1ec_tag_ids"] . ',' . $attr["tag_id"]
523
- : $attr["tag_id"];
524
  }
525
 
526
  // Parse posts by id
527
  if( isset( $attr["post_id"] ) && ! empty( $attr["post_id"] ) ) {
528
  $_REQUEST["ai1ec_post_ids"] = $attr["post_id"];
529
  }
530
-
531
- // Render view
532
- $ai1ec_calendar_controller->view();
533
- // Save page content to local variable
534
- $this->page_content = ob_get_contents();
535
- ob_end_clean();
536
-
537
- // Replace page content - make sure it happens at (almost) the very end of
538
- // page content filters (some themes are overly ambitious here)
539
- add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
540
- }
541
  }
542
  }
543
 
@@ -551,16 +584,16 @@ class Ai1ec_App_Controller {
551
  $ai1ec_app_helper;
552
 
553
  $plugin = $ai1ec_app_helper->get_param('plugin');
554
- $action = $ai1ec_app_helper->get_param('action');
555
- $controller = $ai1ec_app_helper->get_param('controller');
556
 
557
  if( ! empty( $plugin ) && $plugin == AI1EC_PLUGIN_NAME && ! empty( $controller ) && ! empty( $action ) ) {
558
  if( $controller == "ai1ec_exporter_controller" ) :
559
- switch( $action ) :
560
- case 'export_events':
561
- $ai1ec_exporter_controller->export_events();
562
- break;
563
- endswitch;
564
  endif; // ai1ec_exporter_controller
565
  }
566
  }
@@ -580,11 +613,28 @@ class Ai1ec_App_Controller {
580
  // the calendar container div
581
  if( in_the_loop() )
582
  $content =
583
- '<div id="ai1ec-container" class="ai1ec-container">' .
584
  $content . $this->page_content .
585
  '</div>';
586
 
587
  return $content;
588
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  }
590
  // END class
6
  // Created by The Seed Studio on 2011-07-13.
7
  //
8
 
 
9
  /**
10
  * Ai1ec_App_Controller class
11
  *
61
  * Default constructor - application initialization
62
  **/
63
  private function __construct()
64
+ {
65
  global $wpdb,
66
  $ai1ec_app_helper,
67
  $ai1ec_events_controller,
68
  $ai1ec_events_helper,
69
  $ai1ec_importer_controller,
70
+ $ai1ec_exporter_controller,
71
  $ai1ec_settings_controller,
72
+ $ai1ec_settings,
73
+ $ai1ec_themes_controller;
74
 
75
  // register_activation_hook
76
  register_activation_hook( AI1EC_PLUGIN_NAME . '/' . AI1EC_PLUGIN_NAME . '.php', array( &$this, 'activation_hook' ) );
86
 
87
  // Install/update cron as necessary
88
  $this->install_cron();
89
+
90
  // Enable stats collection
91
  $this->install_n_cron();
92
 
93
+ // Continue loading hooks only if themes are installed
94
+ // otherwise display a notification on the backend with instructions
95
+ // how to install themes
96
+ if( ! $ai1ec_themes_controller->are_themes_available() ) {
97
+ add_action( 'admin_notices', array( &$ai1ec_app_helper, 'admin_notices' ) );
98
+ return;
99
+ }
100
+
101
  // ===========
102
  // = ACTIONS =
103
  // ===========
104
+ // Calendar theme initialization
105
+ add_action( 'after_setup_theme', array( &$ai1ec_themes_controller, 'setup_theme' ) );
106
  // Create custom post type
107
+ add_action( 'init', array( &$ai1ec_app_helper, 'create_post_type' ) );
108
  // Handle ICS export requests
109
+ add_action( 'init', array( &$this, 'parse_standalone_request' ) );
110
  // General initialization
111
  add_action( 'init', array( &$ai1ec_events_controller, 'init' ) );
112
  // Load plugin text domain
113
  add_action( 'init', array( &$this, 'load_textdomain' ) );
114
  // Register The Event Calendar importer
115
  add_action( 'admin_init', array( &$ai1ec_importer_controller, 'register_importer' ) );
116
+ // Install admin menu items.
117
+ add_action( 'admin_menu', array( &$this, 'admin_menu' ), 9 );
118
+ // Add Event counts to dashboard.
119
+ add_action( 'right_now_content_table_end', array( &$ai1ec_app_helper, 'right_now_content_table_end' ) );
120
  // add content for our custom columns
121
  add_action( 'manage_posts_custom_column', array( &$ai1ec_app_helper, 'custom_columns' ), 10, 2 );
122
  // Add filtering dropdowns for event categories and tags
123
  add_action( 'restrict_manage_posts', array( &$ai1ec_app_helper, 'taxonomy_filter_restrict_manage_posts' ) );
124
  // Trigger display of page in front-end depending on request
125
  add_action( 'template_redirect', array( &$this, 'route_request' ) );
126
+ // Add meta boxes to event creation/edit form.
127
  add_action( 'add_meta_boxes', array( &$ai1ec_app_helper, 'add_meta_boxes' ) );
128
  add_filter( 'screen_layout_columns', array( &$ai1ec_app_helper, 'screen_layout_columns' ), 10, 2 );
129
  // Save event data when post is saved
140
  add_action( 'created_events_categories', array( &$ai1ec_events_controller, 'created_events_categories' ) );
141
  add_action( 'edited_events_categories', array( &$ai1ec_events_controller, 'edited_events_categories' ) );
142
  add_action( 'admin_notices', array( &$ai1ec_app_helper, 'admin_notices' ) );
143
+ // Scripts/styles for settings and widget admin screens.
144
+ add_action( 'admin_enqueue_scripts', array( &$ai1ec_app_helper, 'admin_enqueue_scripts' ) );
145
  // Widgets
146
+ add_action( 'widgets_init', create_function( '', "return register_widget( 'Ai1ec_Agenda_Widget' );" ) );
147
 
148
  // ===========
149
  // = FILTERS =
150
  // ===========
151
+ add_filter( 'posts_orderby', array( &$ai1ec_app_helper, 'orderby' ), 10, 2 );
152
  // add custom column names and change existing columns
153
+ add_filter( 'manage_ai1ec_event_posts_columns', array( &$ai1ec_app_helper, 'change_columns' ) );
154
  // filter the post lists by custom filters
155
+ add_filter( 'parse_query', array( &$ai1ec_app_helper, 'taxonomy_filter_post_type_request' ) );
156
  // Filter event post content, in single- and multi-post views
157
+ add_filter( 'the_content', array( &$ai1ec_events_controller, 'event_content' ), PHP_INT_MAX - 1 );
158
  // Override excerpt filters for proper event display in excerpt form
159
+ add_filter( 'get_the_excerpt', array( &$ai1ec_events_controller, 'event_excerpt' ), 11 );
160
+ add_filter( 'the_excerpt', array( &$ai1ec_events_controller, 'event_excerpt_noautop' ), 11 );
161
+ remove_filter( 'the_excerpt', 'wpautop', 10 );
162
  // Update event post update messages
163
+ add_filter( 'post_updated_messages', array( &$ai1ec_events_controller, 'post_updated_messages' ) );
164
  // Sort the custom columns
165
  add_filter( 'manage_edit-ai1ec_event_sortable_columns', array( &$ai1ec_app_helper, 'sortable_columns' ) );
166
+ add_filter( 'map_meta_cap', array( &$ai1ec_app_helper, 'map_meta_cap' ), 10, 4 );
167
  // Inject event categories, only in front-end, depending on setting
168
  if( $ai1ec_settings->inject_categories && ! is_admin() ) {
169
  add_filter( 'get_terms', array( &$ai1ec_app_helper, 'inject_categories' ), 10, 3 );
170
  add_filter( 'wp_list_categories', array( &$ai1ec_app_helper, 'selected_category_link' ), 10, 2 );
171
  }
172
+ // Rewrite event category URLs to point to calendar page.
173
  add_filter( 'term_link', array( &$ai1ec_app_helper, 'calendar_term_link' ), 10, 3 );
174
+ // Add a link to settings page on the plugin list page.
175
  add_filter( 'plugin_action_links_' . AI1EC_PLUGIN_BASENAME, array( &$ai1ec_settings_controller, 'plugin_action_links' ) );
176
+ // Add a link to donate page on plugin list page.
177
  add_filter( 'plugin_row_meta', array( &$ai1ec_settings_controller, 'plugin_row_meta' ), 10, 2 );
178
  add_filter( 'post_type_link', array( &$ai1ec_events_helper, 'post_type_link' ), 10, 3 );
179
+ add_filter( 'ai1ec_template_root_path', array( &$ai1ec_themes_controller, 'template_root_path' ) );
180
+ add_filter( 'ai1ec_template_root_url', array( &$ai1ec_themes_controller, 'template_root_url' ) );
181
 
182
  // ========
183
  // = AJAX =
190
  add_action( 'wp_ajax_ai1ec_flush_ics', array( &$ai1ec_settings_controller, 'flush_ics_feed' ) );
191
  // Update iCalendar feed
192
  add_action( 'wp_ajax_ai1ec_update_ics', array( &$ai1ec_settings_controller, 'update_ics_feed' ) );
193
+
194
  // RRule to Text
195
  add_action( 'wp_ajax_ai1ec_rrule_to_text', array( &$ai1ec_events_helper, 'convert_rrule_to_text' ) );
196
+
197
  // Display Repeat Box
198
  add_action( 'wp_ajax_ai1ec_get_repeat_box', array( &$ai1ec_events_helper, 'get_repeat_box' ) );
199
  add_action( 'wp_ajax_ai1ec_get_date_picker_box', array( &$ai1ec_events_helper, 'get_date_picker_box' ) );
200
+
201
  // Disable notification
202
  add_action( 'wp_ajax_ai1ec_disable_notification', array( &$ai1ec_settings_controller, 'disable_notification' ) );
203
+
204
  // ==============
205
  // = Shortcodes =
206
  // ==============
207
  add_shortcode( 'ai1ec', array( &$ai1ec_events_helper, 'shortcode' ) );
208
+
209
  }
210
 
211
  /**
216
  * @return void
217
  **/
218
  function activation_hook() {
219
+ // Load plugin text domain.
220
+ $this->load_textdomain();
221
 
222
+ // Flush rewrite rules.
223
+ $this->rewrite_flush();
 
 
 
224
  }
225
 
226
  /**
231
  * @return void
232
  **/
233
  function load_textdomain() {
234
+ if( self::$_load_domain === FALSE ) {
235
+ load_plugin_textdomain( AI1EC_PLUGIN_NAME, false, AI1EC_LANGUAGE_PATH );
236
+ self::$_load_domain = TRUE;
237
+ }
 
238
  }
239
 
240
  /**
269
  // =======================
270
  $table_name = $wpdb->prefix . 'ai1ec_events';
271
  $sql = "CREATE TABLE $table_name (
272
+ post_id bigint(20) NOT NULL,
273
+ start datetime NOT NULL,
274
+ end datetime,
275
+ allday tinyint(1) NOT NULL,
276
+ recurrence_rules longtext,
277
+ exception_rules longtext,
278
+ recurrence_dates longtext,
279
+ exception_dates longtext,
280
+ venue varchar(255),
281
+ country varchar(255),
282
+ address varchar(255),
283
+ city varchar(255),
284
+ province varchar(255),
285
+ postal_code varchar(32),
286
+ show_map tinyint(1),
287
+ contact_name varchar(255),
288
+ contact_phone varchar(32),
289
+ contact_email varchar(128),
290
+ cost varchar(255),
291
+ ical_feed_url varchar(255),
292
+ ical_source_url varchar(255),
293
+ ical_organizer varchar(255),
294
+ ical_contact varchar(255),
295
+ ical_uid varchar(255),
296
  PRIMARY KEY (post_id)
297
  ) CHARACTER SET utf8;";
298
 
301
  // ==========================
302
  $table_name = $wpdb->prefix . 'ai1ec_event_instances';
303
  $sql .= "CREATE TABLE $table_name (
304
+ id bigint(20) NOT NULL AUTO_INCREMENT,
305
  post_id bigint(20) NOT NULL,
306
+ start datetime NOT NULL,
307
+ end datetime NOT NULL,
308
  PRIMARY KEY (id)
309
  ) CHARACTER SET utf8;";
310
 
313
  // ======================
314
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
315
  $sql .= "CREATE TABLE $table_name (
316
+ feed_id bigint(20) NOT NULL AUTO_INCREMENT,
317
+ feed_url varchar(255) NOT NULL,
318
  feed_category bigint(20) NOT NULL,
319
+ feed_tags varchar(255) NOT NULL,
320
  PRIMARY KEY (feed_id)
321
  ) CHARACTER SET utf8;";
322
 
323
+ // ================================
324
  // = Create table category colors =
325
  // ================================
326
  $table_name = $wpdb->prefix . 'ai1ec_event_category_colors';
327
  $sql .= "CREATE TABLE $table_name (
328
+ term_id bigint(20) NOT NULL,
329
+ term_color varchar(255) NOT NULL,
330
  PRIMARY KEY (term_id)
331
  ) CHARACTER SET utf8;";
332
 
357
  update_option( 'ai1ec_cron_version', AI1EC_CRON_VERSION );
358
  }
359
  }
360
+
361
  /**
362
  * install_notification_cron function
363
  *
367
  **/
368
  function install_n_cron() {
369
  global $ai1ec_settings;
370
+
371
  // if stats are disabled, cancel the cron
372
  if( $ai1ec_settings->allow_statistics == false ) {
373
  // delete our scheduled crons
374
  wp_clear_scheduled_hook( 'ai1ec_n_cron_version' );
375
+
376
  // remove the cron version
377
  delete_option( 'ai1ec_n_cron_version' );
378
+
379
  // prevent the execution of the code below
380
  return;
381
  }
382
+
383
  // If existing CRON version is not consistent with current plugin's version,
384
  // or does not exist, then create/update cron using
385
  if( get_option( 'ai1ec_n_cron_version' ) != AI1EC_N_CRON_VERSION ) {
393
  }
394
 
395
  /**
396
+ * admin_menu function
 
 
 
 
 
 
 
 
 
 
397
  * Display the admin menu items using the add_menu_page WP function.
398
  *
399
  * @return void
400
+ */
401
+ function admin_menu() {
402
  global $ai1ec_settings_controller,
403
+ $ai1ec_settings_helper,
404
+ $ai1ec_settings,
405
+ $ai1ec_themes_controller;
406
+
407
+ // =======================
408
+ // = Calendar Feeds Page =
409
+ // =======================
410
+ $ai1ec_settings->feeds_page = add_submenu_page(
411
+ 'edit.php?post_type=' . AI1EC_POST_TYPE,
412
+ __( 'Calendar Feeds', AI1EC_PLUGIN_NAME ),
413
+ __( 'Calendar Feeds', AI1EC_PLUGIN_NAME ),
414
+ 'manage_ai1ec_feeds',
415
+ AI1EC_PLUGIN_NAME . '-feeds',
416
+ array( &$ai1ec_settings_controller, 'view_feeds' )
417
+ );
418
+ // Allow feeds page to have additional meta boxes added to it.
419
+ add_action( "load-{$ai1ec_settings->feeds_page}", array( &$ai1ec_settings_helper, 'add_feeds_meta_boxes') );
420
+ // Load our plugin's meta boxes.
421
+ add_action( "load-{$ai1ec_settings->feeds_page}", array( &$ai1ec_settings_controller, 'add_feeds_meta_boxes' ) );
422
 
423
  // =================
424
  // = Settings Page =
425
  // =================
426
  $ai1ec_settings->settings_page = add_submenu_page(
427
+ 'options-general.php',
428
+ __( 'Calendar', AI1EC_PLUGIN_NAME ),
429
+ __( 'Calendar', AI1EC_PLUGIN_NAME ),
430
+ 'manage_ai1ec_options',
431
+ AI1EC_PLUGIN_NAME . '-settings',
432
+ array( &$ai1ec_settings_controller, 'view_settings' )
433
+ );
434
+ // Allow settings page to have additional meta boxes added to it.
435
+ add_action( "load-{$ai1ec_settings->settings_page}", array( &$ai1ec_settings_helper, 'add_settings_meta_boxes') );
436
+ // Load our plugin's meta boxes.
437
+ add_action( "load-{$ai1ec_settings->settings_page}", array( &$ai1ec_settings_controller, 'add_settings_meta_boxes' ) );
438
+ // ========================
439
+ // = Calendar Update Page =
440
+ // ========================
441
+ add_submenu_page(
442
  'edit.php?post_type=' . AI1EC_POST_TYPE,
443
+ __( 'Upgrade', AI1EC_PLUGIN_NAME ),
444
+ __( 'Upgrade', AI1EC_PLUGIN_NAME ),
445
+ 'update_plugins',
446
+ AI1EC_PLUGIN_NAME . '-upgrade',
447
+ array( &$this, 'upgrade' )
448
  );
449
+ remove_submenu_page( 'edit.php?post_type=' . AI1EC_POST_TYPE, AI1EC_PLUGIN_NAME . '-upgrade' );
 
 
 
450
  }
451
 
 
452
  /**
453
  * route_request function
454
  *
459
  **/
460
  function route_request() {
461
  global $ai1ec_settings,
462
+ $ai1ec_calendar_controller,
463
+ $ai1ec_events_controller,
464
+ $ai1ec_events_helper,
465
+ $post;
466
+
467
  // regex pattern to match our shortcode [ai1ec]
468
  // \[(\[?)(ai1ec)\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
469
  $out = array();
473
 
474
  // Find out if the calendar page ID is defined, and we're on it
475
  if( $ai1ec_settings->calendar_page_id &&
476
+ is_page( $ai1ec_settings->calendar_page_id ) )
477
  {
478
+ // Proceed only if the page password is correctly entered OR
479
+ // the page doesn't require a password
480
+ if( ! post_password_required( $ai1ec_settings->calendar_page_id ) ) {
481
+ ob_start();
482
+ // Render view
483
+ $ai1ec_calendar_controller->view();
484
+ // Save page content to local variable
485
+ $this->page_content = ob_get_contents();
486
+ ob_end_clean();
487
+
488
+ // Replace page content - make sure it happens at (almost) the very end of
489
+ // page content filters (some themes are overly ambitious here)
490
+ add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
491
+ }
492
  } else if( isset( $out[2] ) && $out[2] == 'ai1ec' ) {
493
  // if content has [ai1ec] shortcode, display the calendar page
494
  $attr = shortcode_parse_atts( $out[3] );
495
  // Proceed only if the page password is correctly entered OR
496
+ // the page doesn't require a password
497
+ if( ! post_password_required( $post->ID ) ) {
498
+ ob_start();
499
  if( isset( $attr["view"] ) && ! empty( $attr["view"] ) ) {
500
  switch( $attr["view"] ) {
501
  case "monthly":
528
  // Parse categories by id
529
  if( isset( $attr["cat_id"] ) && ! empty( $attr["cat_id"] ) ) {
530
  // append cat_id to the ai1ec_cat_ids array
531
+ $_REQUEST["ai1ec_cat_ids"] = ( isset( $_REQUEST["ai1ec_cat_ids"] ) && strlen( $_REQUEST["ai1ec_cat_ids"] ) > 0 )
532
+ ? $_REQUEST["ai1ec_cat_ids"] . ',' . $attr["cat_id"]
533
+ : $attr["cat_id"];
534
  }
535
 
536
  // Parse tags by name
552
  if( isset( $attr["tag_id"] ) && ! empty( $attr["tag_id"] ) ) {
553
  // append tag_id to the ai1ec_tag_ids array
554
  $_REQUEST["ai1ec_tag_ids"] = ( isset( $_REQUEST["ai1ec_tag_ids"] ) && strlen( $_REQUEST["ai1ec_tag_ids"] ) > 0 )
555
+ ? $_REQUEST["ai1ec_tag_ids"] . ',' . $attr["tag_id"]
556
+ : $attr["tag_id"];
557
  }
558
 
559
  // Parse posts by id
560
  if( isset( $attr["post_id"] ) && ! empty( $attr["post_id"] ) ) {
561
  $_REQUEST["ai1ec_post_ids"] = $attr["post_id"];
562
  }
563
+
564
+ // Render view
565
+ $ai1ec_calendar_controller->view();
566
+ // Save page content to local variable
567
+ $this->page_content = ob_get_contents();
568
+ ob_end_clean();
569
+
570
+ // Replace page content - make sure it happens at (almost) the very end of
571
+ // page content filters (some themes are overly ambitious here)
572
+ add_filter( 'the_content', array( &$this, 'append_content' ), PHP_INT_MAX - 1 );
573
+ }
574
  }
575
  }
576
 
584
  $ai1ec_app_helper;
585
 
586
  $plugin = $ai1ec_app_helper->get_param('plugin');
587
+ $action = $ai1ec_app_helper->get_param('action');
588
+ $controller = $ai1ec_app_helper->get_param('controller');
589
 
590
  if( ! empty( $plugin ) && $plugin == AI1EC_PLUGIN_NAME && ! empty( $controller ) && ! empty( $action ) ) {
591
  if( $controller == "ai1ec_exporter_controller" ) :
592
+ switch( $action ) :
593
+ case 'export_events':
594
+ $ai1ec_exporter_controller->export_events();
595
+ break;
596
+ endswitch;
597
  endif; // ai1ec_exporter_controller
598
  }
599
  }
613
  // the calendar container div
614
  if( in_the_loop() )
615
  $content =
616
+ '<div id="ai1ec-container" class="ai1ec-container thenly">' .
617
  $content . $this->page_content .
618
  '</div>';
619
 
620
  return $content;
621
  }
622
+
623
+ /**
624
+ * upgrade function
625
+ *
626
+ * @return void
627
+ **/
628
+ function upgrade() {
629
+ // continue only if user can update plugins
630
+ if ( ! current_user_can( 'update_plugins' ) )
631
+ wp_die( __( 'You do not have sufficient permissions to update plugins for this site.' ) );
632
+ // use our custom class
633
+ $upgrader = new Ai1ec_Updater();
634
+ // update the plugin
635
+ $upgrader->upgrade( 'all-in-one-event-calendar' );
636
+ // give user a way out of the page
637
+ echo '<a href="' . admin_url( 'edit.php?post_type=' . AI1EC_POST_TYPE ) . '">Continue here</a>';
638
+ }
639
  }
640
  // END class
app/controller/class-ai1ec-calendar-controller.php CHANGED
@@ -214,8 +214,20 @@ class Ai1ec_Calendar_Controller {
214
  foreach( $categories as &$cat ) {
215
  $cat->color = $ai1ec_events_helper->get_category_color_square( $cat->term_id );
216
  }
 
 
 
 
 
 
 
 
 
 
217
  // Define new arguments for overall calendar view
218
  $args = array(
 
 
219
  'view' => $view,
220
  'create_event_url' => $create_event_url,
221
  'categories' => $categories,
@@ -223,11 +235,12 @@ class Ai1ec_Calendar_Controller {
223
  'selected_cat_ids' => $cat_ids,
224
  'selected_tag_ids' => $tag_ids,
225
  'selected_post_ids' => $post_ids,
226
- 'show_subscribe_buttons' => ! $ai1ec_settings->turn_off_subscription_buttons
 
227
  );
228
 
229
  // Feed month view into generic calendar view
230
- echo apply_filters( 'ai1ec_view', $ai1ec_view_helper->get_view( 'calendar.php', $args ), $args );
231
  }
232
 
233
  /**
@@ -285,7 +298,8 @@ class Ai1ec_Calendar_Controller {
285
  'active_event' => $active_event,
286
  'post_ids' => join( ',', $post_ids ),
287
  );
288
- return apply_filters( 'ai1ec_get_month_view', $ai1ec_view_helper->get_view( 'month.php', $view_args ), $view_args );
 
289
  }
290
 
291
  /**
@@ -314,8 +328,8 @@ class Ai1ec_Calendar_Controller {
314
  $ai1ec_events_helper,
315
  $ai1ec_calendar_helper;
316
 
317
- $defaults = array(
318
- 'oneday_offset' => 0,
319
  'active_event' => null,
320
  'categories' => array(),
321
  'tags' => array(),
@@ -347,7 +361,7 @@ class Ai1ec_Calendar_Controller {
347
  'done_allday_label' => false,
348
  'done_grid' => false
349
  );
350
- return apply_filters( 'ai1ec_get_oneday_view', $ai1ec_view_helper->get_view( 'oneday.php', $view_args ), $view_args );
351
  }
352
 
353
  /**
@@ -413,7 +427,7 @@ class Ai1ec_Calendar_Controller {
413
  'done_allday_label' => false,
414
  'done_grid' => false
415
  );
416
- return apply_filters( 'ai1ec_get_week_view', $ai1ec_view_helper->get_view( 'week.php', $view_args ), $view_args );
417
  }
418
 
419
  /**
@@ -466,9 +480,9 @@ class Ai1ec_Calendar_Controller {
466
  'pagination_links' => $pagination_links,
467
  'active_event' => $active_event,
468
  'expanded' => $ai1ec_settings->agenda_events_expanded,
469
- 'post_ids' => join( ',', $post_ids ),
470
  );
471
- return apply_filters( 'ai1ec_get_agenda_view', $ai1ec_view_helper->get_view( 'agenda.php', $args ), $args );
472
  }
473
 
474
  /**
@@ -642,13 +656,12 @@ class Ai1ec_Calendar_Controller {
642
  * CSS rules necessary for calendar container replacement.
643
  *
644
  * @return void
645
- **/
646
- function load_css()
647
- {
648
- global $ai1ec_settings;
649
 
650
- wp_enqueue_style( 'ai1ec-general', AI1EC_CSS_URL . '/general.css', array(), AI1EC_VERSION );
651
- wp_enqueue_style( 'ai1ec-calendar', AI1EC_CSS_URL . '/calendar.css', array(), AI1EC_VERSION );
652
 
653
  if( $ai1ec_settings->calendar_css_selector )
654
  add_action( 'wp_head', array( &$this, 'selector_css' ) );
@@ -663,7 +676,7 @@ class Ai1ec_Calendar_Controller {
663
  function selector_css() {
664
  global $ai1ec_view_helper, $ai1ec_settings;
665
 
666
- $ai1ec_view_helper->display_css(
667
  'selector.css',
668
  array( 'selector' => $ai1ec_settings->calendar_css_selector )
669
  );
@@ -678,17 +691,17 @@ class Ai1ec_Calendar_Controller {
678
  **/
679
  function load_js()
680
  {
681
- global $ai1ec_settings;
682
 
683
  // Include dependent scripts (jQuery plugins, modernizr)
684
- wp_enqueue_script( 'jquery.scrollTo', AI1EC_JS_URL . '/jquery.scrollTo-min.js', array( 'jquery' ), AI1EC_VERSION );
685
- wp_enqueue_script( 'jquery.tableScroll', AI1EC_JS_URL . '/jquery.tablescroll.js', array( 'jquery' ), AI1EC_VERSION );
686
- wp_enqueue_script( 'modernizr.custom.78720', AI1EC_JS_URL . '/modernizr.custom.78720.js', array(), AI1EC_VERSION );
687
- // Include element selector function
688
- wp_enqueue_script( 'ai1ec-element-selector', AI1EC_JS_URL . '/element-selector.js', array( 'jquery', 'jquery.scrollTo' ), AI1EC_VERSION );
689
  // Include custom script
690
- wp_enqueue_script( 'ai1ec-calendar', AI1EC_JS_URL . '/calendar.js',
691
- array( 'jquery', 'jquery.scrollTo', 'jquery.tableScroll', 'modernizr.custom.78720' ), AI1EC_VERSION );
692
 
693
  $data = array(
694
  // Point script to AJAX URL - use relative to plugin URL to fix domain mapping issues
214
  foreach( $categories as &$cat ) {
215
  $cat->color = $ai1ec_events_helper->get_category_color_square( $cat->term_id );
216
  }
217
+
218
+ // Supply view names and current view.
219
+ $view_names = array(
220
+ 'month' => __( 'Month', AI1EC_PLUGIN_NAME ),
221
+ 'week' => __( 'Week', AI1EC_PLUGIN_NAME ),
222
+ 'oneday' => __( 'Day', AI1EC_PLUGIN_NAME ),
223
+ 'agenda' => __( 'Agenda', AI1EC_PLUGIN_NAME ),
224
+ );
225
+ $current_view = substr( $this->request['action'], 6 );
226
+
227
  // Define new arguments for overall calendar view
228
  $args = array(
229
+ 'view_names' => $view_names,
230
+ 'current_view' => $current_view,
231
  'view' => $view,
232
  'create_event_url' => $create_event_url,
233
  'categories' => $categories,
235
  'selected_cat_ids' => $cat_ids,
236
  'selected_tag_ids' => $tag_ids,
237
  'selected_post_ids' => $post_ids,
238
+ 'show_subscribe_buttons' => ! $ai1ec_settings->turn_off_subscription_buttons,
239
+ 'ai1ec_view_helper' => $ai1ec_view_helper,
240
  );
241
 
242
  // Feed month view into generic calendar view
243
+ echo apply_filters( 'ai1ec_view', $ai1ec_view_helper->get_theme_view( 'calendar.php', $args ), $args );
244
  }
245
 
246
  /**
298
  'active_event' => $active_event,
299
  'post_ids' => join( ',', $post_ids ),
300
  );
301
+
302
+ return apply_filters( 'ai1ec_get_month_view', $ai1ec_view_helper->get_theme_view( 'month.php', $view_args ), $view_args );
303
  }
304
 
305
  /**
328
  $ai1ec_events_helper,
329
  $ai1ec_calendar_helper;
330
 
331
+ $defaults = array(
332
+ 'oneday_offset' => 0,
333
  'active_event' => null,
334
  'categories' => array(),
335
  'tags' => array(),
361
  'done_allday_label' => false,
362
  'done_grid' => false
363
  );
364
+ return apply_filters( 'ai1ec_get_oneday_view', $ai1ec_view_helper->get_theme_view( 'oneday.php', $view_args ), $view_args );
365
  }
366
 
367
  /**
427
  'done_allday_label' => false,
428
  'done_grid' => false
429
  );
430
+ return apply_filters( 'ai1ec_get_week_view', $ai1ec_view_helper->get_theme_view( 'week.php', $view_args ), $view_args );
431
  }
432
 
433
  /**
480
  'pagination_links' => $pagination_links,
481
  'active_event' => $active_event,
482
  'expanded' => $ai1ec_settings->agenda_events_expanded,
483
+ 'post_ids' => join( ',', $post_ids )
484
  );
485
+ return apply_filters( 'ai1ec_get_agenda_view', $ai1ec_view_helper->get_theme_view( 'agenda.php', $args ), $args );
486
  }
487
 
488
  /**
656
  * CSS rules necessary for calendar container replacement.
657
  *
658
  * @return void
659
+ */
660
+ function load_css() {
661
+ global $ai1ec_settings, $ai1ec_view_helper;
 
662
 
663
+ $ai1ec_view_helper->theme_enqueue_style( 'ai1ec-general', 'general.css' );
664
+ $ai1ec_view_helper->theme_enqueue_style( 'ai1ec-calendar', 'calendar.css' );
665
 
666
  if( $ai1ec_settings->calendar_css_selector )
667
  add_action( 'wp_head', array( &$this, 'selector_css' ) );
676
  function selector_css() {
677
  global $ai1ec_view_helper, $ai1ec_settings;
678
 
679
+ $ai1ec_view_helper->display_admin_css(
680
  'selector.css',
681
  array( 'selector' => $ai1ec_settings->calendar_css_selector )
682
  );
691
  **/
692
  function load_js()
693
  {
694
+ global $ai1ec_settings, $ai1ec_view_helper;
695
 
696
  // Include dependent scripts (jQuery plugins, modernizr)
697
+ $ai1ec_view_helper->theme_enqueue_script( 'jquery.scrollTo', 'jquery.scrollTo-min.js', array( 'jquery' ) );
698
+ $ai1ec_view_helper->theme_enqueue_script( 'jquery.tableScroll', 'jquery.tablescroll.js', array( 'jquery' ) );
699
+ $ai1ec_view_helper->theme_enqueue_script( 'modernizr.custom.78720', 'modernizr.custom.78720.js' );
700
+ // Include element selector function
701
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-element-selector', 'element-selector.js', array( 'jquery' ) );
702
  // Include custom script
703
+ $ai1ec_view_helper->theme_enqueue_script( 'ai1ec-calendar', 'calendar.min.js',
704
+ array( 'jquery', 'jquery.scrollTo', 'jquery.tableScroll', 'modernizr.custom.78720' ) );
705
 
706
  $data = array(
707
  // Point script to AJAX URL - use relative to plugin URL to fix domain mapping issues
app/controller/class-ai1ec-events-controller.php CHANGED
@@ -94,9 +94,9 @@ class Ai1ec_Events_Controller {
94
  *
95
  * @return void
96
  **/
97
- function init()
98
  {
99
- global $ai1ec_events_helper, $ai1ec_settings, $wp_locale;
100
 
101
  // Initialize dashboard view
102
  if( is_admin() ) {
@@ -104,67 +104,68 @@ class Ai1ec_Events_Controller {
104
  // = JS =
105
  // ======
106
  // Include timespan helper functions
107
- wp_enqueue_script( 'jquery.calendrical', AI1EC_JS_URL . '/jquery.calendrical.js', array( 'jquery' ), AI1EC_VERSION );
108
  // Include timespan plugin
109
- wp_enqueue_script( 'jquery.timespan', AI1EC_JS_URL . '/jquery.timespan.js', array( 'jquery', 'jquery.calendrical' ), AI1EC_VERSION );
110
  // Include timespan plugin
111
- wp_enqueue_script( 'jquery.inputdate', AI1EC_JS_URL . '/jquery.inputdate.js', array( 'jquery', 'jquery.calendrical' ), AI1EC_VERSION );
112
  // Include Google Maps API
113
- wp_enqueue_script( 'gmap_api', 'http://maps.google.com/maps/api/js?sensor=false&language=' . $ai1ec_events_helper->get_lang() );
114
  // Include autocomplete_geomod plugin
115
- wp_enqueue_script( 'autocomplete_geomod', AI1EC_JS_URL . '/jquery.autocomplete_geomod.js', array( 'jquery' ), AI1EC_VERSION );
116
  // Include geo_autocomplete plugin
117
- wp_enqueue_script( 'geo_autocomplete', AI1EC_JS_URL . '/geo_autocomplete.js', array( 'jquery', 'autocomplete_geomod' ), AI1EC_VERSION );
118
  // Include element selector function
119
- wp_enqueue_script( 'ai1ec-element-selector', AI1EC_JS_URL . '/element-selector.js', array( 'jquery' ), AI1EC_VERSION );
120
  // Include jQuery Tools form elements
121
- wp_enqueue_script( 'jquery.tools-form', AI1EC_JS_URL . '/jquery-tools-1.2.5.min.js', array( 'jquery' ), AI1EC_VERSION );
122
  // Include add new event script
123
- wp_enqueue_script( 'ai1ec-blockui', AI1EC_JS_URL . '/jquery.blockUI.js', array( 'jquery' ), AI1EC_VERSION );
124
  // Include date picker plugin
125
- wp_enqueue_script( 'ai1ec-datepicker', AI1EC_JS_URL . '/datepicker.js', array( 'jquery' ), AI1EC_VERSION );
126
-
127
- wp_enqueue_script( 'ai1ec-add_new_event', AI1EC_JS_URL . '/add_new_event.js', array( 'jquery',
128
- 'jquery.timespan',
129
- 'ai1ec-element-selector',
130
- 'jquery.tools-form',
131
  'ai1ec-blockui',
132
- 'ai1ec-datepicker' ), AI1EC_VERSION );
133
 
134
- wp_enqueue_script( 'ai1ec-color-picker', AI1EC_JS_URL . '/colorpicker.js', array( 'jquery' ), AI1EC_VERSION );
135
 
136
  // Supply custom value to JavaScript from PHP
137
  wp_localize_script( 'ai1ec-add_new_event', 'ai1ec_add_new_event', array(
138
  // Current time, used for date/time pickers
139
- 'now' => $ai1ec_events_helper->gmt_to_local( time() ),
140
  // Date format for date pickers
141
- 'date_format' => $ai1ec_settings->input_date_format,
142
  // Names for months in date picker header (escaping is done in wp_localize_script)
143
- 'month_names' => implode( ',', $wp_locale->month ),
144
  // Names for days in date picker header (escaping is done in wp_localize_script)
145
- 'day_names' => implode( ',', $wp_locale->weekday_initial ),
146
  // Start the week on this day in the date picker
147
- 'week_start_day' => $ai1ec_settings->week_start_day,
148
  // 24h time format for time pickers
149
- 'twentyfour_hour' => $ai1ec_settings->input_24h_time,
150
  // Set region biasing for geo_autocomplete plugin
151
- 'region' => ( $ai1ec_settings->geo_region_biasing ) ? $ai1ec_events_helper->get_region() : '',
152
  // ICS feed error messages
153
- 'duplicate_feed_message' => esc_html__( 'This feed is already being imported.', AI1EC_PLUGIN_NAME ),
154
- 'invalid_url_message' => esc_html__( 'Please enter a valid iCalendar URL.', AI1EC_PLUGIN_NAME ),
 
155
  ) );
156
 
157
  // =======
158
  // = CSS =
159
  // =======
160
  // include autocomplete style
161
- wp_enqueue_style( 'autocomplete', AI1EC_CSS_URL . '/jquery.autocomplete.css', array(), AI1EC_VERSION );
162
  // include colorpicker style
163
- wp_enqueue_style( 'colorpicker', AI1EC_CSS_URL . '/colorpicker.css', array(), AI1EC_VERSION );
164
  // include add new event style
165
- wp_enqueue_style( 'ai1ec_add_new_event', AI1EC_CSS_URL . '/add_new_event.css', array(), AI1EC_VERSION );
166
  // include datepicker style
167
- wp_enqueue_style( 'ai1ec_datepicker', AI1EC_CSS_URL . '/datepicker.css', array(), AI1EC_VERSION );
168
  }
169
  // Initialize front-end view
170
  else
@@ -172,7 +173,7 @@ class Ai1ec_Events_Controller {
172
  // ======
173
  // = JS =
174
  // ======
175
- wp_enqueue_script( 'ai1ec-event', AI1EC_JS_URL . '/event.js', array( 'jquery' ), AI1EC_VERSION );
176
  // Supply custom value to JavaScript from PHP
177
  wp_localize_script( 'ai1ec-event', 'ai1ec_event', array(
178
  // Language for Google Map
@@ -182,8 +183,12 @@ class Ai1ec_Events_Controller {
182
  // =======
183
  // = CSS =
184
  // =======
185
- wp_enqueue_style( 'ai1ec-general', AI1EC_CSS_URL . '/general.css', array(), AI1EC_VERSION );
186
- wp_enqueue_style( 'ai1ec-event', AI1EC_CSS_URL . '/event.css', array(), AI1EC_VERSION );
 
 
 
 
187
  }
188
  }
189
 
@@ -236,9 +241,12 @@ class Ai1ec_Events_Controller {
236
 
237
  $all_day_event = $event->allday ? 'checked="checked"' : '';
238
 
 
239
  $start_timestamp = $ai1ec_events_helper->gmt_to_local( $event->start );
240
  $end_timestamp = $ai1ec_events_helper->gmt_to_local( $event->end );
241
 
 
 
242
  $show_map = $event->show_map;
243
  $google_map = $show_map ? 'checked="checked"' : '';
244
 
@@ -290,22 +298,22 @@ class Ai1ec_Events_Controller {
290
  'timezone' => $timezone,
291
  'exdate' => $exdate
292
  );
293
- $ai1ec_view_helper->display( 'box_time_and_date.php', $args );
294
 
295
  // =================================================
296
  // = Display event location details and Google map =
297
  // =================================================
298
  $args = array(
299
- 'venue' => $venue,
300
- 'country' => $country,
301
- 'address' => $address,
302
- 'city' => $city,
303
- 'province' => $province,
304
- 'postal_code' => $postal_code,
305
- 'google_map' => $google_map,
306
- 'show_map' => $show_map,
307
  );
308
- $ai1ec_view_helper->display( 'box_event_location.php', $args );
309
 
310
  // ======================
311
  // = Display event cost =
@@ -313,7 +321,7 @@ class Ai1ec_Events_Controller {
313
  $args = array(
314
  'cost' => $cost
315
  );
316
- $ai1ec_view_helper->display( 'box_event_cost.php', $args );
317
 
318
  // =========================================
319
  // = Display organizer contact information =
@@ -323,7 +331,7 @@ class Ai1ec_Events_Controller {
323
  'contact_phone' => $contact_phone,
324
  'contact_email' => $contact_email,
325
  );
326
- $ai1ec_view_helper->display( 'box_event_contact.php', $args );
327
 
328
  if( $ai1ec_settings->show_publish_button ) {
329
  $args = array();
@@ -334,7 +342,7 @@ class Ai1ec_Events_Controller {
334
  else
335
  $args["button_value"] = __( 'Submit for Review', AI1EC_PLUGIN_NAME );
336
 
337
- $ai1ec_view_helper->display( 'box_publish_button.php', $args );
338
  }
339
 
340
  /*
@@ -436,6 +444,7 @@ class Ai1ec_Events_Controller {
436
  $event->recurrence_rules = $rrule;
437
  $event->exception_rules = $exrule;
438
  $event->exception_dates = $exdate;
 
439
  $event->save( ! $is_new );
440
 
441
  $ai1ec_events_helper->delete_event_cache( $post_id );
@@ -611,7 +620,7 @@ class Ai1ec_Events_Controller {
611
  'google_url' => 'http://www.google.com/calendar/render?cid=' . urlencode( $subscribe_url ),
612
  'show_subscribe_buttons' => ! $ai1ec_settings->turn_off_subscription_buttons
613
  );
614
- $ai1ec_view_helper->display( 'event-single.php', $args );
615
  }
616
 
617
  /**
@@ -640,7 +649,7 @@ class Ai1ec_Events_Controller {
640
  'contact' => $event->contact_html,
641
  'calendar_url' => $ai1ec_calendar_helper->get_calendar_url( $event ),
642
  );
643
- $ai1ec_view_helper->display( 'event-multi.php', $args );
644
  }
645
 
646
  /**
@@ -661,10 +670,10 @@ class Ai1ec_Events_Controller {
661
  $location = str_replace( "\n", ', ', rtrim( $event->location ) );
662
 
663
  $args = array(
664
- 'event' => &$event,
665
  'location' => $location,
666
  );
667
- $ai1ec_view_helper->display( 'event-excerpt.php', $args );
668
  }
669
 
670
  /**
@@ -683,11 +692,11 @@ class Ai1ec_Events_Controller {
683
  return '';
684
 
685
  $args = array(
686
- 'address' => $event->address,
687
- 'gmap_url_link' => $ai1ec_events_helper->get_gmap_url( $event, false ),
688
- 'hide_maps_until_clicked' => $ai1ec_settings->hide_maps_until_clicked
689
  );
690
- return $ai1ec_view_helper->get_view( 'event-map.php', $args );
691
  }
692
 
693
  /**
@@ -705,7 +714,7 @@ class Ai1ec_Events_Controller {
705
  $args = array(
706
  'event' => &$event,
707
  );
708
- return $ai1ec_view_helper->display( 'event-single-footer.php', $args );
709
  }
710
 
711
  /**
@@ -719,7 +728,7 @@ class Ai1ec_Events_Controller {
719
  global $ai1ec_view_helper;
720
 
721
  $args = array( 'edit' => false );
722
- $ai1ec_view_helper->display( 'event_categories-color_picker.php', $args );
723
  }
724
 
725
  /**
@@ -742,12 +751,13 @@ class Ai1ec_Events_Controller {
742
  $style = 'style="background-color: ' . $color . '"';
743
  $clr = $color;
744
  }
 
745
  $args = array(
746
  'style' => $style,
747
  'color' => $clr,
748
  'edit' => true,
749
  );
750
- $ai1ec_view_helper->display( 'event_categories-color_picker.php', $args );
751
  }
752
 
753
  /**
94
  *
95
  * @return void
96
  **/
97
+ public function init()
98
  {
99
+ global $ai1ec_events_helper, $ai1ec_settings, $wp_locale, $ai1ec_view_helper;
100
 
101
  // Initialize dashboard view
102
  if( is_admin() ) {
104
  // = JS =
105
  // ======
106
  // Include timespan helper functions
107
+ $ai1ec_view_helper->admin_enqueue_script( 'jquery.calendrical', 'jquery.calendrical.js', array( 'jquery' ) );
108
  // Include timespan plugin
109
+ $ai1ec_view_helper->admin_enqueue_script( 'jquery.timespan', 'jquery.timespan.js', array( 'jquery', 'jquery.calendrical' ) );
110
  // Include timespan plugin
111
+ $ai1ec_view_helper->admin_enqueue_script( 'jquery.inputdate', 'jquery.inputdate.js', array( 'jquery', 'jquery.calendrical' ) );
112
  // Include Google Maps API
113
+ wp_enqueue_script( 'gmap_api', 'http://maps.google.com/maps/api/js?sensor=false&language=' . $ai1ec_events_helper->get_lang() );
114
  // Include autocomplete_geomod plugin
115
+ $ai1ec_view_helper->admin_enqueue_script( 'autocomplete_geomod', 'jquery.autocomplete_geomod.js', array( 'jquery' ) );
116
  // Include geo_autocomplete plugin
117
+ $ai1ec_view_helper->admin_enqueue_script( 'geo_autocomplete', 'geo_autocomplete.js', array( 'jquery', 'autocomplete_geomod' ) );
118
  // Include element selector function
119
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-element-selector', 'element-selector.js', array( 'jquery' ) );
120
  // Include jQuery Tools form elements
121
+ $ai1ec_view_helper->admin_enqueue_script( 'jquery.tools-form', 'jquery-tools-1.2.5.min.js', array( 'jquery' ) );
122
  // Include add new event script
123
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-blockui', 'jquery.blockUI.js', array( 'jquery' ) );
124
  // Include date picker plugin
125
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-datepicker', 'datepicker.js', array( 'jquery' ) );
126
+
127
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-add_new_event', 'add_new_event.js', array( 'jquery',
128
+ 'jquery.timespan',
129
+ 'ai1ec-element-selector',
130
+ 'jquery.tools-form',
131
  'ai1ec-blockui',
132
+ 'ai1ec-datepicker' ) );
133
 
134
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-color-picker', 'colorpicker.js', array( 'jquery' ) );
135
 
136
  // Supply custom value to JavaScript from PHP
137
  wp_localize_script( 'ai1ec-add_new_event', 'ai1ec_add_new_event', array(
138
  // Current time, used for date/time pickers
139
+ 'now' => $ai1ec_events_helper->gmt_to_local( time() ),
140
  // Date format for date pickers
141
+ 'date_format' => $ai1ec_settings->input_date_format,
142
  // Names for months in date picker header (escaping is done in wp_localize_script)
143
+ 'month_names' => implode( ',', $wp_locale->month ),
144
  // Names for days in date picker header (escaping is done in wp_localize_script)
145
+ 'day_names' => implode( ',', $wp_locale->weekday_initial ),
146
  // Start the week on this day in the date picker
147
+ 'week_start_day' => $ai1ec_settings->week_start_day,
148
  // 24h time format for time pickers
149
+ 'twentyfour_hour' => $ai1ec_settings->input_24h_time,
150
  // Set region biasing for geo_autocomplete plugin
151
+ 'region' => ( $ai1ec_settings->geo_region_biasing ) ? $ai1ec_events_helper->get_region() : '',
152
  // ICS feed error messages
153
+ 'duplicate_feed_message' => esc_html__( 'This feed is already being imported.', AI1EC_PLUGIN_NAME ),
154
+ 'invalid_url_message' => esc_html__( 'Please enter a valid iCalendar URL.', AI1EC_PLUGIN_NAME ),
155
+ 'disable_autocompletion' => $ai1ec_settings->disable_autocompletion,
156
  ) );
157
 
158
  // =======
159
  // = CSS =
160
  // =======
161
  // include autocomplete style
162
+ $ai1ec_view_helper->admin_enqueue_style( 'autocomplete', 'jquery.autocomplete.css' );
163
  // include colorpicker style
164
+ $ai1ec_view_helper->admin_enqueue_style( 'colorpicker', 'colorpicker.css' );
165
  // include add new event style
166
+ $ai1ec_view_helper->admin_enqueue_style( 'ai1ec_add_new_event', 'add_new_event.css' );
167
  // include datepicker style
168
+ $ai1ec_view_helper->admin_enqueue_style( 'ai1ec_datepicker', 'datepicker.css' );
169
  }
170
  // Initialize front-end view
171
  else
173
  // ======
174
  // = JS =
175
  // ======
176
+ $ai1ec_view_helper->theme_enqueue_script( 'ai1ec-event', 'event.min.js', array( 'jquery' ) );
177
  // Supply custom value to JavaScript from PHP
178
  wp_localize_script( 'ai1ec-event', 'ai1ec_event', array(
179
  // Language for Google Map
183
  // =======
184
  // = CSS =
185
  // =======
186
+ $ai1ec_view_helper->theme_enqueue_style( 'ai1ec-general', 'general.css' );
187
+ $ai1ec_view_helper->theme_enqueue_style( 'ai1ec-event', 'event.css' );
188
+ // Load the print style only if the parameter print is set to true.
189
+ if( isset( $_GET['print'] ) && $_GET['print'] === 'true' ) {
190
+ $ai1ec_view_helper->theme_enqueue_style( 'ai1ec-print', 'print.css' );
191
+ }
192
  }
193
  }
194
 
241
 
242
  $all_day_event = $event->allday ? 'checked="checked"' : '';
243
 
244
+
245
  $start_timestamp = $ai1ec_events_helper->gmt_to_local( $event->start );
246
  $end_timestamp = $ai1ec_events_helper->gmt_to_local( $event->end );
247
 
248
+ $multi_day = $event->multiday;
249
+
250
  $show_map = $event->show_map;
251
  $google_map = $show_map ? 'checked="checked"' : '';
252
 
298
  'timezone' => $timezone,
299
  'exdate' => $exdate
300
  );
301
+ $ai1ec_view_helper->display_admin( 'box_time_and_date.php', $args );
302
 
303
  // =================================================
304
  // = Display event location details and Google map =
305
  // =================================================
306
  $args = array(
307
+ 'venue' => $venue,
308
+ 'country' => $country,
309
+ 'address' => $address,
310
+ 'city' => $city,
311
+ 'province' => $province,
312
+ 'postal_code' => $postal_code,
313
+ 'google_map' => $google_map,
314
+ 'show_map' => $show_map,
315
  );
316
+ $ai1ec_view_helper->display_admin( 'box_event_location.php', $args );
317
 
318
  // ======================
319
  // = Display event cost =
321
  $args = array(
322
  'cost' => $cost
323
  );
324
+ $ai1ec_view_helper->display_admin( 'box_event_cost.php', $args );
325
 
326
  // =========================================
327
  // = Display organizer contact information =
331
  'contact_phone' => $contact_phone,
332
  'contact_email' => $contact_email,
333
  );
334
+ $ai1ec_view_helper->display_admin( 'box_event_contact.php', $args );
335
 
336
  if( $ai1ec_settings->show_publish_button ) {
337
  $args = array();
342
  else
343
  $args["button_value"] = __( 'Submit for Review', AI1EC_PLUGIN_NAME );
344
 
345
+ $ai1ec_view_helper->display_admin( 'box_publish_button.php', $args );
346
  }
347
 
348
  /*
444
  $event->recurrence_rules = $rrule;
445
  $event->exception_rules = $exrule;
446
  $event->exception_dates = $exdate;
447
+
448
  $event->save( ! $is_new );
449
 
450
  $ai1ec_events_helper->delete_event_cache( $post_id );
620
  'google_url' => 'http://www.google.com/calendar/render?cid=' . urlencode( $subscribe_url ),
621
  'show_subscribe_buttons' => ! $ai1ec_settings->turn_off_subscription_buttons
622
  );
623
+ $ai1ec_view_helper->display_theme( 'event-single.php', $args );
624
  }
625
 
626
  /**
649
  'contact' => $event->contact_html,
650
  'calendar_url' => $ai1ec_calendar_helper->get_calendar_url( $event ),
651
  );
652
+ $ai1ec_view_helper->display_theme( 'event-multi.php', $args );
653
  }
654
 
655
  /**
670
  $location = str_replace( "\n", ', ', rtrim( $event->location ) );
671
 
672
  $args = array(
673
+ 'event' => &$event,
674
  'location' => $location,
675
  );
676
+ $ai1ec_view_helper->display_theme( 'event-excerpt.php', $args );
677
  }
678
 
679
  /**
692
  return '';
693
 
694
  $args = array(
695
+ 'address' => $event->address,
696
+ 'gmap_url_link' => $ai1ec_events_helper->get_gmap_url( $event, false ),
697
+ 'hide_maps_until_clicked' => $ai1ec_settings->hide_maps_until_clicked,
698
  );
699
+ return $ai1ec_view_helper->get_theme_view( 'event-map.php', $args );
700
  }
701
 
702
  /**
714
  $args = array(
715
  'event' => &$event,
716
  );
717
+ return $ai1ec_view_helper->display_theme( 'event-single-footer.php', $args );
718
  }
719
 
720
  /**
728
  global $ai1ec_view_helper;
729
 
730
  $args = array( 'edit' => false );
731
+ $ai1ec_view_helper->display_admin( 'event_categories-color_picker.php', $args );
732
  }
733
 
734
  /**
751
  $style = 'style="background-color: ' . $color . '"';
752
  $clr = $color;
753
  }
754
+
755
  $args = array(
756
  'style' => $style,
757
  'color' => $clr,
758
  'edit' => true,
759
  );
760
+ $ai1ec_view_helper->display_admin( 'event_categories-color_picker.php', $args );
761
  }
762
 
763
  /**
app/controller/class-ai1ec-importer-controller.php CHANGED
@@ -88,8 +88,8 @@ class Ai1ec_Importer_Controller {
88
 
89
  if( ! isset( $wp_importers['ai1ec_the_events_calendar'] ) ) {
90
  $wp_importers['ai1ec_the_events_calendar'] = array(
91
- __( 'The Events Calendar → All-in-One Event Calendar', AI1EC_PLUGIN_NAME ),
92
- __( 'Imports events created using The Events Calendar plugin into the All-in-One Event Calendar', AI1EC_PLUGIN_NAME ),
93
  array( &$this, 'import_the_events_calendar' )
94
  );
95
  }
@@ -199,7 +199,7 @@ class Ai1ec_Importer_Controller {
199
  $imported_events++;
200
  }
201
 
202
- $ai1ec_view_helper->display( "import.php", array( 'imported_events' => $imported_events ) );
203
  }
204
  }
205
  // END class
88
 
89
  if( ! isset( $wp_importers['ai1ec_the_events_calendar'] ) ) {
90
  $wp_importers['ai1ec_the_events_calendar'] = array(
91
+ __( 'The Events Calendar → All-in-One Calendar', AI1EC_PLUGIN_NAME ),
92
+ __( 'Imports events created using The Events Calendar plugin into the All-in-One Calendar', AI1EC_PLUGIN_NAME ),
93
  array( &$this, 'import_the_events_calendar' )
94
  );
95
  }
199
  $imported_events++;
200
  }
201
 
202
+ $ai1ec_view_helper->display_admin( "import.php", array( 'imported_events' => $imported_events ) );
203
  }
204
  }
205
  // END class
app/controller/class-ai1ec-settings-controller.php CHANGED
@@ -45,44 +45,62 @@ class Ai1ec_Settings_Controller {
45
  }
46
 
47
  /**
48
- * view function
49
- *
50
  * Display this plugin's settings page in the admin.
51
  *
52
  * @return void
53
- **/
54
- function view() {
55
  global $ai1ec_view_helper,
56
- $ai1ec_settings;
57
 
58
  if( isset( $_REQUEST['ai1ec_save_settings'] ) ) {
59
- $this->save();
60
  }
61
  $args = array(
62
- 'settings_page' => $ai1ec_settings->settings_page
 
63
  );
64
- $ai1ec_view_helper->display( 'settings.php', $args );
65
  }
66
 
67
  /**
68
- * save function
69
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  * Save the submitted settings form.
71
  *
 
72
  * @return void
73
- **/
74
- function save() {
75
  global $ai1ec_settings,
76
- $ai1ec_view_helper;
77
 
78
- $ai1ec_settings->update( $_REQUEST );
 
79
  $ai1ec_settings->save();
80
 
81
  $args = array(
82
- "msg" => __( "Settings Updated.", AI1EC_PLUGIN_NAME )
83
  );
84
 
85
- $ai1ec_view_helper->display( "save_successful.php", $args );
86
  }
87
 
88
  /**
@@ -94,7 +112,7 @@ class Ai1ec_Settings_Controller {
94
  **/
95
  function add_ics_feed() {
96
  global $ai1ec_view_helper,
97
- $wpdb;
98
 
99
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
100
 
@@ -122,7 +140,7 @@ class Ai1ec_Settings_Controller {
122
  'events' => 0
123
  );
124
  // display added feed row
125
- $ai1ec_view_helper->display( 'feed_row.php', $args );
126
 
127
  $output = ob_get_contents();
128
  ob_end_clean();
@@ -141,23 +159,22 @@ class Ai1ec_Settings_Controller {
141
  *
142
  * Deletes all event posts that are from that selected feed
143
  *
144
- * @param bool $ajax When set to true, the data is outputted using json_response
145
  * @param bool|string $feed_url Feed URL
146
  *
147
  * @return void
148
  **/
149
- function flush_ics_feed( $ajax = true, $feed_url = false )
150
- {
151
  global $wpdb,
152
- $ai1ec_view_helper;
153
  $ics_id = isset( $_REQUEST['ics_id'] ) ? (int) $_REQUEST['ics_id'] : 0;
154
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
155
 
156
- if( $feed_url === false )
157
- $feed_url = $wpdb->get_var( $wpdb->prepare( "SELECT feed_url FROM $table_name WHERE feed_id = %d", $ics_id ) );
 
158
 
159
- if( $feed_url )
160
- {
161
  $table_name = $wpdb->prefix . 'ai1ec_events';
162
  $sql = "SELECT post_id FROM {$table_name} WHERE ical_feed_url = '%s'";
163
  $events = $wpdb->get_results( $wpdb->prepare( $sql, $feed_url ) );
@@ -169,21 +186,20 @@ class Ai1ec_Settings_Controller {
169
  }
170
 
171
  $output = array(
172
- 'error' => false,
173
  'message' => sprintf( __( 'Flushed %d events', AI1EC_PLUGIN_NAME ), $total ),
174
  'count' => $total,
175
  );
176
- }
177
- else
178
- {
179
  $output = array(
180
- 'error' => true,
181
  'message' => __( 'Invalid ICS feed ID', AI1EC_PLUGIN_NAME )
182
  );
183
  }
184
 
185
- if( $ajax )
186
  $ai1ec_view_helper->json_response( $output );
 
187
  }
188
 
189
  /**
@@ -193,18 +209,16 @@ class Ai1ec_Settings_Controller {
193
  *
194
  * @return void
195
  **/
196
- function update_ics_feed()
197
- {
198
  global $wpdb,
199
- $ai1ec_view_helper,
200
- $ai1ec_importer_helper;
201
 
202
  $feed_id = (int) $_REQUEST['ics_id'];
203
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
204
  $feed = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE feed_id = %d", $feed_id ) );
205
 
206
- if( $feed )
207
- {
208
  // flush the feed
209
  $this->flush_ics_feed( false, $feed->feed_url );
210
  // reimport the feed
@@ -223,9 +237,7 @@ class Ai1ec_Settings_Controller {
223
  'count' => $count,
224
  );
225
  }
226
- }
227
- else
228
- {
229
  $output = array(
230
  'error' => true,
231
  'message' => __( 'Invalid ICS feed ID', AI1EC_PLUGIN_NAME )
@@ -242,10 +254,9 @@ class Ai1ec_Settings_Controller {
242
  *
243
  * @return String JSON output
244
  **/
245
- function delete_ics_feed()
246
- {
247
  global $wpdb,
248
- $ai1ec_view_helper;
249
 
250
  $ics_id = (int) $_REQUEST['ics_id'];
251
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
@@ -257,7 +268,7 @@ class Ai1ec_Settings_Controller {
257
 
258
  $ai1ec_view_helper->json_response( $output );
259
  }
260
-
261
  /**
262
  * disable_notification function
263
  *
@@ -265,7 +276,7 @@ class Ai1ec_Settings_Controller {
265
  **/
266
  function disable_notification() {
267
  global $ai1ec_view_helper, $ai1ec_settings;
268
-
269
  $ai1ec_settings->update_notification( false );
270
  $output = array(
271
  'error' => false,
@@ -276,85 +287,83 @@ class Ai1ec_Settings_Controller {
276
  }
277
 
278
  /**
279
- * add_meta_boxes function
280
- *
281
- *
282
  *
283
  * @return void
284
- **/
285
- function add_meta_boxes() {
286
- global $ai1ec_settings_helper,
287
- $ai1ec_settings;
288
-
289
- /* Add the 'General Settings' meta box. */
290
- add_meta_box( 'general-settings',
291
- _x( 'General Settings', 'meta box', AI1EC_PLUGIN_NAME ),
292
- array( &$ai1ec_settings_helper, 'general_settings_meta_box' ),
293
- $ai1ec_settings->settings_page,
294
- 'left-side',
295
- 'default' );
296
-
297
- /* Add the 'The Seed Studio' meta box. */
298
- add_meta_box( 'the-seed-studio-settings',
299
- _x( 'The Seed Studio Support', 'meta box', AI1EC_PLUGIN_NAME ),
300
- array( &$ai1ec_settings_helper, 'the_seed_studio_meta_box' ),
301
- $ai1ec_settings->settings_page,
302
- 'right-side',
303
- 'default' );
304
- /* Add the 'ICS Import Settings' meta box. */
305
- add_meta_box( 'ics-import-settings',
306
- _x( 'ICS Import Settings', 'meta box', AI1EC_PLUGIN_NAME ),
307
- array( &$ai1ec_settings_helper, 'ics_import_settings_meta_box' ),
308
- $ai1ec_settings->settings_page,
309
- 'left-side',
310
- 'default' );
311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  }
313
 
314
  /**
315
- * admin_enqueue_scripts function
316
- *
317
- * Enqueue any scripts and styles in the admin side, depending on context.
318
  *
319
  * @return void
320
- **/
321
- function admin_enqueue_scripts( $hook_suffix ) {
322
- global $ai1ec_settings;
323
-
324
- if( $hook_suffix == 'widgets.php' ) {
325
- // Scripts
326
- wp_enqueue_script( 'ai1ec-widget', AI1EC_JS_URL . '/widget.js', array( 'jquery' ), AI1EC_VERSION );
327
- // Styles
328
- wp_enqueue_style( 'ai1ec-widget', AI1EC_CSS_URL . '/widget.css', array(), AI1EC_VERSION );
329
- }
330
 
331
- if( isset( $ai1ec_settings->settings_page ) && $hook_suffix == $ai1ec_settings->settings_page ) {
332
- // Scripts
333
- wp_enqueue_script( 'common' );
334
- wp_enqueue_script( 'wp-lists' );
335
- wp_enqueue_script( 'postbox' );
336
-
337
- wp_enqueue_script( 'ai1ec-settings', AI1EC_JS_URL . '/settings.js', array( 'jquery' ), AI1EC_VERSION );
338
-
339
- wp_localize_script( 'ai1ec-settings', 'ai1ec_settings', array(
340
- 'page' => $ai1ec_settings->settings_page,
341
- ) );
342
- // Styles
343
- wp_enqueue_style( 'ai1ec-widget', AI1EC_CSS_URL . '/settings.css', array(), AI1EC_VERSION );
344
- }
 
 
 
 
345
  }
346
 
347
  /**
348
  * plugin_action_links function
349
  *
350
- * Adds a link to Settings page in plugin list page
351
  *
352
  * @return array
353
  **/
354
  function plugin_action_links( $links ) {
355
- $settings = sprintf( __( '<a href="%s">Settings</a>', AI1EC_PLUGIN_NAME ), admin_url( 'edit.php?post_type=' . AI1EC_POST_TYPE . '&page=' . AI1EC_PLUGIN_NAME . '-settings' ) );
356
- array_unshift( $links, $settings );
357
- return $links;
358
  }
359
 
360
  /**
@@ -365,12 +374,13 @@ class Ai1ec_Settings_Controller {
365
  * @return void
366
  **/
367
  function plugin_row_meta( $links, $file ) {
368
- if( $file == AI1EC_PLUGIN_BASENAME ) :
369
- $links[] = sprintf( __( '<a href="%s" target="_blank">Donate</a>', AI1EC_PLUGIN_NAME ), 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9JJMUW48W2ED8' );
370
- $links[] = sprintf( __( '<a href="%s" target="_blank">Get Support</a>', AI1EC_PLUGIN_NAME ), 'http://theseednetwork.com/get-supported/' );
371
- endif;
372
 
373
- return $links;
374
  }
 
375
  }
376
  // END class
45
  }
46
 
47
  /**
 
 
48
  * Display this plugin's settings page in the admin.
49
  *
50
  * @return void
51
+ */
52
+ function view_settings() {
53
  global $ai1ec_view_helper,
54
+ $ai1ec_settings;
55
 
56
  if( isset( $_REQUEST['ai1ec_save_settings'] ) ) {
57
+ $this->save( 'settings' );
58
  }
59
  $args = array(
60
+ 'title' => __( 'All-in-One Calendar: Settings', AI1EC_PLUGIN_NAME ),
61
+ 'settings_page' => $ai1ec_settings->settings_page,
62
  );
63
+ $ai1ec_view_helper->display_admin( 'settings.php', $args );
64
  }
65
 
66
  /**
67
+ * Display this plugin's feeds page in the admin.
68
  *
69
+ * @return void
70
+ */
71
+ function view_feeds() {
72
+ global $ai1ec_view_helper,
73
+ $ai1ec_settings;
74
+
75
+ if( isset( $_REQUEST['ai1ec_save_settings'] ) ) {
76
+ $this->save( 'feeds' );
77
+ }
78
+ $args = array(
79
+ 'title' => __( 'All-in-One Calendar: Calendar Feeds', AI1EC_PLUGIN_NAME ),
80
+ 'settings_page' => $ai1ec_settings->feeds_page,
81
+ );
82
+ $ai1ec_view_helper->display_admin( 'settings.php', $args );
83
+ }
84
+
85
+ /**
86
  * Save the submitted settings form.
87
  *
88
+ * @param string $settings_page Which settings page is being saved.
89
  * @return void
90
+ */
91
+ function save( $settings_page ) {
92
  global $ai1ec_settings,
93
+ $ai1ec_view_helper;
94
 
95
+ $ai1ec_settings->update( $settings_page, $_REQUEST );
96
+ do_action( 'ai1ec_save_settings', $settings_page, $_REQUEST );
97
  $ai1ec_settings->save();
98
 
99
  $args = array(
100
+ 'msg' => __( 'Settings Updated.', AI1EC_PLUGIN_NAME )
101
  );
102
 
103
+ $ai1ec_view_helper->display_admin( "save_successful.php", $args );
104
  }
105
 
106
  /**
112
  **/
113
  function add_ics_feed() {
114
  global $ai1ec_view_helper,
115
+ $wpdb;
116
 
117
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
118
 
140
  'events' => 0
141
  );
142
  // display added feed row
143
+ $ai1ec_view_helper->display_admin( 'feed_row.php', $args );
144
 
145
  $output = ob_get_contents();
146
  ob_end_clean();
159
  *
160
  * Deletes all event posts that are from that selected feed
161
  *
162
+ * @param bool $ajax When set to TRUE, the data is outputted using json_response
163
  * @param bool|string $feed_url Feed URL
164
  *
165
  * @return void
166
  **/
167
+ function flush_ics_feed( $ajax = TRUE, $feed_url = FALSE ) {
 
168
  global $wpdb,
169
+ $ai1ec_view_helper;
170
  $ics_id = isset( $_REQUEST['ics_id'] ) ? (int) $_REQUEST['ics_id'] : 0;
171
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
172
 
173
+ if( $feed_url === FALSE ) {
174
+ $feed_url = $wpdb->get_var( $wpdb->prepare( "SELECT feed_url FROM $table_name WHERE feed_id = %d", $ics_id ) );
175
+ }
176
 
177
+ if( $feed_url ) {
 
178
  $table_name = $wpdb->prefix . 'ai1ec_events';
179
  $sql = "SELECT post_id FROM {$table_name} WHERE ical_feed_url = '%s'";
180
  $events = $wpdb->get_results( $wpdb->prepare( $sql, $feed_url ) );
186
  }
187
 
188
  $output = array(
189
+ 'error' => FALSE,
190
  'message' => sprintf( __( 'Flushed %d events', AI1EC_PLUGIN_NAME ), $total ),
191
  'count' => $total,
192
  );
193
+ } else {
 
 
194
  $output = array(
195
+ 'error' => TRUE,
196
  'message' => __( 'Invalid ICS feed ID', AI1EC_PLUGIN_NAME )
197
  );
198
  }
199
 
200
+ if( $ajax ) {
201
  $ai1ec_view_helper->json_response( $output );
202
+ }
203
  }
204
 
205
  /**
209
  *
210
  * @return void
211
  **/
212
+ function update_ics_feed() {
 
213
  global $wpdb,
214
+ $ai1ec_view_helper,
215
+ $ai1ec_importer_helper;
216
 
217
  $feed_id = (int) $_REQUEST['ics_id'];
218
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
219
  $feed = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE feed_id = %d", $feed_id ) );
220
 
221
+ if( $feed ) {
 
222
  // flush the feed
223
  $this->flush_ics_feed( false, $feed->feed_url );
224
  // reimport the feed
237
  'count' => $count,
238
  );
239
  }
240
+ } else {
 
 
241
  $output = array(
242
  'error' => true,
243
  'message' => __( 'Invalid ICS feed ID', AI1EC_PLUGIN_NAME )
254
  *
255
  * @return String JSON output
256
  **/
257
+ function delete_ics_feed() {
 
258
  global $wpdb,
259
+ $ai1ec_view_helper;
260
 
261
  $ics_id = (int) $_REQUEST['ics_id'];
262
  $table_name = $wpdb->prefix . 'ai1ec_event_feeds';
268
 
269
  $ai1ec_view_helper->json_response( $output );
270
  }
271
+
272
  /**
273
  * disable_notification function
274
  *
276
  **/
277
  function disable_notification() {
278
  global $ai1ec_view_helper, $ai1ec_settings;
279
+
280
  $ai1ec_settings->update_notification( false );
281
  $output = array(
282
  'error' => false,
287
  }
288
 
289
  /**
290
+ * Add meta boxes to settings screen.
 
 
291
  *
292
  * @return void
293
+ */
294
+ function add_settings_meta_boxes() {
295
+ global $ai1ec_settings_helper,
296
+ $ai1ec_settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
 
298
+ // Add the 'General Settings' meta box.
299
+ add_meta_box(
300
+ 'ai1ec-general-settings',
301
+ _x( 'General Settings', 'meta box', AI1EC_PLUGIN_NAME ),
302
+ array( &$ai1ec_settings_helper, 'general_settings_meta_box' ),
303
+ $ai1ec_settings->settings_page,
304
+ 'left-side',
305
+ 'default'
306
+ );
307
+ // Add the 'Advanced Settings' meta box.
308
+ add_meta_box(
309
+ 'ai1ec-advanced-settings',
310
+ _x( 'Advanced Settings', 'meta box', AI1EC_PLUGIN_NAME ),
311
+ array( &$ai1ec_settings_helper, 'advanced_settings_meta_box' ),
312
+ $ai1ec_settings->settings_page,
313
+ 'left-side',
314
+ 'default'
315
+ );
316
+ // Add the 'Then.ly Support' meta box.
317
+ add_meta_box(
318
+ 'the-seed-studio-settings',
319
+ _x( 'Then.ly Support', 'meta box', AI1EC_PLUGIN_NAME ),
320
+ array( &$ai1ec_settings_helper, 'the_seed_studio_meta_box' ),
321
+ $ai1ec_settings->settings_page,
322
+ 'right-side',
323
+ 'default'
324
+ );
325
  }
326
 
327
  /**
328
+ * Add meta boxes to feeds screen.
 
 
329
  *
330
  * @return void
331
+ */
332
+ function add_feeds_meta_boxes() {
333
+ global $ai1ec_settings_helper,
334
+ $ai1ec_settings;
 
 
 
 
 
 
335
 
336
+ // Add the 'ICS Import Settings' meta box.
337
+ add_meta_box(
338
+ 'ai1ec-feeds',
339
+ _x( 'Feed Subscriptions', 'meta box', AI1EC_PLUGIN_NAME ),
340
+ array( &$ai1ec_settings_helper, 'feeds_meta_box' ),
341
+ $ai1ec_settings->feeds_page,
342
+ 'left-side',
343
+ 'default'
344
+ );
345
+ // Add the 'Then.ly Support' meta box.
346
+ add_meta_box(
347
+ 'the-seed-studio-settings',
348
+ _x( 'Then.ly Support', 'meta box', AI1EC_PLUGIN_NAME ),
349
+ array( &$ai1ec_settings_helper, 'the_seed_studio_meta_box' ),
350
+ $ai1ec_settings->feeds_page,
351
+ 'right-side',
352
+ 'default'
353
+ );
354
  }
355
 
356
  /**
357
  * plugin_action_links function
358
  *
359
+ * Adds a link to Settings page in plugin list page.
360
  *
361
  * @return array
362
  **/
363
  function plugin_action_links( $links ) {
364
+ $settings = sprintf( __( '<a href="%s">Settings</a>', AI1EC_PLUGIN_NAME ), admin_url( AI1EC_SETTINGS_BASE_URL ) );
365
+ array_unshift( $links, $settings );
366
+ return $links;
367
  }
368
 
369
  /**
374
  * @return void
375
  **/
376
  function plugin_row_meta( $links, $file ) {
377
+ if( $file == AI1EC_PLUGIN_BASENAME ) {
378
+ $links[] = sprintf( __( '<a href="%s" target="_blank">Donate</a>', AI1EC_PLUGIN_NAME ), 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9JJMUW48W2ED8' );
379
+ $links[] = sprintf( __( '<a href="%s" target="_blank">Get Support</a>', AI1EC_PLUGIN_NAME ), 'http://help.then.ly' );
380
+ }
381
 
382
+ return $links;
383
  }
384
+
385
  }
386
  // END class
app/controller/class-ai1ec-themes-controller.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //
3
+ // class-ai1ec-themes-controller.php
4
+ // all-in-one-event-calendar
5
+ //
6
+ // Created by The Seed Studio on 2012-04-05.
7
+ //
8
+
9
+ /**
10
+ * Ai1ec_Themes_Controller class
11
+ *
12
+ * @package Controllers
13
+ * @author The Seed Studio
14
+ **/
15
+ class Ai1ec_Themes_Controller {
16
+ /**
17
+ * _instance class variable
18
+ *
19
+ * Class instance
20
+ *
21
+ * @var null | object
22
+ **/
23
+ private static $_instance = NULL;
24
+
25
+ /**
26
+ * get_instance function
27
+ *
28
+ * Return singleton instance
29
+ *
30
+ * @return object
31
+ **/
32
+ static function get_instance() {
33
+ if( self::$_instance === NULL ) {
34
+ self::$_instance = new self();
35
+ }
36
+
37
+ return self::$_instance;
38
+ }
39
+
40
+ /**
41
+ * Constructor
42
+ *
43
+ * Default constructor
44
+ **/
45
+ private function __construct() { }
46
+
47
+ /**
48
+ * Returns the root path of ai1ec-themes.
49
+ *
50
+ * @return string
51
+ **/
52
+ public function template_root_path( $template ) {
53
+ return AI1EC_THEMES_ROOT . '/' . $template;
54
+ }
55
+
56
+ /**
57
+ * Returns the root URL of ai1ec-themes.
58
+ *
59
+ * @return string
60
+ **/
61
+ public function template_root_url( $template ) {
62
+ return AI1EC_THEMES_URL . '/' . $template;
63
+ }
64
+
65
+ /**
66
+ * Returns the path to the active calendar theme.
67
+ *
68
+ * @return string
69
+ */
70
+ public function active_template_path() {
71
+ return apply_filters(
72
+ 'ai1ec_template_root_path',
73
+ apply_filters(
74
+ 'ai1ec_template',
75
+ get_option( 'ai1ec_template', AI1EC_DEFAULT_THEME_NAME )
76
+ )
77
+ );
78
+ }
79
+
80
+ /**
81
+ * Returns the URL to the active calendar theme.
82
+ *
83
+ * @return string
84
+ */
85
+ public function active_template_url() {
86
+ return apply_filters(
87
+ 'ai1ec_template_root_url',
88
+ apply_filters(
89
+ 'ai1ec_template',
90
+ get_option( 'ai1ec_template', AI1EC_DEFAULT_THEME_NAME )
91
+ )
92
+ );
93
+ }
94
+
95
+ /**
96
+ * are_themes_available function
97
+ *
98
+ * @return bool
99
+ **/
100
+ public function are_themes_available() {
101
+ // are themes folder and Vortex theme available?
102
+ if( @is_dir( AI1EC_THEMES_ROOT ) === true && @is_dir( AI1EC_DEFAULT_THEME_PATH ) === true ) {
103
+ return true;
104
+ } else {
105
+ // try to create AI1EC_THEMES_ROOT
106
+ if( ! @mkdir( AI1EC_THEMES_ROOT ) )
107
+ return false;
108
+
109
+ // copy themes-ai1ec from plugin's root to wp-content's themes root
110
+ $this->copy_directory( AI1EC_PATH . '/' . AI1EC_THEMES_FOLDER, AI1EC_THEMES_ROOT );
111
+
112
+ if( @is_dir( AI1EC_THEMES_ROOT ) === false || @is_dir( AI1EC_DEFAULT_THEME_PATH ) === false )
113
+ return false;
114
+ }
115
+ return true;
116
+ }
117
+
118
+ /**
119
+ * copy_directory function
120
+ *
121
+ * @return void
122
+ **/
123
+ private function copy_directory( $source, $destination ) {
124
+ if( is_dir( $source ) ) {
125
+ @mkdir( $destination );
126
+ $directory = dir( $source );
127
+ while( FALSE !== ( $readdirectory = $directory->read() ) ) {
128
+ if( $readdirectory == '.' || $readdirectory == '..' ) {
129
+ continue;
130
+ }
131
+ $PathDir = $source . '/' . $readdirectory;
132
+ if( is_dir( $PathDir ) ) {
133
+ $this->copy_directory( $PathDir, $destination . '/' . $readdirectory );
134
+ continue;
135
+ }
136
+ copy( $PathDir, $destination . '/' . $readdirectory );
137
+ }
138
+
139
+ $directory->close();
140
+ } else {
141
+ copy( $source, $destination );
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Called immediately after WP theme's functions.php is loaded. Load our own
147
+ * theme's functions.php at this time, and the default theme's functions.php.
148
+ */
149
+ function setup_theme() {
150
+ $functions_files = array(
151
+ $this->active_template_path() . '/functions.php',
152
+ AI1EC_DEFAULT_THEME_PATH . '/functions.php',
153
+ );
154
+
155
+ $functions_files = array_unique( $functions_files );
156
+
157
+ foreach( $functions_files as $file ) {
158
+ if ( file_exists( $file ) ) {
159
+ include( $file );
160
+ }
161
+ }
162
+ }
163
+ }
164
+ // END class
app/helper/class-ai1ec-app-helper.php CHANGED
@@ -100,46 +100,55 @@ class Ai1ec_App_Helper {
100
  * @return void
101
  **/
102
  function create_post_type() {
103
- global $ai1ec_settings;
104
-
105
- // if the event contributor role is not created, create it
106
- if( !get_role( 'ai1ec_event_assistant' ) ) {
107
 
108
- // creating event contributor role with the same capabilities
109
- // as subscriber role, later in this file, event contributor role will be extended
110
- // to include more capabilities
 
111
  $caps = get_role( 'subscriber' )->capabilities;
112
- add_role( 'ai1ec_event_assistant', 'Event Contributor', $caps );
113
-
114
- // add event managing capability to administrator, editor, author
115
- foreach( array( 'administrator', 'editor', 'author' ) as $user ) {
116
- $role = get_role( $user );
117
- // read events
118
- $role->add_cap( 'read_ai1ec_event' );
119
- // edit events
120
- $role->add_cap( 'edit_ai1ec_event' );
121
- $role->add_cap( 'edit_ai1ec_events' );
122
- $role->add_cap( 'edit_others_ai1ec_events' );
123
- $role->add_cap( 'edit_private_ai1ec_events' );
124
- $role->add_cap( 'edit_published_ai1ec_events' );
125
- // delete events
126
- $role->add_cap( 'delete_ai1ec_event' );
127
- $role->add_cap( 'delete_ai1ec_events' );
128
- $role->add_cap( 'delete_others_ai1ec_events' );
129
- $role->add_cap( 'delete_published_ai1ec_events' );
130
- $role->add_cap( 'delete_private_ai1ec_events' );
131
- // publish events
132
- $role->add_cap( 'publish_ai1ec_events' );
133
- // read private events
134
- $role->add_cap( 'read_private_ai1ec_events' );
135
- }
136
-
137
- // add event managing capability to contributors
138
- $role = get_role( 'ai1ec_event_assistant' );
139
  $role->add_cap( 'edit_ai1ec_events' );
140
  $role->add_cap( 'delete_ai1ec_event' );
141
  $role->add_cap( 'read' );
142
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  // ===============================
144
  // = labels for custom post type =
145
  // ===============================
@@ -171,31 +180,31 @@ class Ai1ec_App_Helper {
171
  $args = array(
172
  'labels' => $labels,
173
  'public' => true,
174
- 'publicly_queryable' => true,
175
- 'show_ui' => true,
176
- 'show_in_menu' => true,
177
- 'query_var' => true,
178
- 'rewrite' => true,
179
- 'capability_type' => array( 'ai1ec_event', 'ai1ec_events' ),
180
- 'capabilities' => array(
181
- 'read_post' => 'read_ai1ec_event',
182
- 'edit_post' => 'edit_ai1ec_event',
183
- 'edit_posts' => 'edit_ai1ec_events',
184
- 'edit_others_posts' => 'edit_others_ai1ec_events',
185
- 'edit_private_posts' => 'edit_private_ai1ec_events',
186
- 'edit_published_posts' => 'edit_published_ai1ec_events',
187
- 'delete_post' => 'delete_ai1ec_event',
188
- 'delete_posts' => 'delete_ai1ec_events',
189
- 'delete_others_posts' => 'delete_others_ai1ec_events',
190
- 'delete_published_posts' => 'delete_published_ai1ec_events',
191
- 'delete_private_posts' => 'delete_private_ai1ec_events',
192
- 'publish_posts' => 'publish_ai1ec_events',
193
- 'read_private_posts' => 'read_private_ai1ec_events' ),
194
- 'has_archive' => true,
195
- 'hierarchical' => false,
196
- 'menu_position' => 5,
197
- 'supports' => $supports,
198
- 'exclude_from_search' => $ai1ec_settings->exclude_from_search
199
  );
200
 
201
  // ========================================
@@ -213,7 +222,7 @@ class Ai1ec_App_Helper {
213
  'name' => _x( 'Event Tags', 'Event tags taxonomy', AI1EC_PLUGIN_NAME ),
214
  'singular_name' => _x( 'Event Tag', 'Event tags taxonomy (singular)', AI1EC_PLUGIN_NAME )
215
  );
216
-
217
  // ==================================
218
  // = labels for event feeds taxonomy =
219
  // ==================================
@@ -230,10 +239,10 @@ class Ai1ec_App_Helper {
230
  'hierarchical' => true,
231
  'rewrite' => array( 'slug' => 'events_categories' ),
232
  'capabilities' => array(
233
- 'manage_terms' => 'manage_categories',
234
- 'edit_terms' => 'manage_categories',
235
- 'delete_terms' => 'manage_categories',
236
- 'assign_terms' => 'edit_ai1ec_events'
237
  )
238
  );
239
 
@@ -245,13 +254,13 @@ class Ai1ec_App_Helper {
245
  'hierarchical' => false,
246
  'rewrite' => array( 'slug' => 'events_tags' ),
247
  'capabilities' => array(
248
- 'manage_terms' => 'manage_categories',
249
- 'edit_terms' => 'manage_categories',
250
- 'delete_terms' => 'manage_categories',
251
- 'assign_terms' => 'edit_ai1ec_events'
252
  )
253
  );
254
-
255
  // ================================
256
  // = args for event feeds taxonomy =
257
  // ================================
@@ -260,10 +269,10 @@ class Ai1ec_App_Helper {
260
  'hierarchical' => false,
261
  'rewrite' => array( 'slug' => 'events_feeds' ),
262
  'capabilities' => array(
263
- 'manage_terms' => 'manage_categories',
264
- 'edit_terms' => 'manage_categories',
265
- 'delete_terms' => 'manage_categories',
266
- 'assign_terms' => 'edit_ai1ec_events'
267
  ),
268
  'public' => false // don't show taxonomy in admin UI
269
  );
@@ -277,7 +286,7 @@ class Ai1ec_App_Helper {
277
  // = register event tags taxonomy =
278
  // ================================
279
  register_taxonomy( 'events_tags', array( AI1EC_POST_TYPE ), $events_tags_args );
280
-
281
  // ================================
282
  // = register event tags taxonomy =
283
  // ================================
@@ -309,12 +318,12 @@ class Ai1ec_App_Helper {
309
  wp_dropdown_categories( array(
310
  'show_option_all' => __( 'Show All ', AI1EC_PLUGIN_NAME ) . $tax_obj->label,
311
  'taxonomy' => $tax_slug,
312
- 'name' => $tax_obj->name,
313
- 'orderby' => 'name',
314
- 'selected' => isset( $_GET[$tax_slug] ) ? $_GET[$tax_slug] : '',
315
- 'hierarchical' => $tax_obj->hierarchical,
316
- 'show_count' => true,
317
- 'hide_if_empty' => true
318
  ));
319
  }
320
  }
@@ -331,21 +340,22 @@ class Ai1ec_App_Helper {
331
  **/
332
  function get_all_items_name() {
333
 
334
- // if current user can publish events
335
- if( current_user_can( 'publish_ai1ec_events' ) ) {
336
- // get all pending events
337
- $query = new WP_Query( array ( 'post_type' => 'ai1ec_event', 'post_status' => 'pending', 'posts_per_page' => -1, ) );
338
-
339
- // at least 1 pending event?
340
- if( $query->post_count > 0 ) {
341
- // append the pending events number to the menu
342
- return sprintf( __( 'All Events <span class="update-plugins count-%d" title="%d Pending Events"><span class="update-count">%d</span></span>', AI1EC_PLUGIN_NAME ),
343
- $query->post_count, $query->post_count, $query->post_count );
344
- }
345
- }
346
-
347
- // no pending events, or the user doesn't have sufficient capabilities
348
- return __( 'All Events', AI1EC_PLUGIN_NAME );
 
349
  }
350
 
351
  /**
@@ -362,12 +372,12 @@ class Ai1ec_App_Helper {
362
  foreach( $filters as $tax_slug ) {
363
  $var = &$query->query_vars[$tax_slug];
364
  if( isset( $var ) ) {
365
- $term = null;
366
 
367
- if( is_numeric( $var ) )
368
- $term = get_term_by( 'id', $var, $tax_slug );
369
  else
370
- $term = get_term_by( 'slug', $var, $tax_slug );
371
 
372
  if( isset( $term->slug ) ) {
373
  $var = $term->slug;
@@ -384,7 +394,6 @@ class Ai1ec_App_Helper {
384
  $query->query_vars["order"] = 'desc';
385
  }
386
  }
387
-
388
  }
389
 
390
  /**
@@ -415,20 +424,23 @@ class Ai1ec_App_Helper {
415
  /**
416
  * add_meta_boxes function
417
  *
418
- * Display event meta_box when creating or editing an event
419
  *
420
  * @return void
421
  **/
422
  function add_meta_boxes() {
423
  global $ai1ec_events_controller;
 
424
  add_meta_box(
425
- AI1EC_POST_TYPE,
426
- __( 'Event Details', AI1EC_PLUGIN_NAME ),
427
- array( &$ai1ec_events_controller, 'meta_box_view' ),
428
- AI1EC_POST_TYPE
429
- );
 
 
430
  }
431
-
432
  /**
433
  * screen_layout_columns function
434
  *
@@ -438,7 +450,7 @@ class Ai1ec_App_Helper {
438
  **/
439
  function screen_layout_columns( $columns, $screen ) {
440
  global $ai1ec_settings;
441
-
442
  if( isset( $ai1ec_settings->settings_page ) && $screen == $ai1ec_settings->settings_page )
443
  $columns[$ai1ec_settings->settings_page] = 2;
444
 
@@ -507,12 +519,12 @@ class Ai1ec_App_Helper {
507
  * @return mixed
508
  **/
509
  function get_param( $param, $default='' ) {
510
- if( isset( $_POST[$param] ) )
511
- return $_POST[$param];
512
- if( isset( $_GET[$param] ) )
513
- return $_GET[$param];
514
- return $default;
515
- }
516
 
517
  /**
518
  * get_param_delimiter_char function
@@ -523,11 +535,11 @@ class Ai1ec_App_Helper {
523
  *
524
  * @return string
525
  **/
526
- function get_param_delimiter_char( $link ) {
527
- return strpos( $link, '?' ) === false ? '?' : '&';
528
  }
529
 
530
- /**
531
  * inject_categories function
532
  *
533
  * Displays event categories whenever post categories are requested
@@ -544,119 +556,119 @@ class Ai1ec_App_Helper {
544
  {
545
  global $ai1ec_settings;
546
 
547
- if( in_array( 'category', $taxonomies ) )
548
- {
549
- // Create fake calendar page category
550
- $count_args = $args;
551
- $count_args['fields'] = 'count';
552
- $count = get_terms( 'events_categories', $count_args );
553
- $post = get_post( $ai1ec_settings->calendar_page_id );
554
- switch( $args['fields'] )
555
- {
556
- case 'all':
557
- $calendar = (object) array(
558
- 'term_id' => AI1EC_FAKE_CATEGORY_ID,
559
- 'name' => $post->post_title,
560
- 'slug' => $post->post_name,
561
- 'taxonomy' => 'events_categories',
562
- 'description' => '',
563
- 'parent' => 0,
564
- 'count' => $count,
565
- );
566
- break;
567
- case 'ids':
568
- $calendar = 'ai1ec_calendar';
569
- break;
570
- case 'names':
571
- $calendar = $post->post_title;
572
- break;
573
- }
574
- $terms[] = $calendar;
575
-
576
- if( $args['hierarchical'] ) {
577
- $children = get_terms( 'events_categories', $args );
578
- foreach( $children as &$child ) {
579
- if( is_object( $child ) && $child->parent == 0 )
580
- $child->parent = AI1EC_FAKE_CATEGORY_ID;
581
- $terms[] = $child;
582
- }
583
- }
584
- }
585
-
586
- return $terms;
587
- }
588
 
589
- /**
590
- * function calendar_term_link
591
- *
592
- * Corrects the URL for the calendar page when injected into the post
593
- * categories.
594
- *
595
- * @param string $link The normally generated link
596
- * @param object $term The term that we're getting the link for
597
- * @param string $taxonomy The name of the taxonomy of interest
598
- *
599
- * @return string The correct link to the calendar page
600
- */
601
- function calendar_term_link( $link, $term, $taxonomy )
602
- {
603
- global $ai1ec_calendar_helper;
604
-
605
- if( $taxonomy == 'events_categories' ) {
606
- if( $term->term_id == AI1EC_FAKE_CATEGORY_ID )
607
- $link = $ai1ec_calendar_helper->get_calendar_url( null );
608
- else
609
- $link = $ai1ec_calendar_helper->get_calendar_url( null,
610
- array( 'cat_ids' => array( $term->term_id ) )
611
- );
612
- }
613
-
614
- return $link;
615
- }
616
 
617
- /**
618
- * function selected_category_link
619
- *
620
- * Corrects the output of wp_list_categories so that the currently viewed
621
- * event category (in calendar view) has the "active" CSS class applied to it.
622
- *
623
- * @param string $output The normally generated output of wp_list_categories()
624
- * @param object $args The args passed to wp_list_categories()
625
- *
626
- * @return string The corrected output
627
- */
628
- function selected_category_link( $output, $args )
629
- {
630
- global $ai1ec_calendar_controller, $ai1ec_settings;
631
-
632
- // First check if current page is calendar
633
- if( is_page( $ai1ec_settings->calendar_page_id ) )
634
- {
635
- $cat_ids = array_filter( explode( ',', $ai1ec_calendar_controller->get_requested_categories() ), 'is_numeric' );
636
- if( $cat_ids ) {
637
- // Mark each filtered event category link as selected
638
- foreach( $cat_ids as $cat_id ) {
639
- $output = str_replace(
640
- 'class="cat-item cat-item-' . $cat_id . '"',
641
- 'class="cat-item cat-item-' . $cat_id . ' current-cat current_page_item"',
642
- $output );
643
- }
644
- // Mark calendar page link as selected parent
645
- $output = str_replace(
646
- 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . '"',
647
- 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . ' current-cat-parent"',
648
- $output );
649
- } else {
650
- // No categories filtered, so mark calendar page link as selected
651
- $output = str_replace(
652
- 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . '"',
653
- 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . ' current-cat current_page_item"',
654
- $output );
655
- }
656
- }
657
-
658
- return $output;
659
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
660
 
661
  /**
662
  * admin_notices function
@@ -667,53 +679,178 @@ class Ai1ec_App_Helper {
667
  **/
668
  function admin_notices() {
669
  global $ai1ec_view_helper,
670
- $ai1ec_settings,
671
- $plugin_page;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
 
673
  if( $ai1ec_settings->show_data_notification ) {
674
  $args = array(
675
- 'label' => 'All-in-One Event Calendar Notice<br />',
676
- 'msg' => sprintf( 'We collect some basic information about how your calendar works in order to deliver a better ' .
677
- 'and faster calendar system and one that will help you promote your events even more.<br />' .
678
- 'You can find more detailed information by <a href="%s" target="_blank">clicking here &raquo;</a><br />' .
679
- 'You may opt-out from sending data to us by unchecking &quot;Allow The Seed to collect statistics&quot; checkbox located on plugin\'s <a href="%s">Settings page</a>',
680
- 'http://theseednetwork.com/all-in-one-event-calendar-privacy-policy/',
681
- admin_url( 'edit.php?post_type=' . AI1EC_POST_TYPE . '&page=' . AI1EC_PLUGIN_NAME . '-settings' ) ),
682
- 'button' => (object) array( 'class' => 'ai1ec-dismiss-notification', 'value' => 'Dismiss' )
 
 
 
683
  );
684
- $ai1ec_view_helper->display( 'admin_notices.php', $args );
685
  }
686
 
687
- // If calendar page ID has not been set, and we're not updating the settings
688
- // page, the calendar is not properly set up yet
689
- if( ! $ai1ec_settings->calendar_page_id || ! get_option( 'timezone_string' ) && ! isset( $_REQUEST['ai1ec_save_settings'] ) )
690
- {
691
- $args = array();
692
-
693
- // Display messages for blog admin
694
- if( current_user_can( 'manage_options' ) ) {
695
- // If not on the settings page already, direct user there with a message
696
- if( $plugin_page == AI1EC_PLUGIN_NAME . "-settings" ) {
697
- if( ! $ai1ec_settings->calendar_page_id && ! get_option( 'timezone_string' ) )
698
- $args['msg'] = sprintf( __( '%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</strong> dropdown list. %s 2. Select an option in the <strong>Timezone</strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s', AI1EC_PLUGIN_NAME ), '<br /><br />', '<ul><ol>', '</ol><ol>', '</ol><ol>', '</ol><ul>' );
699
- else if( ! $ai1ec_settings->calendar_page_id )
700
- $args['msg'] = __( 'To set up the plugin: Select an option in the <strong>Calendar page</strong> dropdown list, the click <strong>Update Settings</strong>.', AI1EC_PLUGIN_NAME );
701
- else
702
- $args['msg'] = __( 'To set up the plugin: Select an option in the <strong>Timezone</strong> dropdown list, the click <strong>Update Settings</strong>.', AI1EC_PLUGIN_NAME );
703
- // Else instruct user as to what to do on the settings page
704
- } else {
705
- $args['msg'] = sprintf(
706
- __( 'The plugin is installed, but has not been configured. <a href="%s">Click here to set it up now &raquo;</a>', AI1EC_PLUGIN_NAME ),
707
- admin_url( 'edit.php?post_type=' . AI1EC_POST_TYPE . '&page=' . AI1EC_PLUGIN_NAME . '-settings' )
708
- );
 
 
709
  }
 
710
  // Else display messages for other blog users
711
- } else {
712
- $args['msg'] = __( 'The plugin is installed, but has not been configured. Please log in as a WordPress Administrator to set it up.', AI1EC_PLUGIN_NAME );
 
 
 
 
 
 
 
 
 
 
 
713
  }
714
- $args['label'] = __( 'All-in-One Event Calendar Notice:', AI1EC_PLUGIN_NAME );
715
- $ai1ec_view_helper->display( 'admin_notices.php', $args );
716
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
717
  }
718
  }
719
  // END class
100
  * @return void
101
  **/
102
  function create_post_type() {
103
+ global $ai1ec_settings;
 
 
 
104
 
105
+ // Create event contributor role with the same capabilities
106
+ // as subscriber role, plus event managing capabilities - if we haven't done
107
+ // so yet.
108
+ if( ! get_role( 'ai1ec_event_assistant' ) ) {
109
  $caps = get_role( 'subscriber' )->capabilities;
110
+ $role = add_role( 'ai1ec_event_assistant', 'Event Contributor', $caps );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  $role->add_cap( 'edit_ai1ec_events' );
112
  $role->add_cap( 'delete_ai1ec_event' );
113
  $role->add_cap( 'read' );
114
  }
115
+
116
+ // Add event managing capabilities to administrator, editor, author. (The
117
+ // last created capability is "manage_ai1ec_feeds", so check for that one.)
118
+ if( ! get_role( 'administrator' )->has_cap( 'manage_ai1ec_feeds' ) ) {
119
+ foreach( array( 'administrator', 'editor', 'author' ) as $role_name ) {
120
+ $role = get_role( $role_name );
121
+ // Read events.
122
+ $role->add_cap( 'read_ai1ec_event' );
123
+ // Edit events.
124
+ $role->add_cap( 'edit_ai1ec_event' );
125
+ $role->add_cap( 'edit_ai1ec_events' );
126
+ $role->add_cap( 'edit_others_ai1ec_events' );
127
+ $role->add_cap( 'edit_private_ai1ec_events' );
128
+ $role->add_cap( 'edit_published_ai1ec_events' );
129
+ // Delete events.
130
+ $role->add_cap( 'delete_ai1ec_event' );
131
+ $role->add_cap( 'delete_ai1ec_events' );
132
+ $role->add_cap( 'delete_others_ai1ec_events' );
133
+ $role->add_cap( 'delete_published_ai1ec_events' );
134
+ $role->add_cap( 'delete_private_ai1ec_events' );
135
+ // Publish events.
136
+ $role->add_cap( 'publish_ai1ec_events' );
137
+ // Read private events.
138
+ $role->add_cap( 'read_private_ai1ec_events' );
139
+ // Manage categories & tags.
140
+ $role->add_cap( 'manage_events_categories' );
141
+ // Manage calendar feeds.
142
+ $role->add_cap( 'manage_ai1ec_feeds' );
143
+
144
+ if( $role_name == 'administrator' ) {
145
+ // Change calendar themes & manage calendar options.
146
+ $role->add_cap( 'switch_ai1ec_themes' );
147
+ $role->add_cap( 'manage_ai1ec_options' );
148
+ }
149
+ }
150
+ }
151
+
152
  // ===============================
153
  // = labels for custom post type =
154
  // ===============================
180
  $args = array(
181
  'labels' => $labels,
182
  'public' => true,
183
+ 'publicly_queryable' => true,
184
+ 'show_ui' => true,
185
+ 'show_in_menu' => true,
186
+ 'query_var' => true,
187
+ 'rewrite' => true,
188
+ 'capability_type' => array( 'ai1ec_event', 'ai1ec_events' ),
189
+ 'capabilities' => array(
190
+ 'read_post' => 'read_ai1ec_event',
191
+ 'edit_post' => 'edit_ai1ec_event',
192
+ 'edit_posts' => 'edit_ai1ec_events',
193
+ 'edit_others_posts' => 'edit_others_ai1ec_events',
194
+ 'edit_private_posts' => 'edit_private_ai1ec_events',
195
+ 'edit_published_posts' => 'edit_published_ai1ec_events',
196
+ 'delete_post' => 'delete_ai1ec_event',
197
+ 'delete_posts' => 'delete_ai1ec_events',
198
+ 'delete_others_posts' => 'delete_others_ai1ec_events',
199
+ 'delete_published_posts' => 'delete_published_ai1ec_events',
200
+ 'delete_private_posts' => 'delete_private_ai1ec_events',
201
+ 'publish_posts' => 'publish_ai1ec_events',
202
+ 'read_private_posts' => 'read_private_ai1ec_events' ),
203
+ 'has_archive' => true,
204
+ 'hierarchical' => false,
205
+ 'menu_position' => 5,
206
+ 'supports' => $supports,
207
+ 'exclude_from_search' => $ai1ec_settings->exclude_from_search,
208
  );
209
 
210
  // ========================================
222
  'name' => _x( 'Event Tags', 'Event tags taxonomy', AI1EC_PLUGIN_NAME ),
223
  'singular_name' => _x( 'Event Tag', 'Event tags taxonomy (singular)', AI1EC_PLUGIN_NAME )
224
  );
225
+
226
  // ==================================
227
  // = labels for event feeds taxonomy =
228
  // ==================================
239
  'hierarchical' => true,
240
  'rewrite' => array( 'slug' => 'events_categories' ),
241
  'capabilities' => array(
242
+ 'manage_terms' => 'manage_events_categories',
243
+ 'edit_terms' => 'manage_events_categories',
244
+ 'delete_terms' => 'manage_events_categories',
245
+ 'assign_terms' => 'edit_ai1ec_events'
246
  )
247
  );
248
 
254
  'hierarchical' => false,
255
  'rewrite' => array( 'slug' => 'events_tags' ),
256
  'capabilities' => array(
257
+ 'manage_terms' => 'manage_events_categories',
258
+ 'edit_terms' => 'manage_events_categories',
259
+ 'delete_terms' => 'manage_events_categories',
260
+ 'assign_terms' => 'edit_ai1ec_events'
261
  )
262
  );
263
+
264
  // ================================
265
  // = args for event feeds taxonomy =
266
  // ================================
269
  'hierarchical' => false,
270
  'rewrite' => array( 'slug' => 'events_feeds' ),
271
  'capabilities' => array(
272
+ 'manage_terms' => 'manage_events_categories',
273
+ 'edit_terms' => 'manage_events_categories',
274
+ 'delete_terms' => 'manage_events_categories',
275
+ 'assign_terms' => 'edit_ai1ec_events'
276
  ),
277
  'public' => false // don't show taxonomy in admin UI
278
  );
286
  // = register event tags taxonomy =
287
  // ================================
288
  register_taxonomy( 'events_tags', array( AI1EC_POST_TYPE ), $events_tags_args );
289
+
290
  // ================================
291
  // = register event tags taxonomy =
292
  // ================================
318
  wp_dropdown_categories( array(
319
  'show_option_all' => __( 'Show All ', AI1EC_PLUGIN_NAME ) . $tax_obj->label,
320
  'taxonomy' => $tax_slug,
321
+ 'name' => $tax_obj->name,
322
+ 'orderby' => 'name',
323
+ 'selected' => isset( $_GET[$tax_slug] ) ? $_GET[$tax_slug] : '',
324
+ 'hierarchical' => $tax_obj->hierarchical,
325
+ 'show_count' => true,
326
+ 'hide_if_empty' => true
327
  ));
328
  }
329
  }
340
  **/
341
  function get_all_items_name() {
342
 
343
+ // if current user can publish events
344
+ if( current_user_can( 'publish_ai1ec_events' ) ) {
345
+ // get all pending events
346
+ $query = new WP_Query( array ( 'post_type' => 'ai1ec_event', 'post_status' => 'pending', 'posts_per_page' => -1, ) );
347
+
348
+ // at least 1 pending event?
349
+ if( $query->post_count > 0 ) {
350
+ // append the pending events number to the menu
351
+ return sprintf(
352
+ __( 'All Events <span class="update-plugins count-%d" title="%d Pending Events"><span class="update-count">%d</span></span>', AI1EC_PLUGIN_NAME ),
353
+ $query->post_count, $query->post_count, $query->post_count );
354
+ }
355
+ }
356
+
357
+ // no pending events, or the user doesn't have sufficient capabilities
358
+ return __( 'All Events', AI1EC_PLUGIN_NAME );
359
  }
360
 
361
  /**
372
  foreach( $filters as $tax_slug ) {
373
  $var = &$query->query_vars[$tax_slug];
374
  if( isset( $var ) ) {
375
+ $term = null;
376
 
377
+ if( is_numeric( $var ) )
378
+ $term = get_term_by( 'id', $var, $tax_slug );
379
  else
380
+ $term = get_term_by( 'slug', $var, $tax_slug );
381
 
382
  if( isset( $term->slug ) ) {
383
  $var = $term->slug;
394
  $query->query_vars["order"] = 'desc';
395
  }
396
  }
 
397
  }
398
 
399
  /**
424
  /**
425
  * add_meta_boxes function
426
  *
427
+ * Display event meta box when creating or editing an event.
428
  *
429
  * @return void
430
  **/
431
  function add_meta_boxes() {
432
  global $ai1ec_events_controller;
433
+
434
  add_meta_box(
435
+ AI1EC_POST_TYPE,
436
+ __( 'Event Details', AI1EC_PLUGIN_NAME ),
437
+ array( &$ai1ec_events_controller, 'meta_box_view' ),
438
+ AI1EC_POST_TYPE,
439
+ 'normal',
440
+ 'high'
441
+ );
442
  }
443
+
444
  /**
445
  * screen_layout_columns function
446
  *
450
  **/
451
  function screen_layout_columns( $columns, $screen ) {
452
  global $ai1ec_settings;
453
+
454
  if( isset( $ai1ec_settings->settings_page ) && $screen == $ai1ec_settings->settings_page )
455
  $columns[$ai1ec_settings->settings_page] = 2;
456
 
519
  * @return mixed
520
  **/
521
  function get_param( $param, $default='' ) {
522
+ if( isset( $_POST[$param] ) )
523
+ return $_POST[$param];
524
+ if( isset( $_GET[$param] ) )
525
+ return $_GET[$param];
526
+ return $default;
527
+ }
528
 
529
  /**
530
  * get_param_delimiter_char function
535
  *
536
  * @return string
537
  **/
538
+ function get_param_delimiter_char( $link ) {
539
+ return strpos( $link, '?' ) === false ? '?' : '&';
540
  }
541
 
542
+ /**
543
  * inject_categories function
544
  *
545
  * Displays event categories whenever post categories are requested
556
  {
557
  global $ai1ec_settings;
558
 
559
+ if( in_array( 'category', $taxonomies ) )
560
+ {
561
+ // Create fake calendar page category
562
+ $count_args = $args;
563
+ $count_args['fields'] = 'count';
564
+ $count = get_terms( 'events_categories', $count_args );
565
+ $post = get_post( $ai1ec_settings->calendar_page_id );
566
+ switch( $args['fields'] )
567
+ {
568
+ case 'all':
569
+ $calendar = (object) array(
570
+ 'term_id' => AI1EC_FAKE_CATEGORY_ID,
571
+ 'name' => $post->post_title,
572
+ 'slug' => $post->post_name,
573
+ 'taxonomy' => 'events_categories',
574
+ 'description' => '',
575
+ 'parent' => 0,
576
+ 'count' => $count,
577
+ );
578
+ break;
579
+ case 'ids':
580
+ $calendar = 'ai1ec_calendar';
581
+ break;
582
+ case 'names':
583
+ $calendar = $post->post_title;
584
+ break;
585
+ }
586
+ $terms[] = $calendar;
587
+
588
+ if( $args['hierarchical'] ) {
589
+ $children = get_terms( 'events_categories', $args );
590
+ foreach( $children as &$child ) {
591
+ if( is_object( $child ) && $child->parent == 0 )
592
+ $child->parent = AI1EC_FAKE_CATEGORY_ID;
593
+ $terms[] = $child;
594
+ }
595
+ }
596
+ }
 
 
 
597
 
598
+ return $terms;
599
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
600
 
601
+ /**
602
+ * function calendar_term_link
603
+ *
604
+ * Corrects the URL for the calendar page when injected into the post
605
+ * categories.
606
+ *
607
+ * @param string $link The normally generated link
608
+ * @param object $term The term that we're getting the link for
609
+ * @param string $taxonomy The name of the taxonomy of interest
610
+ *
611
+ * @return string The correct link to the calendar page
612
+ */
613
+ function calendar_term_link( $link, $term, $taxonomy )
614
+ {
615
+ global $ai1ec_calendar_helper;
616
+
617
+ if( $taxonomy == 'events_categories' ) {
618
+ if( $term->term_id == AI1EC_FAKE_CATEGORY_ID )
619
+ $link = $ai1ec_calendar_helper->get_calendar_url( null );
620
+ else
621
+ $link = $ai1ec_calendar_helper->get_calendar_url( null,
622
+ array( 'cat_ids' => array( $term->term_id ) )
623
+ );
624
+ }
625
+
626
+ return $link;
627
+ }
628
+
629
+ /**
630
+ * function selected_category_link
631
+ *
632
+ * Corrects the output of wp_list_categories so that the currently viewed
633
+ * event category (in calendar view) has the "active" CSS class applied to it.
634
+ *
635
+ * @param string $output The normally generated output of wp_list_categories()
636
+ * @param object $args The args passed to wp_list_categories()
637
+ *
638
+ * @return string The corrected output
639
+ */
640
+ function selected_category_link( $output, $args )
641
+ {
642
+ global $ai1ec_calendar_controller, $ai1ec_settings;
643
+
644
+ // First check if current page is calendar
645
+ if( is_page( $ai1ec_settings->calendar_page_id ) )
646
+ {
647
+ $cat_ids = array_filter( explode( ',', $ai1ec_calendar_controller->get_requested_categories() ), 'is_numeric' );
648
+ if( $cat_ids ) {
649
+ // Mark each filtered event category link as selected
650
+ foreach( $cat_ids as $cat_id ) {
651
+ $output = str_replace(
652
+ 'class="cat-item cat-item-' . $cat_id . '"',
653
+ 'class="cat-item cat-item-' . $cat_id . ' current-cat current_page_item"',
654
+ $output );
655
+ }
656
+ // Mark calendar page link as selected parent
657
+ $output = str_replace(
658
+ 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . '"',
659
+ 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . ' current-cat-parent"',
660
+ $output );
661
+ } else {
662
+ // No categories filtered, so mark calendar page link as selected
663
+ $output = str_replace(
664
+ 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . '"',
665
+ 'class="cat-item cat-item-' . AI1EC_FAKE_CATEGORY_ID . ' current-cat current_page_item"',
666
+ $output );
667
+ }
668
+ }
669
+
670
+ return $output;
671
+ }
672
 
673
  /**
674
  * admin_notices function
679
  **/
680
  function admin_notices() {
681
  global $ai1ec_view_helper,
682
+ $ai1ec_settings,
683
+ $plugin_page,
684
+ $ai1ec_themes_controller;
685
+
686
+ if( ! $ai1ec_themes_controller->are_themes_available() ) {
687
+ $args = array(
688
+ 'label' => 'All-in-One Calendar Notice',
689
+ 'msg' => sprintf(
690
+ __( '<p><strong>Calendar Themes are not installed.</strong></p>' .
691
+ '<p>Our automated install couldn\'t install your themes automatically. ' .
692
+ 'You will need to install calendar themes manually by following these steps:</p>' .
693
+ '<ol><li>Go to <strong>%s</strong>.</li>' .
694
+ '<li>Copy the <strong>%s</strong> folder to the clipboard.</li>' .
695
+ '<li>Go to <strong>%s</strong>.</li>' .
696
+ '<li>Paste the <strong>%s</strong> folder that you copied to the clipboard in step 2.</li>' .
697
+ '<li>Refresh this page and if this notice is gone, themes are installed.</li></ol>', AI1EC_PLUGIN_NAME ),
698
+ AI1EC_PATH,
699
+ AI1EC_THEMES_FOLDER,
700
+ WP_CONTENT_DIR,
701
+ AI1EC_THEMES_FOLDER )
702
+ );
703
+ $ai1ec_view_helper->display_admin( 'admin_notices.php', $args );
704
+ }
705
 
706
  if( $ai1ec_settings->show_data_notification ) {
707
  $args = array(
708
+ 'label' => 'All-in-One Calendar Notice',
709
+ 'msg' =>
710
+ sprintf(
711
+ __( '<p>We collect some basic information about how your calendar works in order to deliver a better ' .
712
+ 'and faster calendar system and one that will help you promote your events even more.</p>' .
713
+ '<p>You can find more detailed information by <a href="%s" target="_blank">clicking here &raquo;</a></p>' .
714
+ '<p>You may opt out of sending data to us by unchecking &quot;Allow Then.ly to collect statistics&quot; checkbox located on plugin\'s <a href="%s">Settings page</a>.</p>', AI1EC_PLUGIN_NAME ),
715
+ 'http://then.ly/all-in-one-event-calendar-privacy-policy/',
716
+ admin_url( AI1EC_SETTINGS_BASE_URL )
717
+ ),
718
+ 'button' => (object) array( 'class' => 'ai1ec-dismiss-notification', 'value' => 'Dismiss' ),
719
  );
720
+ $ai1ec_view_helper->display_admin( 'admin_notices.php', $args );
721
  }
722
 
723
+ // If calendar page ID has not been set, and we're not updating the settings
724
+ // page, the calendar is not properly set up yet.
725
+ if( ! $ai1ec_settings->calendar_page_id || ! get_option( 'timezone_string' ) && ! isset( $_REQUEST['ai1ec_save_settings'] ) ) {
726
+ $args = array();
727
+ $messages = array();
728
+
729
+ // Display messages for blog admin.
730
+ if( current_user_can( 'manage_ai1ec_options' ) ) {
731
+ // If not on the settings page already, direct user there.
732
+ if( $plugin_page == AI1EC_PLUGIN_NAME . '-settings' ) {
733
+ if( ! $ai1ec_settings->calendar_page_id ) {
734
+ $messages[] = __( 'Select an option in the <strong>Calendar page</strong> dropdown list.', AI1EC_PLUGIN_NAME );
735
+ }
736
+ if( ! get_option( 'timezone_string' ) ) {
737
+ $messages[] = __( 'Select an option in the <strong>Timezone</strong> dropdown list.', AI1EC_PLUGIN_NAME );
738
+ }
739
+ $messages[] = __( 'Click <strong>Update Settings</strong>.', AI1EC_PLUGIN_NAME );
740
+ }
741
+ // Else instruct user as to what to do on the settings page.
742
+ else {
743
+ $messages[] = sprintf(
744
+ __( 'The plugin is installed, but has not been configured. <a href="%s">Click here to set it up now &raquo;</a>', AI1EC_PLUGIN_NAME ),
745
+ admin_url( AI1EC_SETTINGS_BASE_URL )
746
+ );
747
  }
748
+ }
749
  // Else display messages for other blog users
750
+ else {
751
+ $messages[] = __( 'The plugin is installed, but has not been configured. Please log in as an Administrator to set it up.', AI1EC_PLUGIN_NAME );
752
+ }
753
+
754
+ // Format notice message.
755
+ if (count($messages) > 1) {
756
+ $args['msg'] = __( '<p>To set up the plugin:</p>', AI1EC_PLUGIN_NAME );
757
+ $args['msg'] .= '<ol><li>';
758
+ $args['msg'] .= implode( '</li><li>', $messages );
759
+ $args['msg'] .= '</li></ol>';
760
+ }
761
+ else {
762
+ $args['msg'] = "<p>$messages[0]</p>";
763
  }
764
+ $args['label'] = __( 'All-in-One Calendar Notice', AI1EC_PLUGIN_NAME );
765
+ $ai1ec_view_helper->display_admin( 'admin_notices.php', $args );
766
+ }
767
+ }
768
+
769
+ /**
770
+ * Add Events items to "Right Now" widget in Dashboard.
771
+ *
772
+ * @return void
773
+ */
774
+ function right_now_content_table_end() {
775
+ $num_events = wp_count_posts( AI1EC_POST_TYPE );
776
+ $num_cats = wp_count_terms( 'events_categories' );
777
+ $num_tags = wp_count_terms( 'events_tags' );
778
+
779
+ // Events.
780
+ $num = number_format_i18n( $num_events->publish );
781
+ $text = _n( 'Event', 'Events', $num_events->publish );
782
+ if ( current_user_can( 'edit_ai1ec_events' ) ) {
783
+ $num = "<a href='edit.php?post_type=" . AI1EC_POST_TYPE . "'>$num</a>";
784
+ $text = "<a href='edit.php?post_type=" . AI1EC_POST_TYPE . "'>$text</a>";
785
+ }
786
+ echo '<td class="first b b-ai1ec-event">' . $num . '</td>';
787
+ echo '<td class="t ai1ec-event">' . $text . '</td>';
788
+
789
+ echo '</tr><tr>';
790
+
791
+ // Event categories.
792
+ $num = number_format_i18n( $num_cats );
793
+ $text = _n( 'Event Category', 'Event Categories', $num_cats );
794
+ if ( current_user_can( 'manage_events_categories' ) ) {
795
+ $num = "<a href='edit-tags.php?taxonomy=events_categories'>$num</a>";
796
+ $text = "<a href='edit-tags.php?taxonomy=events_categories'>$text</a>";
797
+ }
798
+ echo '<td class="first b b-events-categories">' . $num . '</td>';
799
+ echo '<td class="t events-categories">' . $text . '</td>';
800
+
801
+ echo '</tr><tr>';
802
+
803
+ // Event tags.
804
+ $num = number_format_i18n( $num_tags );
805
+ $text = _n( 'Event Tag', 'Event Tags', $num_tags );
806
+ if ( current_user_can( 'manage_events_categories' ) ) {
807
+ $num = "<a href='edit-tags.php?taxonomy=events_tags'>$num</a>";
808
+ $text = "<a href='edit-tags.php?taxonomy=events_tags'>$text</a>";
809
+ }
810
+ echo '<td class="first b b-events-tags">' . $num . '</td>';
811
+ echo '<td class="t events-tags">' . $text . '</td>';
812
+ }
813
+
814
+ /**
815
+ * admin_enqueue_scripts function
816
+ *
817
+ * Enqueue any scripts and styles in the admin side, depending on context.
818
+ *
819
+ * @return void
820
+ */
821
+ function admin_enqueue_scripts( $hook_suffix ) {
822
+ global $ai1ec_settings, $ai1ec_view_helper;
823
+
824
+ // Common styles.
825
+ $ai1ec_view_helper->admin_enqueue_style( 'ai1ec-admin', 'admin.css' );
826
+
827
+ switch( $hook_suffix ) {
828
+ // Event lists.
829
+ // Widgets screen.
830
+ case 'widgets.php':
831
+ // Scripts.
832
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-widget', 'widget.js', array( 'jquery' ), AI1EC_VERSION );
833
+ // Styles.
834
+ $ai1ec_view_helper->admin_enqueue_style( 'ai1ec-widget', '/widget.css', array(), AI1EC_VERSION );
835
+ break;
836
+
837
+ // Calendar settings & feeds screens.
838
+ case $ai1ec_settings->settings_page:
839
+ case $ai1ec_settings->feeds_page:
840
+ // Scripts.
841
+ wp_enqueue_script( 'common' );
842
+ wp_enqueue_script( 'wp-lists' );
843
+ wp_enqueue_script( 'postbox' );
844
+
845
+ $ai1ec_view_helper->admin_enqueue_script( 'ai1ec-settings', 'settings.js', array( 'jquery' ) );
846
+ wp_localize_script( 'ai1ec-settings', 'ai1ec_settings', array(
847
+ 'page' => $ai1ec_settings->settings_page,
848
+ ) );
849
+ // Styles.
850
+ $ai1ec_view_helper->admin_enqueue_style( 'ai1ec-settings', 'settings.css' );
851
+ $ai1ec_view_helper->admin_enqueue_style( 'thenly-bootstrap', 'bootstrap.min.css' );
852
+ break;
853
+ }
854
  }
855
  }
856
  // END class
app/helper/class-ai1ec-calendar-helper.php CHANGED
@@ -78,17 +78,26 @@ class Ai1ec_Calendar_Helper {
78
  // ==========================================
79
  for( $day = 1; $day <= $last_day; $day++ )
80
  {
81
- $_events = array();
82
  $start_time = gmmktime( 0, 0, 0, $bits['mon'], $day, $bits['year'] );
83
  $end_time = gmmktime( 0, 0, 0, $bits['mon'], $day + 1, $bits['year'] );
84
 
85
  // Itemize events that fall under the current day
 
 
 
86
  foreach( $month_events as $event ) {
87
  $event_start = $ai1ec_events_helper->gmt_to_local( $event->start );
88
- if( $event_start >= $start_time && $event_start < $end_time )
89
- $_events[] = $event;
 
 
 
 
 
 
90
  }
91
- $days_events[$day] = $_events;
 
92
  }
93
 
94
  return apply_filters( 'ai1ec_get_events_for_month', $days_events, $time, $filter );
@@ -230,7 +239,7 @@ class Ai1ec_Calendar_Helper {
230
  }
231
 
232
  // Place copy of event in appropriate category
233
- if( $_evt->allday )
234
  $all_events[$day_start]['allday'][] = $_evt;
235
  else
236
  $all_events[$day_start]['notallday'][] = $_evt;
@@ -320,7 +329,7 @@ class Ai1ec_Calendar_Helper {
320
  * @return array array of arrays as per function description
321
  **/
322
  function get_oneday_cell_array( $timestamp, $filter = array() )
323
- {
324
  global $ai1ec_events_helper, $ai1ec_settings;
325
 
326
  // Decompose given date and current time into components, used below
@@ -355,7 +364,7 @@ class Ai1ec_Calendar_Helper {
355
  }
356
 
357
  // Place copy of event in appropriate category
358
- if( $_evt->allday )
359
  $all_events[$day_start]['allday'][] = $_evt;
360
  else
361
  $all_events[$day_start]['notallday'][] = $_evt;
@@ -365,7 +374,7 @@ class Ai1ec_Calendar_Helper {
365
  // This will store the returned array
366
  $days = array();
367
  $day = $bits['mday'];
368
-
369
  $day_date = gmmktime( 0, 0, 0, $bits['mon'], $day, $bits['year'] );
370
  // Re-fetch date bits, since $bits['mday'] + 1 might be in the next month
371
  $day_bits = $ai1ec_events_helper->gmgetdate( $day_date );
@@ -409,7 +418,7 @@ class Ai1ec_Calendar_Helper {
409
  'allday' => $all_events[$day_date]['allday'],
410
  'notallday' => $notallday,
411
  );
412
-
413
  // =========================================
414
  // = Set one oneday events =
415
  // =========================================
@@ -631,7 +640,7 @@ class Ai1ec_Calendar_Helper {
631
  $date = $ai1ec_events_helper->gmt_to_local( $event->start );
632
  $date = $ai1ec_events_helper->gmgetdate( $date );
633
  $timestamp = gmmktime( 0, 0, 0, $date['mon'], $date['mday'], $date['year'] );
634
- $category = $event->allday ? 'allday' : 'notallday';
635
  $dates[$timestamp]['events'][$category][] = $event;
636
  }
637
 
@@ -794,7 +803,7 @@ class Ai1ec_Calendar_Helper {
794
  );
795
  $links[] = array(
796
  'id' => 'ai1ec-prev-day',
797
- 'text' =>
798
  date_i18n( __( 'j F Y', AI1EC_PLUGIN_NAME ), gmmktime( 0, 0, 0, $bits['mon'], $bits['mday'] + 1, $bits['year'] ))
799
  .' ›',
800
  'href' => '#action=ai1ec_oneday&ai1ec_oneday_offset=' . ( $cur_offset + 1 ),
78
  // ==========================================
79
  for( $day = 1; $day <= $last_day; $day++ )
80
  {
 
81
  $start_time = gmmktime( 0, 0, 0, $bits['mon'], $day, $bits['year'] );
82
  $end_time = gmmktime( 0, 0, 0, $bits['mon'], $day + 1, $bits['year'] );
83
 
84
  // Itemize events that fall under the current day
85
+ $_events = array();
86
+ $_allday_events = array();
87
+ $_multiday_events = array();
88
  foreach( $month_events as $event ) {
89
  $event_start = $ai1ec_events_helper->gmt_to_local( $event->start );
90
+ if( $event_start >= $start_time && $event_start < $end_time ) {
91
+ if( $event->allday )
92
+ $_allday_events[] = $event;
93
+ elseif ($event->multiday)
94
+ $_multiday_events[] = $event;
95
+ else
96
+ $_events[] = $event;
97
+ }
98
  }
99
+
100
+ $days_events[$day] = array_merge( $_multiday_events, $_allday_events, $_events );
101
  }
102
 
103
  return apply_filters( 'ai1ec_get_events_for_month', $days_events, $time, $filter );
239
  }
240
 
241
  // Place copy of event in appropriate category
242
+ if( $_evt->allday || $_evt->multiday)
243
  $all_events[$day_start]['allday'][] = $_evt;
244
  else
245
  $all_events[$day_start]['notallday'][] = $_evt;
329
  * @return array array of arrays as per function description
330
  **/
331
  function get_oneday_cell_array( $timestamp, $filter = array() )
332
+ {
333
  global $ai1ec_events_helper, $ai1ec_settings;
334
 
335
  // Decompose given date and current time into components, used below
364
  }
365
 
366
  // Place copy of event in appropriate category
367
+ if( $_evt->allday || $_evt->multiday)
368
  $all_events[$day_start]['allday'][] = $_evt;
369
  else
370
  $all_events[$day_start]['notallday'][] = $_evt;
374
  // This will store the returned array
375
  $days = array();
376
  $day = $bits['mday'];
377
+
378
  $day_date = gmmktime( 0, 0, 0, $bits['mon'], $day, $bits['year'] );
379
  // Re-fetch date bits, since $bits['mday'] + 1 might be in the next month
380
  $day_bits = $ai1ec_events_helper->gmgetdate( $day_date );
418
  'allday' => $all_events[$day_date]['allday'],
419
  'notallday' => $notallday,
420
  );
421
+
422
  // =========================================
423
  // = Set one oneday events =
424
  // =========================================
640
  $date = $ai1ec_events_helper->gmt_to_local( $event->start );
641
  $date = $ai1ec_events_helper->gmgetdate( $date );
642
  $timestamp = gmmktime( 0, 0, 0, $date['mon'], $date['mday'], $date['year'] );
643
+ $category = $event->allday||$event->multiday ? 'allday' : 'notallday';
644
  $dates[$timestamp]['events'][$category][] = $event;
645
  }
646
 
803
  );
804
  $links[] = array(
805
  'id' => 'ai1ec-prev-day',
806
+ 'text' =>
807
  date_i18n( __( 'j F Y', AI1EC_PLUGIN_NAME ), gmmktime( 0, 0, 0, $bits['mon'], $bits['mday'] + 1, $bits['year'] ))
808
  .' ›',
809
  'href' => '#action=ai1ec_oneday&ai1ec_oneday_offset=' . ( $cur_offset + 1 ),
app/helper/class-ai1ec-events-helper.php CHANGED
@@ -149,7 +149,7 @@ class Ai1ec_Events_Helper {
149
  'end' => $event->end,
150
  );
151
  $duration = $event->getDuration();
152
-
153
  // Timestamp of today's date + 10 years
154
  $tif = gmmktime() + 315569260; //315 569 260 = 10 years in seconds
155
  // Always cache initial instance
@@ -237,7 +237,7 @@ class Ai1ec_Events_Helper {
237
  }
238
  }
239
  }
240
-
241
  /**
242
  * date_match_exdates function
243
  *
@@ -260,7 +260,7 @@ class Ai1ec_Events_Helper {
260
  }
261
  return false;
262
  }
263
-
264
  /**
265
  * generate_dates_array_from_ics_rule function
266
  *
@@ -615,8 +615,6 @@ class Ai1ec_Events_Helper {
615
  /**
616
  * row_frequency function
617
  *
618
- *
619
- *
620
  * @return void
621
  **/
622
  function row_frequency( $visible = false, $selected = false ) {
@@ -633,7 +631,7 @@ class Ai1ec_Events_Helper {
633
  'visible' => $visible,
634
  'frequency' => $this->create_select_element( 'ai1ec_frequency', $frequency, $selected )
635
  );
636
- return $ai1ec_view_helper->get_view( 'row_frequency.php', $args );
637
  }
638
 
639
  /**
@@ -650,7 +648,7 @@ class Ai1ec_Events_Helper {
650
  'visible' => $visible,
651
  'count' => $this->create_count_input( 'ai1ec_daily_count', $selected, 365 ) . __( 'day(s)', AI1EC_PLUGIN_NAME )
652
  );
653
- return $ai1ec_view_helper->get_view( 'row_daily.php', $args );
654
  }
655
 
656
  /**
@@ -680,7 +678,7 @@ class Ai1ec_Events_Helper {
680
  'count' => $this->create_count_input( 'ai1ec_weekly_count', $count, 52 ) . __( 'week(s)', AI1EC_PLUGIN_NAME ),
681
  'week_days' => $this->create_list_element( 'ai1ec_weekly_date_select', $options, $selected )
682
  );
683
- return $ai1ec_view_helper->get_view( 'row_weekly.php', $args );
684
  }
685
 
686
  /**
@@ -732,7 +730,7 @@ class Ai1ec_Events_Helper {
732
  // get days from start_of_week until the last day
733
  for( $i = $start_of_week; $i <= 6; ++$i )
734
  $options_wd[$this->get_weekday_by_id( $i )] = $wp_locale->weekday[$i];
735
-
736
  // get days from 0 until start_of_week
737
  if( $start_of_week > 0 ) {
738
  for( $i = 0; $i < $start_of_week; $i++ )
@@ -755,7 +753,7 @@ class Ai1ec_Events_Helper {
755
  'day_nums' => $this->create_select_element( 'ai1ec_monthly_byday_num', $options_dn ),
756
  'week_days' => $this->create_select_element( 'ai1ec_monthly_byday_weekday', $options_wd )
757
  );
758
- return $ai1ec_view_helper->get_view( 'row_monthly.php', $args );
759
  }
760
 
761
  /**
@@ -774,7 +772,7 @@ class Ai1ec_Events_Helper {
774
  'year' => $this->create_yearly_date_select( $year ),
775
  'on_the_select' => $this->create_on_the_select( $first, $second )
776
  );
777
- return $ai1ec_view_helper->get_view( 'row_yearly.php', $args );
778
  }
779
 
780
  /**
@@ -940,6 +938,23 @@ class Ai1ec_Events_Helper {
940
  return date_i18n( 'M j', $timestamp, true );
941
  }
942
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
943
  /**
944
  * get_medium_time function
945
  *
@@ -1052,7 +1067,7 @@ class Ai1ec_Events_Helper {
1052
  if( $timestamp == false ) {
1053
  $timestamp = gmmktime();
1054
  }
1055
-
1056
  if( $origin_tz === null ) {
1057
  if( ! is_string( $origin_tz = date_default_timezone_get() ) ) {
1058
  return false; // A UTC timestamp was returned -- bail out!
@@ -1116,15 +1131,12 @@ class Ai1ec_Events_Helper {
1116
  *
1117
  * Returns the URL to the Google Map for the given event object.
1118
  *
1119
- * @param Ai1ec_Event $event The event object to display a map for
1120
  *
1121
  * @return string
1122
  **/
1123
  function get_gmap_url( &$event ) {
1124
- $location_arg = urlencode( $event->address );
1125
- $lang = $this->get_lang();
1126
-
1127
- return "http://www.google.com/maps?f=q&hl=" . $lang . "&source=embed&q=" . $location_arg;
1128
  }
1129
 
1130
  /**
@@ -1266,7 +1278,7 @@ class Ai1ec_Events_Helper {
1266
  $color = $this->get_category_color( $term_id );
1267
  $cat = get_term( $term_id, 'events_categories' );
1268
  if( ! is_null( $color ) && ! empty( $color ) )
1269
- return '<div class="ai1ec-category-color" style="background:' . $color . '" title="' . esc_attr( $cat->name ) . '"></div>';
1270
 
1271
  return '';
1272
  }
@@ -1284,7 +1296,7 @@ class Ai1ec_Events_Helper {
1284
  $color = $this->get_category_color( $term_id );
1285
  if( ! is_null( $color ) && ! empty( $color ) ) {
1286
  if( $allday )
1287
- return 'background: ' . $color . ';';
1288
  else
1289
  return 'color: ' . $color . ' !important;';
1290
  }
@@ -1293,13 +1305,12 @@ class Ai1ec_Events_Helper {
1293
  }
1294
 
1295
  /**
1296
- * get_event_category_faded_color function
1297
- *
1298
  * Returns a faded version of the event's category color in hex format.
1299
  *
1300
  * @param int $term_id The Event Category's term ID
 
1301
  * @return string
1302
- **/
1303
  function get_event_category_faded_color( $term_id ) {
1304
  $color = $this->get_category_color( $term_id );
1305
  if( ! is_null( $color ) && ! empty( $color ) ) {
@@ -1325,6 +1336,26 @@ class Ai1ec_Events_Helper {
1325
  return '';
1326
  }
1327
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1328
  /**
1329
  * get_event_category_colors function
1330
  *
@@ -1464,7 +1495,7 @@ class Ai1ec_Events_Helper {
1464
  } else {
1465
  $until = $this->gmt_to_local( $until );
1466
  }
1467
-
1468
  $until = gmdate( "Ymd\THis\Z", $until );
1469
  $rule_props = explode( ';', $rule );
1470
  $_rule = array();
@@ -1505,7 +1536,7 @@ class Ai1ec_Events_Helper {
1505
  function exception_dates_to_gmt( $exception_dates ) {
1506
  return $this->exception_dates_to( $exception_dates, true );
1507
  }
1508
-
1509
  /**
1510
  * exception_dates_to function
1511
  *
@@ -1521,7 +1552,7 @@ class Ai1ec_Events_Helper {
1521
  } else {
1522
  $_exdate = $this->gmt_to_local( $_exdate );
1523
  }
1524
-
1525
  $dates_to_add[] = gmdate( "Ymd\THis\Z", $_exdate );
1526
  }
1527
  // append dates to the string and return it;
@@ -1794,7 +1825,7 @@ class Ai1ec_Events_Helper {
1794
 
1795
  return $permalink;
1796
  }
1797
-
1798
  /**
1799
  * get_repeat_box function
1800
  *
@@ -1802,19 +1833,19 @@ class Ai1ec_Events_Helper {
1802
  **/
1803
  function get_repeat_box() {
1804
  global $ai1ec_view_helper;
1805
-
1806
  $repeat = (int) $_REQUEST["repeat"];
1807
  $repeat = $repeat == 1 ? 1 : 0;
1808
  $post_id = (int) $_REQUEST["post_id"];
1809
  $count = 100;
1810
  $end = null;
1811
  $until = gmmktime();
1812
-
1813
  // try getting the event
1814
  try {
1815
  $event = new Ai1ec_Event( $post_id );
1816
  $rule = '';
1817
-
1818
  if( $repeat ) {
1819
  $rule = empty( $event->recurrence_rules ) ? '' : $event->recurrence_rules;
1820
  } else {
@@ -1822,7 +1853,7 @@ class Ai1ec_Events_Helper {
1822
  }
1823
 
1824
  $rc = new SG_iCal_Recurrence( new SG_iCal_Line( 'RRULE:' . $rule ) );
1825
-
1826
  if( $until = $rc->getUntil() ) {
1827
  $until = ( is_numeric( $until ) ) ? $until : strtotime( $until );
1828
  }
@@ -1830,7 +1861,7 @@ class Ai1ec_Events_Helper {
1830
  $count = ( is_numeric( $count ) ) ? $count : 100;
1831
  }
1832
  } catch( Ai1ec_Event_Not_Found $e ) { /* event wasn't found, keep defaults */ }
1833
-
1834
  $args = array(
1835
  'row_daily' => $this->row_daily(),
1836
  'row_weekly' => $this->row_weekly(),
@@ -1843,14 +1874,13 @@ class Ai1ec_Events_Helper {
1843
  );
1844
  $output = array(
1845
  "error" => false,
1846
- "message" => $ai1ec_view_helper->get_view( 'box_repeat.php', $args ),
1847
  "repeat" => $repeat
1848
  );
1849
 
1850
  echo json_encode( $output );
1851
  exit();
1852
  }
1853
-
1854
  /**
1855
  * get_date_picker_box function
1856
  *
@@ -1858,22 +1888,22 @@ class Ai1ec_Events_Helper {
1858
  **/
1859
  function get_date_picker_box() {
1860
  global $ai1ec_view_helper;
1861
-
1862
  $dates = '';
1863
-
1864
  $args = array(
1865
  'dates' => $dates
1866
  );
1867
-
1868
  $output = array(
1869
  "error" => false,
1870
- "message" => $ai1ec_view_helper->get_view( 'box_date_picker.php', $args ),
1871
  );
1872
 
1873
  echo json_encode( $output );
1874
  exit();
1875
  }
1876
-
1877
  /**
1878
  * shortcode function
1879
  *
@@ -1897,4 +1927,4 @@ class Ai1ec_Events_Helper {
1897
  return - ( 7 - ( $ai1ec_settings->week_start_day - $wday ) ) % 7;
1898
  }
1899
  }
1900
- // END class
149
  'end' => $event->end,
150
  );
151
  $duration = $event->getDuration();
152
+
153
  // Timestamp of today's date + 10 years
154
  $tif = gmmktime() + 315569260; //315 569 260 = 10 years in seconds
155
  // Always cache initial instance
237
  }
238
  }
239
  }
240
+
241
  /**
242
  * date_match_exdates function
243
  *
260
  }
261
  return false;
262
  }
263
+
264
  /**
265
  * generate_dates_array_from_ics_rule function
266
  *
615
  /**
616
  * row_frequency function
617
  *
 
 
618
  * @return void
619
  **/
620
  function row_frequency( $visible = false, $selected = false ) {
631
  'visible' => $visible,
632
  'frequency' => $this->create_select_element( 'ai1ec_frequency', $frequency, $selected )
633
  );
634
+ return $ai1ec_view_helper->get_admin_view( 'row_frequency.php', $args );
635
  }
636
 
637
  /**
648
  'visible' => $visible,
649
  'count' => $this->create_count_input( 'ai1ec_daily_count', $selected, 365 ) . __( 'day(s)', AI1EC_PLUGIN_NAME )
650
  );
651
+ return $ai1ec_view_helper->get_admin_view( 'row_daily.php', $args );
652
  }
653
 
654
  /**
678
  'count' => $this->create_count_input( 'ai1ec_weekly_count', $count, 52 ) . __( 'week(s)', AI1EC_PLUGIN_NAME ),
679
  'week_days' => $this->create_list_element( 'ai1ec_weekly_date_select', $options, $selected )
680
  );
681
+ return $ai1ec_view_helper->get_admin_view( 'row_weekly.php', $args );
682
  }
683
 
684
  /**
730
  // get days from start_of_week until the last day
731
  for( $i = $start_of_week; $i <= 6; ++$i )
732
  $options_wd[$this->get_weekday_by_id( $i )] = $wp_locale->weekday[$i];
733
+
734
  // get days from 0 until start_of_week
735
  if( $start_of_week > 0 ) {
736
  for( $i = 0; $i < $start_of_week; $i++ )
753
  'day_nums' => $this->create_select_element( 'ai1ec_monthly_byday_num', $options_dn ),
754
  'week_days' => $this->create_select_element( 'ai1ec_monthly_byday_weekday', $options_wd )
755
  );
756
+ return $ai1ec_view_helper->get_admin_view( 'row_monthly.php', $args );
757
  }
758
 
759
  /**
772
  'year' => $this->create_yearly_date_select( $year ),
773
  'on_the_select' => $this->create_on_the_select( $first, $second )
774
  );
775
+ return $ai1ec_view_helper->get_admin_view( 'row_yearly.php', $args );
776
  }
777
 
778
  /**
938
  return date_i18n( 'M j', $timestamp, true );
939
  }
940
 
941
+ /**
942
+ * get_multiday_end_date function
943
+ *
944
+ * Format a date for use in JS functions to extend multiday bars;
945
+ * this is also converted to the local timezone.
946
+ *
947
+ * @param int $timestamp
948
+ * @param bool $convert_from_gmt Whether to convert from GMT time to local
949
+ *
950
+ * @return string
951
+ **/
952
+ function get_multiday_end_date( $timestamp, $convert_from_gmt = true ) {
953
+ if( $convert_from_gmt )
954
+ $timestamp = $this->gmt_to_local( $timestamp );
955
+ return date_i18n( 'F Y d', $timestamp, true );
956
+ }
957
+
958
  /**
959
  * get_medium_time function
960
  *
1067
  if( $timestamp == false ) {
1068
  $timestamp = gmmktime();
1069
  }
1070
+
1071
  if( $origin_tz === null ) {
1072
  if( ! is_string( $origin_tz = date_default_timezone_get() ) ) {
1073
  return false; // A UTC timestamp was returned -- bail out!
1131
  *
1132
  * Returns the URL to the Google Map for the given event object.
1133
  *
1134
+ * @param Ai1ec_Event &$event The event object to display a map for
1135
  *
1136
  * @return string
1137
  **/
1138
  function get_gmap_url( &$event ) {
1139
+ return "http://www.google.com/maps?f=q&hl=" . $this->get_lang() . "&source=embed&q=" . urlencode( $event->address );
 
 
 
1140
  }
1141
 
1142
  /**
1278
  $color = $this->get_category_color( $term_id );
1279
  $cat = get_term( $term_id, 'events_categories' );
1280
  if( ! is_null( $color ) && ! empty( $color ) )
1281
+ return '<div class="ai1ec-category-color" style="background:' . $color . '" rel="tooltip" title="' . esc_attr( $cat->name ) . '"></div>';
1282
 
1283
  return '';
1284
  }
1296
  $color = $this->get_category_color( $term_id );
1297
  if( ! is_null( $color ) && ! empty( $color ) ) {
1298
  if( $allday )
1299
+ return 'background-color: ' . $color . ';';
1300
  else
1301
  return 'color: ' . $color . ' !important;';
1302
  }
1305
  }
1306
 
1307
  /**
 
 
1308
  * Returns a faded version of the event's category color in hex format.
1309
  *
1310
  * @param int $term_id The Event Category's term ID
1311
+ *
1312
  * @return string
1313
+ */
1314
  function get_event_category_faded_color( $term_id ) {
1315
  $color = $this->get_category_color( $term_id );
1316
  if( ! is_null( $color ) && ! empty( $color ) ) {
1336
  return '';
1337
  }
1338
 
1339
+ /**
1340
+ * Returns an opacity-faded version of the event's category color in rgba
1341
+ * format.
1342
+ *
1343
+ * @param int $term_id The Event Category's term ID
1344
+ *
1345
+ * @return string
1346
+ */
1347
+ function get_event_category_rgba_color( $term_id ) {
1348
+ $color = $this->get_category_color( $term_id );
1349
+ if( ! is_null( $color ) && ! empty( $color ) ) {
1350
+ $p1 = hexdec( substr( $color, 1, 2 ) );
1351
+ $p2 = hexdec( substr( $color, 3, 2 ) );
1352
+ $p3 = hexdec( substr( $color, 5, 2 ) );
1353
+ return "rgba($p1, $p2, $p3, 0.3)";
1354
+ }
1355
+
1356
+ return '';
1357
+ }
1358
+
1359
  /**
1360
  * get_event_category_colors function
1361
  *
1495
  } else {
1496
  $until = $this->gmt_to_local( $until );
1497
  }
1498
+
1499
  $until = gmdate( "Ymd\THis\Z", $until );
1500
  $rule_props = explode( ';', $rule );
1501
  $_rule = array();
1536
  function exception_dates_to_gmt( $exception_dates ) {
1537
  return $this->exception_dates_to( $exception_dates, true );
1538
  }
1539
+
1540
  /**
1541
  * exception_dates_to function
1542
  *
1552
  } else {
1553
  $_exdate = $this->gmt_to_local( $_exdate );
1554
  }
1555
+
1556
  $dates_to_add[] = gmdate( "Ymd\THis\Z", $_exdate );
1557
  }
1558
  // append dates to the string and return it;
1825
 
1826
  return $permalink;
1827
  }
1828
+
1829
  /**
1830
  * get_repeat_box function
1831
  *
1833
  **/
1834
  function get_repeat_box() {
1835
  global $ai1ec_view_helper;
1836
+
1837
  $repeat = (int) $_REQUEST["repeat"];
1838
  $repeat = $repeat == 1 ? 1 : 0;
1839
  $post_id = (int) $_REQUEST["post_id"];
1840
  $count = 100;
1841
  $end = null;
1842
  $until = gmmktime();
1843
+
1844
  // try getting the event
1845
  try {
1846
  $event = new Ai1ec_Event( $post_id );
1847
  $rule = '';
1848
+
1849
  if( $repeat ) {
1850
  $rule = empty( $event->recurrence_rules ) ? '' : $event->recurrence_rules;
1851
  } else {
1853
  }
1854
 
1855
  $rc = new SG_iCal_Recurrence( new SG_iCal_Line( 'RRULE:' . $rule ) );
1856
+
1857
  if( $until = $rc->getUntil() ) {
1858
  $until = ( is_numeric( $until ) ) ? $until : strtotime( $until );
1859
  }
1861
  $count = ( is_numeric( $count ) ) ? $count : 100;
1862
  }
1863
  } catch( Ai1ec_Event_Not_Found $e ) { /* event wasn't found, keep defaults */ }
1864
+
1865
  $args = array(
1866
  'row_daily' => $this->row_daily(),
1867
  'row_weekly' => $this->row_weekly(),
1874
  );
1875
  $output = array(
1876
  "error" => false,
1877
+ "message" => $ai1ec_view_helper->get_admin_view( 'box_repeat.php', $args ),
1878
  "repeat" => $repeat
1879
  );
1880
 
1881
  echo json_encode( $output );
1882
  exit();
1883
  }
 
1884
  /**
1885
  * get_date_picker_box function
1886
  *
1888
  **/
1889
  function get_date_picker_box() {
1890
  global $ai1ec_view_helper;
1891
+
1892
  $dates = '';
1893
+
1894
  $args = array(
1895
  'dates' => $dates
1896
  );
1897
+
1898
  $output = array(
1899
  "error" => false,
1900
+ "message" => $ai1ec_view_helper->get_admin_view( 'box_date_picker.php', $args ),
1901
  );
1902
 
1903
  echo json_encode( $output );
1904
  exit();
1905
  }
1906
+
1907
  /**
1908
  * shortcode function
1909
  *
1927
  return - ( 7 - ( $ai1ec_settings->week_start_day - $wday ) ) % 7;
1928
  }
1929
  }
1930
+ // END class
app/helper/class-ai1ec-exporter-helper.php CHANGED
@@ -65,7 +65,7 @@ class Ai1ec_Exporter_Helper {
65
  $uid = $event->ical_uid ? $event->ical_uid : $event->post->guid;
66
  $e->setProperty( 'uid', $uid );
67
  $e->setProperty( 'url', get_permalink( $event->post_id ) );
68
- $e->setProperty( 'summary', html_entity_decode( apply_filters( 'the_title', $event->post->post_title ), ENT_QUOTES ) );
69
  $content = apply_filters( 'the_content', $event->post->post_content );
70
  $content = str_replace(']]>', ']]&gt;', $content);
71
  $e->setProperty( 'description', $content );
65
  $uid = $event->ical_uid ? $event->ical_uid : $event->post->guid;
66
  $e->setProperty( 'uid', $uid );
67
  $e->setProperty( 'url', get_permalink( $event->post_id ) );
68
+ $e->setProperty( 'summary', html_entity_decode( apply_filters( 'the_title', $event->post->post_title ), ENT_QUOTES, 'UTF-8' ) );
69
  $content = apply_filters( 'the_content', $event->post->post_content );
70
  $content = str_replace(']]>', ']]&gt;', $content);
71
  $e->setProperty( 'description', $content );
app/helper/class-ai1ec-settings-helper.php CHANGED
@@ -102,10 +102,9 @@ class Ai1ec_Settings_Helper {
102
  if( is_numeric( $selected_page_id ) && $selected_page_id > 0 ) {
103
  $permalink = get_permalink( $selected_page_id );
104
  ?>
105
- <br />
106
- <a href="<?php echo $permalink ?>" target="_blank">
107
  <?php printf( __( 'View "%s" »', AI1EC_PLUGIN_NAME ), $selected_title ) ?>
108
- </a>
109
  <?php
110
  }
111
  return ob_get_clean();
@@ -273,7 +272,7 @@ class Ai1ec_Settings_Helper {
273
  'feed_id' => $row->feed_id,
274
  'events' => $events
275
  );
276
- $ai1ec_view_helper->display( 'feed_row.php', $args );
277
  endforeach;
278
 
279
  return ob_get_clean();
@@ -306,76 +305,86 @@ class Ai1ec_Settings_Helper {
306
  return ob_get_clean();
307
  }
308
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  /**
310
- * general_settings_meta_box function
311
- *
312
- * Displays the General Settings meta box.
313
  *
314
  * @return void
315
- **/
316
- function general_settings_meta_box( $object, $box ) {
317
  global $ai1ec_view_helper,
318
- $ai1ec_settings_helper,
319
  $ai1ec_settings;
320
 
321
- $calendar_page = $ai1ec_settings_helper->wp_pages_dropdown(
322
- 'calendar_page_id',
323
- $ai1ec_settings->calendar_page_id,
324
- __( 'Calendar', AI1EC_PLUGIN_NAME )
325
- );
326
- $calendar_css_selector = $ai1ec_settings->calendar_css_selector;
327
- $week_start_day = $ai1ec_settings_helper->get_week_dropdown( get_option( 'start_of_week' ) );
328
- $agenda_events_per_page = $ai1ec_settings->agenda_events_per_page;
329
- $include_events_in_rss =
330
- '<input type="checkbox" name="include_events_in_rss"
331
- id="include_events_in_rss" value="1"'
332
- . ( $ai1ec_settings->include_events_in_rss ? ' checked="checked"' : '' )
333
- . '/>';
334
- $exclude_from_search = $ai1ec_settings->exclude_from_search ? 'checked=checked' : '';
335
- $show_publish_button = $ai1ec_settings->show_publish_button ? 'checked=checked' : '';
336
- $hide_maps_until_clicked = $ai1ec_settings->hide_maps_until_clicked ? 'checked=checked' : '';
337
- $agenda_events_expanded = $ai1ec_settings->agenda_events_expanded ? 'checked=checked' : '';
338
- $turn_off_subscription_buttons = $ai1ec_settings->turn_off_subscription_buttons ? 'checked=checked' : '';
339
- $show_create_event_button = $ai1ec_settings->show_create_event_button ? 'checked=checked' : '';
340
- $inject_categories = $ai1ec_settings->inject_categories ? 'checked=checked' : '';
341
- $geo_region_biasing = $ai1ec_settings->geo_region_biasing ? 'checked=checked' : '';
342
- $input_date_format = $ai1ec_settings_helper->get_date_format_dropdown( $ai1ec_settings->input_date_format );
343
- $input_24h_time = $ai1ec_settings->input_24h_time ? 'checked=checked' : '';
344
- $default_calendar_view = $ai1ec_settings_helper->get_view_dropdown( $ai1ec_settings->default_calendar_view );
345
- $timezone_control = $ai1ec_settings_helper->get_timezone_dropdown( $ai1ec_settings->timezone );
346
- $allow_statistics = $ai1ec_settings->allow_statistics ? 'checked=checked' : '';
347
-
348
  $args = array(
349
- 'calendar_page' => $calendar_page,
350
- 'default_calendar_view' => $default_calendar_view,
351
- 'calendar_css_selector' => $calendar_css_selector,
352
- 'week_start_day' => $week_start_day,
353
- 'agenda_events_per_page' => $agenda_events_per_page,
354
- 'exclude_from_search' => $exclude_from_search,
355
- 'show_publish_button' => $show_publish_button,
356
- 'hide_maps_until_clicked' => $hide_maps_until_clicked,
357
- 'agenda_events_expanded' => $agenda_events_expanded,
358
- 'turn_off_subscription_buttons' => $turn_off_subscription_buttons,
359
- 'show_create_event_button' => $show_create_event_button,
360
- 'inject_categories' => $inject_categories,
361
- 'input_date_format' => $input_date_format,
362
- 'input_24h_time' => $input_24h_time,
363
- 'show_timezone' => ! get_option( 'timezone_string' ),
364
- 'timezone_control' => $timezone_control,
365
- 'geo_region_biasing' => $geo_region_biasing,
366
- 'allow_statistics' => $allow_statistics
367
  );
368
- $ai1ec_view_helper->display( 'box_general_settings.php', $args );
369
  }
370
 
371
  /**
372
- * ics_import_settings_meta_box function
373
- *
374
- * Renders view of iCalendar import meta box on the settings page.
375
  *
376
  * @return void
377
- **/
378
- function ics_import_settings_meta_box( $object, $box )
379
  {
380
  global $ai1ec_view_helper,
381
  $ai1ec_settings_helper,
@@ -386,16 +395,14 @@ class Ai1ec_Settings_Helper {
386
  'event_categories' => $ai1ec_settings_helper->get_event_categories_select(),
387
  'feed_rows' => $ai1ec_settings_helper->get_feed_rows()
388
  );
389
- $ai1ec_view_helper->display( 'box_ics_import_settings.php', $args );
390
  }
391
 
392
  /**
393
- * the_seed_studio_meta_box function
394
- *
395
- *
396
  *
397
  * @return void
398
- **/
399
  function the_seed_studio_meta_box( $object, $box ) {
400
  global $ai1ec_view_helper;
401
  include_once( ABSPATH . WPINC . '/feed.php' );
@@ -403,19 +410,29 @@ class Ai1ec_Settings_Helper {
403
  $newsItems = array();
404
  $feed = fetch_feed( AI1EC_RSS_FEED );
405
  $newsItems = is_wp_error( $feed ) ? array() : $feed->get_items();
406
- $ai1ec_view_helper->display( 'box_the_seed_studio.php', array( 'news' => $newsItems ) );
407
  }
408
 
 
 
 
 
 
 
 
 
 
 
 
409
  /**
410
- * add_meta_boxes function
411
- *
412
- *
413
  *
414
  * @return void
415
- **/
416
- function add_meta_boxes(){
417
  global $ai1ec_settings;
418
- do_action( 'add_meta_boxes', $ai1ec_settings->settings_page );
419
  }
420
  }
421
  // END class
102
  if( is_numeric( $selected_page_id ) && $selected_page_id > 0 ) {
103
  $permalink = get_permalink( $selected_page_id );
104
  ?>
105
+ <div><a href="<?php echo $permalink ?>" target="_blank">
 
106
  <?php printf( __( 'View "%s" »', AI1EC_PLUGIN_NAME ), $selected_title ) ?>
107
+ </a></div>
108
  <?php
109
  }
110
  return ob_get_clean();
272
  'feed_id' => $row->feed_id,
273
  'events' => $events
274
  );
275
+ $ai1ec_view_helper->display_admin( 'feed_row.php', $args );
276
  endforeach;
277
 
278
  return ob_get_clean();
305
  return ob_get_clean();
306
  }
307
 
308
+ /**
309
+ * Displays the General Settings meta box.
310
+ *
311
+ * @return void
312
+ */
313
+ function general_settings_meta_box( $object, $box ) {
314
+ global $ai1ec_view_helper,
315
+ $ai1ec_settings;
316
+
317
+ $calendar_page = $this->wp_pages_dropdown(
318
+ 'calendar_page_id',
319
+ $ai1ec_settings->calendar_page_id,
320
+ __( 'Calendar', AI1EC_PLUGIN_NAME )
321
+ );
322
+ $week_start_day = $this->get_week_dropdown( get_option( 'start_of_week' ) );
323
+ $agenda_events_per_page = $ai1ec_settings->agenda_events_per_page;
324
+ $include_events_in_rss =
325
+ '<input type="checkbox" name="include_events_in_rss"
326
+ id="include_events_in_rss" value="1"'
327
+ . ( $ai1ec_settings->include_events_in_rss ? ' checked="checked"' : '' )
328
+ . '/>';
329
+ $exclude_from_search = $ai1ec_settings->exclude_from_search ? 'checked=checked' : '';
330
+ $show_publish_button = $ai1ec_settings->show_publish_button ? 'checked=checked' : '';
331
+ $hide_maps_until_clicked = $ai1ec_settings->hide_maps_until_clicked ? 'checked=checked' : '';
332
+ $agenda_events_expanded = $ai1ec_settings->agenda_events_expanded ? 'checked=checked' : '';
333
+ $turn_off_subscription_buttons = $ai1ec_settings->turn_off_subscription_buttons ? 'checked=checked' : '';
334
+ $show_create_event_button = $ai1ec_settings->show_create_event_button ? 'checked=checked' : '';
335
+ $inject_categories = $ai1ec_settings->inject_categories ? 'checked=checked' : '';
336
+ $geo_region_biasing = $ai1ec_settings->geo_region_biasing ? 'checked=checked' : '';
337
+ $input_date_format = $this->get_date_format_dropdown( $ai1ec_settings->input_date_format );
338
+ $input_24h_time = $ai1ec_settings->input_24h_time ? 'checked=checked' : '';
339
+ $default_calendar_view = $this->get_view_dropdown( $ai1ec_settings->default_calendar_view );
340
+ $timezone_control = $this->get_timezone_dropdown( $ai1ec_settings->timezone );
341
+ $allow_statistics = $ai1ec_settings->allow_statistics ? 'checked=checked' : '';
342
+ $disable_autocompletion = $ai1ec_settings->disable_autocompletion ? 'checked=checked' : '';
343
+
344
+ $args = array(
345
+ 'calendar_page' => $calendar_page,
346
+ 'default_calendar_view' => $default_calendar_view,
347
+ 'week_start_day' => $week_start_day,
348
+ 'agenda_events_per_page' => $agenda_events_per_page,
349
+ 'exclude_from_search' => $exclude_from_search,
350
+ 'show_publish_button' => $show_publish_button,
351
+ 'hide_maps_until_clicked' => $hide_maps_until_clicked,
352
+ 'agenda_events_expanded' => $agenda_events_expanded,
353
+ 'turn_off_subscription_buttons' => $turn_off_subscription_buttons,
354
+ 'show_create_event_button' => $show_create_event_button,
355
+ 'inject_categories' => $inject_categories,
356
+ 'input_date_format' => $input_date_format,
357
+ 'input_24h_time' => $input_24h_time,
358
+ 'show_timezone' => ! get_option( 'timezone_string' ),
359
+ 'timezone_control' => $timezone_control,
360
+ 'geo_region_biasing' => $geo_region_biasing,
361
+ 'allow_statistics' => $allow_statistics,
362
+ 'disable_autocompletion' => $disable_autocompletion,
363
+ );
364
+ $ai1ec_view_helper->display_admin( 'box_general_settings.php', $args );
365
+ }
366
+
367
  /**
368
+ * Displays the Advanced Settings meta box.
 
 
369
  *
370
  * @return void
371
+ */
372
+ function advanced_settings_meta_box( $object, $box ) {
373
  global $ai1ec_view_helper,
 
374
  $ai1ec_settings;
375
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
376
  $args = array(
377
+ 'calendar_css_selector' => $ai1ec_settings->calendar_css_selector,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  );
379
+ $ai1ec_view_helper->display_admin( 'box_advanced_settings.php', $args );
380
  }
381
 
382
  /**
383
+ * Renders the contents of the Calendar Feeds meta box.
 
 
384
  *
385
  * @return void
386
+ */
387
+ function feeds_meta_box( $object, $box )
388
  {
389
  global $ai1ec_view_helper,
390
  $ai1ec_settings_helper,
395
  'event_categories' => $ai1ec_settings_helper->get_event_categories_select(),
396
  'feed_rows' => $ai1ec_settings_helper->get_feed_rows()
397
  );
398
+ $ai1ec_view_helper->display_admin( 'box_feeds.php', $args );
399
  }
400
 
401
  /**
402
+ * Renders the contents of the Seed Studio Support meta box.
 
 
403
  *
404
  * @return void
405
+ */
406
  function the_seed_studio_meta_box( $object, $box ) {
407
  global $ai1ec_view_helper;
408
  include_once( ABSPATH . WPINC . '/feed.php' );
410
  $newsItems = array();
411
  $feed = fetch_feed( AI1EC_RSS_FEED );
412
  $newsItems = is_wp_error( $feed ) ? array() : $feed->get_items();
413
+ $ai1ec_view_helper->display_admin( 'box_the_seed_studio.php', array( 'news' => $newsItems ) );
414
  }
415
 
416
+ /**
417
+ * This is called when the settings page is loaded, so that any additional
418
+ * custom meta boxes can be added by other plugins, themes, etc.
419
+ *
420
+ * @return void
421
+ */
422
+ function add_settings_meta_boxes(){
423
+ global $ai1ec_settings;
424
+ do_action( 'add_meta_boxes', $ai1ec_settings->settings_page );
425
+ }
426
+
427
  /**
428
+ * This is called when the feeds page is loaded, so that any additional
429
+ * custom meta boxes can be added by other plugins, themes, etc.
 
430
  *
431
  * @return void
432
+ */
433
+ function add_feeds_meta_boxes(){
434
  global $ai1ec_settings;
435
+ do_action( 'add_meta_boxes', $ai1ec_settings->feeds_page );
436
  }
437
  }
438
  // END class
app/helper/class-ai1ec-view-helper.php CHANGED
@@ -45,7 +45,163 @@ class Ai1ec_View_Helper {
45
  }
46
 
47
  /**
48
- * display function
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  *
50
  * Display the view specified by file $file and passed arguments $args.
51
  *
@@ -54,12 +210,12 @@ class Ai1ec_View_Helper {
54
  *
55
  * @return void
56
  **/
57
- function display( $file = false, $args = array() ) {
58
  if( ! $file || empty( $file ) ) {
59
  throw new Ai1ec_File_Not_Provided( "You need to specify a view file." );
60
  }
61
 
62
- $file = AI1EC_VIEW_PATH . "/" . $file;
63
 
64
  if( ! file_exists( $file ) ) {
65
  throw new Ai1ec_File_Not_Found( "The specified view file doesn't exist." );
@@ -70,7 +226,58 @@ class Ai1ec_View_Helper {
70
  }
71
 
72
  /**
73
- * display_css function
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  *
75
  * Renders the given stylesheet inline. If stylesheet has already been
76
  * displayed once before with the same set of $args, does not display
@@ -81,15 +288,14 @@ class Ai1ec_View_Helper {
81
  *
82
  * @return void
83
  **/
84
- function display_css( $file = false, $args = array() ) {
85
  static $displayed = array();
86
- static $num = 0;
87
 
88
  if( ! $file || empty( $file ) ) {
89
  throw new Ai1ec_File_Not_Provided( 'You need to specify a css file.' );
90
  }
91
 
92
- $file = AI1EC_CSS_PATH . "/" . $file;
93
 
94
  if( isset( $displayed[$file] ) && $displayed[$file] === $args ) // Skip if already displayed
95
  return;
@@ -107,7 +313,68 @@ class Ai1ec_View_Helper {
107
  }
108
 
109
  /**
110
- * display_js function
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  *
112
  * Renders the given script inline. If script has already been displayed
113
  * once before with the same set of $args, does not display it again.
@@ -117,14 +384,14 @@ class Ai1ec_View_Helper {
117
  *
118
  * @return void
119
  **/
120
- function display_js( $file = false, $args = array() ) {
121
  static $displayed = array();
122
 
123
  if( ! $file || empty( $file ) ) {
124
  throw new Ai1ec_File_Not_Provided( "You need to specify a js file." );
125
  }
126
 
127
- $file = AI1EC_JS_PATH . "/" . $file;
128
 
129
  if( $displayed[$file] === $args) // Skip if already displayed
130
  return;
@@ -142,9 +409,70 @@ class Ai1ec_View_Helper {
142
  echo '</script>';
143
  }
144
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
 
146
  /**
147
- * get_view function
148
  *
149
  * Return the output of a view as a string rather than output to response.
150
  *
@@ -153,12 +481,101 @@ class Ai1ec_View_Helper {
153
  *
154
  * @return void
155
  **/
156
- function get_view( $file = false, $args = array() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  ob_start();
158
- $this->display( $file, $args );
159
  return ob_get_clean();
160
  }
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  /**
163
  * json_response function
164
  *
45
  }
46
 
47
  /**
48
+ * Enqueue a script from the admin resources directory (app/view/admin/js).
49
+ *
50
+ * @param string $name Unique identifer for the script
51
+ * @param string $file Filename of the script
52
+ * @param array $deps Dependencies of the script
53
+ * @param bool $in_footer Whether to add the script to the footer of the page
54
+ *
55
+ * @return void
56
+ */
57
+ function admin_enqueue_script( $name, $file, $deps = array(), $in_footer = FALSE ) {
58
+ if( ! $file || empty( $file ) ) {
59
+ throw new Ai1ec_File_Not_Provided( "You need to specify a script file." );
60
+ }
61
+
62
+ $_file = AI1EC_ADMIN_THEME_JS_PATH . '/' . $file;
63
+
64
+ if( ! file_exists( $_file ) ) {
65
+ throw new Ai1ec_File_Not_Found( "The specified file " . $_file . " doesn't exist." );
66
+ } else {
67
+ $file = AI1EC_ADMIN_THEME_JS_URL . '/' . $file;
68
+ wp_enqueue_script( $name, $file, $deps, AI1EC_VERSION, $in_footer );
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Enqueue a script from the theme resources directory.
74
+ *
75
+ * @param string $name Unique identifer for the script
76
+ * @param string $file Filename of the script
77
+ * @param array $deps Dependencies of the script
78
+ * @param bool $in_footer Whether to add the script to the footer of the page
79
+ *
80
+ * @return void
81
+ */
82
+ function theme_enqueue_script( $name, $file, $deps = array(), $in_footer = FALSE ) {
83
+ global $ai1ec_themes_controller;
84
+
85
+ if( ! $file || empty( $file ) ) {
86
+ throw new Ai1ec_File_Not_Provided( "You need to specify a script file." );
87
+ }
88
+
89
+ // template path
90
+ $active_template_path = $ai1ec_themes_controller->active_template_path();
91
+ // template url
92
+ $active_template_url = $ai1ec_themes_controller->active_template_url();
93
+
94
+ // look for the file in the active theme
95
+ $themes_root = array(
96
+ (object) array(
97
+ 'path' => $active_template_path . '/' . AI1EC_JS_FOLDER,
98
+ 'url' => $active_template_url . '/' . AI1EC_JS_FOLDER
99
+ ),
100
+ (object) array(
101
+ 'path' => AI1EC_DEFAULT_THEME_PATH . '/' . AI1EC_JS_FOLDER,
102
+ 'url' => AI1EC_DEFAULT_THEME_URL . '/' . AI1EC_JS_FOLDER
103
+ ),
104
+ );
105
+
106
+ $file_found = false;
107
+
108
+ // look for the file in each theme
109
+ foreach( $themes_root as $theme_root ) {
110
+ // $_file is a local var to hold the value of
111
+ // the file we are looking for
112
+ $_file = $theme_root->path . '/' . $file;
113
+ if( file_exists( $_file ) ) {
114
+ // file is found
115
+ $file_found = true;
116
+ // assign the found file
117
+ $file = $theme_root->url . '/' . $file;
118
+ // exit the loop;
119
+ break;
120
+ }
121
+ }
122
+
123
+ if( $file_found === false ) {
124
+ throw new Ai1ec_File_Not_Found( "The specified file '" . $file . "' doesn't exist." );
125
+ } else {
126
+ wp_enqueue_script( $name, $file, $deps, AI1EC_VERSION, $in_footer );
127
+ }
128
+ }
129
+
130
+ /**
131
+ * admin_enqueue_style function
132
+ *
133
+ * @return void
134
+ **/
135
+ function admin_enqueue_style( $name, $file, $deps = array() ) {
136
+ if( ! $file || empty( $file ) ) {
137
+ throw new Ai1ec_File_Not_Provided( "You need to specify a style file." );
138
+ }
139
+
140
+ $_file = AI1EC_ADMIN_THEME_CSS_PATH . '/' . $file;
141
+
142
+ if( ! file_exists( $_file ) ) {
143
+ throw new Ai1ec_File_Not_Found( "The specified file " . $file . " doesn't exist." );
144
+ } else {
145
+ $file = AI1EC_ADMIN_THEME_CSS_URL . '/' . $file;
146
+ wp_enqueue_style( $name, $file, $deps, AI1EC_VERSION );
147
+ }
148
+ }
149
+
150
+ /**
151
+ * theme_enqueue_style function
152
+ *
153
+ * @return void
154
+ **/
155
+ function theme_enqueue_style( $name, $file, $deps = array() ) {
156
+ global $ai1ec_themes_controller;
157
+
158
+ if( ! $file || empty( $file ) ) {
159
+ throw new Ai1ec_File_Not_Provided( "You need to specify a style file." );
160
+ }
161
+
162
+ // template path
163
+ $active_template_path = $ai1ec_themes_controller->active_template_path();
164
+ // template url
165
+ $active_template_url = $ai1ec_themes_controller->active_template_url();
166
+
167
+ // look for the file in the active theme
168
+ $themes_root = array(
169
+ (object) array(
170
+ 'path' => $active_template_path . '/' . AI1EC_CSS_FOLDER,
171
+ 'url' => $active_template_url . '/' . AI1EC_CSS_FOLDER
172
+ ),
173
+ (object) array(
174
+ 'path' => AI1EC_DEFAULT_THEME_PATH . '/' . AI1EC_CSS_FOLDER,
175
+ 'url' => AI1EC_DEFAULT_THEME_URL . '/' . AI1EC_CSS_FOLDER
176
+ ),
177
+ );
178
+
179
+ $file_found = false;
180
+
181
+ // look for the file in each theme
182
+ foreach( $themes_root as $theme_root ) {
183
+ // $_file is a local var to hold the value of
184
+ // the file we are looking for
185
+ $_file = $theme_root->path . '/' . $file;
186
+ if( file_exists( $_file ) ) {
187
+ // file is found
188
+ $file_found = true;
189
+ // assign the found file
190
+ $file = $theme_root->url . '/' . $file;
191
+ // exit the loop;
192
+ break;
193
+ }
194
+ }
195
+
196
+ if( $file_found === false ) {
197
+ throw new Ai1ec_File_Not_Found( "The specified file '" . $file . "' doesn't exist." );
198
+ } else {
199
+ wp_enqueue_style( $name, $file, $deps, AI1EC_VERSION );
200
+ }
201
+ }
202
+
203
+ /**
204
+ * display_admin function
205
  *
206
  * Display the view specified by file $file and passed arguments $args.
207
  *
210
  *
211
  * @return void
212
  **/
213
+ function display_admin( $file = false, $args = array() ) {
214
  if( ! $file || empty( $file ) ) {
215
  throw new Ai1ec_File_Not_Provided( "You need to specify a view file." );
216
  }
217
 
218
+ $file = AI1EC_ADMIN_THEME_PATH . '/' . $file;
219
 
220
  if( ! file_exists( $file ) ) {
221
  throw new Ai1ec_File_Not_Found( "The specified view file doesn't exist." );
226
  }
227
 
228
  /**
229
+ * display_theme function
230
+ *
231
+ * Display the view specified by file $file and passed arguments $args.
232
+ *
233
+ * @param string $file
234
+ * @param array $args
235
+ *
236
+ * @return void
237
+ **/
238
+ function display_theme( $file = false, $args = array() ) {
239
+ global $ai1ec_themes_controller;
240
+
241
+ if( ! $file || empty( $file ) ) {
242
+ throw new Ai1ec_File_Not_Provided( "You need to specify a view file." );
243
+ }
244
+
245
+ // look for the file in the selected theme
246
+ $themes_root = array(
247
+ $ai1ec_themes_controller->active_template_path(),
248
+ AI1EC_DEFAULT_THEME_PATH
249
+ );
250
+
251
+ // remove duplicates
252
+ $themes_root = array_unique( $themes_root );
253
+
254
+ $file_found = false;
255
+
256
+ // look for the file in each theme
257
+ foreach( $themes_root as $theme_root ) {
258
+ // $_file is a local var to hold the value of
259
+ // the file we are looking for
260
+ $_file = $theme_root . '/' . $file;
261
+ if( file_exists( $_file ) ) {
262
+ // file is found
263
+ $file_found = true;
264
+ // assign the found file
265
+ $file = $_file;
266
+ // exit the loop;
267
+ break;
268
+ }
269
+ }
270
+
271
+ if( $file_found === false ) {
272
+ throw new Ai1ec_File_Not_Found( "The specified view file '" . $file . "' doesn't exist." );
273
+ } else {
274
+ extract( $args );
275
+ require( $file );
276
+ }
277
+ }
278
+
279
+ /**
280
+ * display_admin_css function
281
  *
282
  * Renders the given stylesheet inline. If stylesheet has already been
283
  * displayed once before with the same set of $args, does not display
288
  *
289
  * @return void
290
  **/
291
+ function display_admin_css( $file = false, $args = array() ) {
292
  static $displayed = array();
 
293
 
294
  if( ! $file || empty( $file ) ) {
295
  throw new Ai1ec_File_Not_Provided( 'You need to specify a css file.' );
296
  }
297
 
298
+ $file = AI1EC_ADMIN_THEME_CSS_PATH . '/' . $file;
299
 
300
  if( isset( $displayed[$file] ) && $displayed[$file] === $args ) // Skip if already displayed
301
  return;
313
  }
314
 
315
  /**
316
+ * display_theme_css function
317
+ *
318
+ * Renders the given stylesheet inline. If stylesheet has already been
319
+ * displayed once before with the same set of $args, does not display
320
+ * it again.
321
+ *
322
+ * @param string $file
323
+ * @param array $args
324
+ *
325
+ * @return void
326
+ **/
327
+ function display_theme_css( $file = false, $args = array() ) {
328
+ global $ai1ec_themes_controller;
329
+ static $displayed = array();
330
+
331
+ if( ! $file || empty( $file ) ) {
332
+ throw new Ai1ec_File_Not_Provided( 'You need to specify a CSS file.' );
333
+ }
334
+
335
+ // look for the file in the selected theme
336
+ $themes_root = array(
337
+ $ai1ec_themes_controller->active_template_path() . '/' . AI1EC_THEME_CSS_FOLDER,
338
+ AI1EC_DEFAULT_THEME_PATH . '/' . AI1EC_THEME_CSS_FOLDER
339
+ );
340
+
341
+ // remove duplicates
342
+ $themes_root = array_unique( $themes_root );
343
+
344
+ $file_found = false;
345
+
346
+ // look for the file in each theme
347
+ foreach( $themes_root as $theme_root ) {
348
+ // $_file is a local var to hold the value of
349
+ // the file we are looking for
350
+ $_file = $theme_root . '/' . $file;
351
+ if( file_exists( $_file ) ) {
352
+ // file is found
353
+ $file_found = true;
354
+ // assign the found file
355
+ $file = $_file;
356
+ // exit the loop;
357
+ break;
358
+ }
359
+ }
360
+
361
+ if( isset( $displayed[$file] ) && $displayed[$file] === $args ) // Skip if already displayed
362
+ return;
363
+
364
+ if( ! file_exists( $file ) ) {
365
+ throw new Ai1ec_File_Not_Found( "The specified CSS file doesn't exist." );
366
+ } else {
367
+ $displayed[$file] = $args; // Flag that we've displayed this file with these args
368
+
369
+ extract( $args );
370
+ echo '<style type="text/css">';
371
+ require( $file );
372
+ echo '</style>';
373
+ }
374
+ }
375
+
376
+ /**
377
+ * display_admin_js function
378
  *
379
  * Renders the given script inline. If script has already been displayed
380
  * once before with the same set of $args, does not display it again.
384
  *
385
  * @return void
386
  **/
387
+ function display_admin_js( $file = false, $args = array() ) {
388
  static $displayed = array();
389
 
390
  if( ! $file || empty( $file ) ) {
391
  throw new Ai1ec_File_Not_Provided( "You need to specify a js file." );
392
  }
393
 
394
+ $file = AI1EC_ADMIN_THEME_JS_PATH . '/' . $file;
395
 
396
  if( $displayed[$file] === $args) // Skip if already displayed
397
  return;
409
  echo '</script>';
410
  }
411
  }
412
+ /**
413
+ * display_theme_js function
414
+ *
415
+ * Renders the given script inline. If script has already been displayed
416
+ * once before with the same set of $args, does not display it again.
417
+ *
418
+ * @param string $file
419
+ * @param array $args
420
+ *
421
+ * @return void
422
+ **/
423
+ function display_theme_js( $file = false, $args = array() ) {
424
+ global $ai1ec_themes_controller;
425
+ static $displayed = array();
426
+
427
+ if( ! $file || empty( $file ) ) {
428
+ throw new Ai1ec_File_Not_Provided( "You need to specify a JS file." );
429
+ }
430
+
431
+ // look for the file in the selected theme
432
+ $themes_root = array(
433
+ $ai1ec_themes_controller->active_template_path() . '/' . AI1EC_THEME_JS_FOLDER,
434
+ AI1EC_DEFAULT_THEME_PATH . '/' . AI1EC_THEME_JS_FOLDER
435
+ );
436
+
437
+ // remove duplicates
438
+ $themes_root = array_unique( $themes_root );
439
+
440
+ $file_found = false;
441
+
442
+ // look for the file in each theme
443
+ foreach( $themes_root as $theme_root ) {
444
+ // $_file is a local var to hold the value of
445
+ // the file we are looking for
446
+ $_file = $theme_root . '/' . $file;
447
+ if( file_exists( $_file ) ) {
448
+ // file is found
449
+ $file_found = true;
450
+ // assign the found file
451
+ $file = $_file;
452
+ // exit the loop;
453
+ break;
454
+ }
455
+ }
456
+
457
+ if( $displayed[$file] === $args) // Skip if already displayed
458
+ return;
459
+
460
+ if( ! file_exists( $file ) ) {
461
+ throw new Ai1ec_File_Not_Found( "The specified JS file doesn't exist." );
462
+ } else {
463
+ $displayed[$file] = $args; // Flag that we've displayed this file with these args
464
+
465
+ extract( $args );
466
+ echo '<script type="text/javascript" charset="utf-8">';
467
+ echo '/* <![CDATA[ */';
468
+ require( $file );
469
+ echo '/* ]]> */';
470
+ echo '</script>';
471
+ }
472
+ }
473
 
474
  /**
475
+ * get_admin_view function
476
  *
477
  * Return the output of a view as a string rather than output to response.
478
  *
481
  *
482
  * @return void
483
  **/
484
+ function get_admin_view( $file = false, $args = array() ) {
485
+ ob_start();
486
+ $this->display_admin( $file, $args );
487
+ return ob_get_clean();
488
+ }
489
+
490
+ /**
491
+ * get_theme_view function
492
+ *
493
+ * Return the output of a view in the theme as a string rather than output to response.
494
+ *
495
+ * @param string $file
496
+ * @param array $args
497
+ *
498
+ * @return void
499
+ **/
500
+ function get_theme_view( $file = false, $args = array() ) {
501
  ob_start();
502
+ $this->display_theme( $file, $args );
503
  return ob_get_clean();
504
  }
505
 
506
+ /**
507
+ * get_admin_img_url function
508
+ *
509
+ * @return string
510
+ **/
511
+ public function get_admin_img_url( $file ) {
512
+ if( ! $file || empty( $file ) ) {
513
+ throw new Ai1ec_File_Not_Provided( "You need to specify an image file." );
514
+ }
515
+
516
+ $_file = AI1EC_ADMIN_THEME_IMG_PATH . '/' . $file;
517
+
518
+ if( ! file_exists( $_file ) ) {
519
+ throw new Ai1ec_File_Not_Found( "The specified file " . $_file . " doesn't exist." );
520
+ } else {
521
+ $file = AI1EC_ADMIN_THEME_IMG_URL . '/' . $file;
522
+ return $file;
523
+ }
524
+ }
525
+
526
+ /**
527
+ * get_theme_img_url function
528
+ *
529
+ * @return string
530
+ **/
531
+ public function get_theme_img_url( $file ) {
532
+ global $ai1ec_themes_controller;
533
+
534
+ if( ! $file || empty( $file ) ) {
535
+ throw new Ai1ec_File_Not_Provided( "You need to specify a style file." );
536
+ }
537
+
538
+ // template path
539
+ $active_template_path = $ai1ec_themes_controller->active_template_path();
540
+ // template url
541
+ $active_template_url = $ai1ec_themes_controller->active_template_url();
542
+
543
+ // look for the file in the active theme
544
+ $themes_root = array(
545
+ (object) array(
546
+ 'path' => $active_template_path . '/' . AI1EC_IMG_FOLDER,
547
+ 'url' => $active_template_url . '/' . AI1EC_IMG_FOLDER
548
+ ),
549
+ (object) array(
550
+ 'path' => AI1EC_DEFAULT_THEME_PATH . '/' . AI1EC_IMG_FOLDER,
551
+ 'url' => AI1EC_DEFAULT_THEME_URL . '/' . AI1EC_IMG_FOLDER
552
+ ),
553
+ );
554
+
555
+ $file_found = false;
556
+
557
+ // look for the file in each theme
558
+ foreach( $themes_root as $theme_root ) {
559
+ // $_file is a local var to hold the value of
560
+ // the file we are looking for
561
+ $_file = $theme_root->path . '/' . $file;
562
+ if( file_exists( $_file ) ) {
563
+ // file is found
564
+ $file_found = true;
565
+ // assign the found file
566
+ $file = $theme_root->url . '/' . $file;
567
+ // exit the loop;
568
+ break;
569
+ }
570
+ }
571
+
572
+ if( $file_found === false ) {
573
+ throw new Ai1ec_File_Not_Found( "The specified file '" . $file . "' doesn't exist." );
574
+ } else {
575
+ return $file;
576
+ }
577
+ }
578
+
579
  /**
580
  * json_response function
581
  *
app/model/class-ai1ec-event.php CHANGED
@@ -241,7 +241,7 @@ class Ai1ec_Event {
241
  * @var string
242
  **/
243
  var $categories;
244
-
245
  /**
246
  * feed class variable
247
  *
@@ -434,6 +434,17 @@ class Ai1ec_Event {
434
 
435
  case 'uid':
436
  return $this->post_id . '@' . bloginfo( 'url' );
 
 
 
 
 
 
 
 
 
 
 
437
  // ========================
438
  // = Get short-form dates =
439
  // ========================
@@ -592,29 +603,43 @@ class Ai1ec_Event {
592
  case 'color_style':
593
  if( $this->color_style === null ) {
594
  $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
595
- if( $categories && ! empty( $categories ) )
596
- $this->color_style = $ai1ec_events_helper->get_event_category_color_style( $categories[0]->term_id, $this->allday );
 
597
  }
598
  return $this->color_style;
599
 
600
- // =========================================
601
- // = Faded version of event category color =
602
- // =========================================
603
- case 'faded_color':
604
- if( $this->faded_color === null ) {
605
- $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
606
- if( $categories && ! empty( $categories ) )
607
- $this->faded_color = $ai1ec_events_helper->get_event_category_faded_color( $categories[0]->term_id );
608
- }
609
- return $this->faded_color;
610
-
611
- // ===============================================
612
- // = HTML of category color boxes for this event =
613
- // ===============================================
614
- case 'category_colors':
615
- if( $this->category_colors === null ) {
616
- $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
617
- $this->category_colors = $ai1ec_events_helper->get_event_category_colors( $categories );
 
 
 
 
 
 
 
 
 
 
 
 
 
618
  }
619
  return $this->category_colors;
620
 
@@ -669,28 +694,28 @@ class Ai1ec_Event {
669
  // = Insert events meta data =
670
  // ===========================
671
  $columns = array(
672
- 'post_id' => $this->post_id,
673
- 'start' => $this->start,
674
- 'end' => $this->end,
675
- 'allday' => $this->allday,
676
- 'recurrence_rules' => $this->recurrence_rules,
677
- 'exception_rules' => $this->exception_rules,
678
- 'recurrence_dates' => $this->recurrence_dates,
679
- 'exception_dates' => $this->exception_dates,
680
- 'venue' => $this->venue,
681
- 'country' => $this->country,
682
- 'address' => $this->address,
683
- 'city' => $this->city,
684
- 'province' => $this->province,
685
- 'postal_code' => $this->postal_code,
686
- 'show_map' => $this->show_map,
687
- 'contact_name' => $this->contact_name,
688
- 'contact_phone' => $this->contact_phone,
689
- 'contact_email' => $this->contact_email,
690
- 'cost' => $this->cost,
691
- 'ical_feed_url' => $this->ical_feed_url,
692
- 'ical_source_url' => $this->ical_source_url,
693
- 'ical_uid' => $this->ical_uid,
694
  );
695
 
696
  $format = array(
@@ -715,7 +740,7 @@ class Ai1ec_Event {
715
  '%s',
716
  '%s',
717
  '%s',
718
- '%s'
719
  );
720
 
721
  $table_name = $wpdb->prefix . 'ai1ec_events';
@@ -769,7 +794,6 @@ class Ai1ec_Event {
769
  // associate the event with the feed only if we have term id set
770
  $a = wp_set_object_terms( $this->post_id, (int)$term->term_id, 'events_feeds', false );
771
  }
772
-
773
  }
774
 
775
  // =========================
241
  * @var string
242
  **/
243
  var $categories;
244
+
245
  /**
246
  * feed class variable
247
  *
434
 
435
  case 'uid':
436
  return $this->post_id . '@' . bloginfo( 'url' );
437
+
438
+ case "multiday":
439
+ return (
440
+ $ai1ec_events_helper->get_long_date( $this->start )
441
+ !=
442
+ $ai1ec_events_helper->get_long_date( $this->end - 1 )
443
+ );
444
+
445
+ case "multiday_end_date":
446
+ return $ai1ec_events_helper->get_multiday_end_date( $this->end - 1 );
447
+
448
  // ========================
449
  // = Get short-form dates =
450
  // ========================
603
  case 'color_style':
604
  if( $this->color_style === null ) {
605
  $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
606
+ if( $categories && ! empty( $categories ) ) {
607
+ $this->color_style = $ai1ec_events_helper->get_event_category_color_style( $categories[0]->term_id, $this->allday || $this->multiday );
608
+ }
609
  }
610
  return $this->color_style;
611
 
612
+ // =========================================
613
+ // = Faded version of event category color =
614
+ // =========================================
615
+ case 'faded_color':
616
+ if( $this->faded_color === null ) {
617
+ $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
618
+ if( $categories && ! empty( $categories ) ) {
619
+ $this->faded_color = $ai1ec_events_helper->get_event_category_faded_color( $categories[0]->term_id );
620
+ }
621
+ }
622
+ return $this->faded_color;
623
+
624
+ // ========================================
625
+ // = RGBA version of faded category color =
626
+ // ========================================
627
+ case 'rgba_color':
628
+ if( $this->rgba_color === null ) {
629
+ $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
630
+ if( $categories && ! empty( $categories ) ) {
631
+ $this->rgba_color = $ai1ec_events_helper->get_event_category_rgba_color( $categories[0]->term_id );
632
+ }
633
+ }
634
+ return $this->rgba_color;
635
+
636
+ // ===============================================
637
+ // = HTML of category color boxes for this event =
638
+ // ===============================================
639
+ case 'category_colors':
640
+ if( $this->category_colors === null ) {
641
+ $categories = wp_get_post_terms( $this->post_id, 'events_categories' );
642
+ $this->category_colors = $ai1ec_events_helper->get_event_category_colors( $categories );
643
  }
644
  return $this->category_colors;
645
 
694
  // = Insert events meta data =
695
  // ===========================
696
  $columns = array(
697
+ 'post_id' => $this->post_id,
698
+ 'start' => $this->start,
699
+ 'end' => $this->end,
700
+ 'allday' => $this->allday,
701
+ 'recurrence_rules' => $this->recurrence_rules,
702
+ 'exception_rules' => $this->exception_rules,
703
+ 'recurrence_dates' => $this->recurrence_dates,
704
+ 'exception_dates' => $this->exception_dates,
705
+ 'venue' => $this->venue,
706
+ 'country' => $this->country,
707
+ 'address' => $this->address,
708
+ 'city' => $this->city,
709
+ 'province' => $this->province,
710
+ 'postal_code' => $this->postal_code,
711
+ 'show_map' => $this->show_map,
712
+ 'contact_name' => $this->contact_name,
713
+ 'contact_phone' => $this->contact_phone,
714
+ 'contact_email' => $this->contact_email,
715
+ 'cost' => $this->cost,
716
+ 'ical_feed_url' => $this->ical_feed_url,
717
+ 'ical_source_url' => $this->ical_source_url,
718
+ 'ical_uid' => $this->ical_uid,
719
  );
720
 
721
  $format = array(
740
  '%s',
741
  '%s',
742
  '%s',
743
+ '%s',
744
  );
745
 
746
  $table_name = $wpdb->prefix . 'ai1ec_events';
794
  // associate the event with the feed only if we have term id set
795
  $a = wp_set_object_terms( $this->post_id, (int)$term->term_id, 'events_feeds', false );
796
  }
 
797
  }
798
 
799
  // =========================
app/model/class-ai1ec-settings.php CHANGED
@@ -93,7 +93,7 @@ class Ai1ec_Settings {
93
  * @var string
94
  **/
95
  var $cron_freq;
96
-
97
  /**
98
  * timezone class variable
99
  *
@@ -118,18 +118,18 @@ class Ai1ec_Settings {
118
  * @var bool
119
  **/
120
  var $show_publish_button;
121
-
122
  /**
123
  * hide_maps_until_clicked class variable
124
  *
125
- * When this setting is on, instead of showing the Google Map,
126
- * show a dotted-line box containing the text "Click to view map",
127
  * and when clicked, this box is replaced by the Google Map.
128
  *
129
  * @var bool
130
  **/
131
  var $hide_maps_until_clicked;
132
-
133
  /**
134
  * agenda_events_expanded class variable
135
  *
@@ -179,50 +179,67 @@ class Ai1ec_Settings {
179
  * @var string
180
  **/
181
  var $input_date_format;
182
-
183
  /**
184
  * input_24h_time class variable
185
  *
186
- * Use 24h time in time pickers.
187
  *
188
  * @var bool
189
  **/
190
  var $input_24h_time;
191
 
 
 
 
 
 
 
 
 
 
 
192
  /**
193
- * settings_page class variable
194
  *
195
- * Stores a reference to the settings page added using
196
- * add_submenu_page function
197
  *
198
  * @var object
199
- **/
200
- var $settings_page;
201
-
202
  /**
203
  * geo_region_biasing class variable
204
  *
205
- * If set to true the ISO-3166 part of the configured
206
  * locale in WordPress is going to be used to bias the
207
  * geo autocomplete plugin towards a specific region.
208
  *
209
  * @var bool
210
  **/
211
  var $geo_region_biasing;
212
-
213
  /**
214
- * show_data_notification class variable
215
  *
216
  * @var bool
217
- **/
218
  var $show_data_notification;
219
-
 
 
 
 
 
 
 
220
  /**
221
- * allow_statistics class variable
222
  *
223
  * @var bool
224
  **/
225
- var $allow_statistics;
226
 
227
  /**
228
  * __construct function
@@ -288,24 +305,25 @@ class Ai1ec_Settings {
288
  'calendar_css_selector' => '',
289
  'week_start_day' => get_option( 'start_of_week' ),
290
  'agenda_events_per_page' => get_option( 'posts_per_page' ),
291
- 'agenda_events_expanded' => false,
292
- 'include_events_in_rss' => false,
293
- 'allow_publish_to_facebook' => false,
294
- 'facebook_credentials' => null,
295
- 'user_role_can_create_event' => null,
296
- 'show_publish_button' => false,
297
- 'hide_maps_until_clicked' => false,
298
- 'exclude_from_search' => false,
299
- 'show_create_event_button' => false,
300
- 'turn_off_subscription_buttons' => false,
301
- 'inject_categories' => false,
302
  'input_date_format' => 'def',
303
- 'input_24h_time' => false,
304
  'cron_freq' => 'daily',
305
  'timezone' => get_option( 'timezone_string' ),
306
- 'geo_region_biasing' => false,
307
- 'show_data_notification' => true,
308
- 'allow_statistics' => true
 
309
  );
310
 
311
  foreach( $defaults as $key => $default ) {
@@ -315,44 +333,86 @@ class Ai1ec_Settings {
315
  }
316
 
317
  /**
318
- * update function
319
- *
320
  * Updates field values with corresponding values found in $params
321
  * associative array.
322
  *
323
- * @param array $params
 
324
  *
325
  * @return void
326
- **/
327
- function update( $params ) {
328
- $this->update_page( 'calendar_page_id', $params );
329
- if( isset( $params['default_calendar_view'] ) ) $this->default_calendar_view = $params['default_calendar_view'];
330
- if( isset( $params['calendar_css_selector'] ) ) $this->calendar_css_selector = $params['calendar_css_selector'];
331
- if( isset( $params['week_start_day'] ) ) $this->week_start_day = $params['week_start_day'];
332
- if( isset( $params['agenda_events_per_page'] ) ) $this->agenda_events_per_page = intval( $params['agenda_events_per_page'] );
333
- if( isset( $params['cron_freq'] ) ) $this->cron_freq = $params['cron_freq'];
334
- if( isset( $params['input_date_format'] ) ) $this->input_date_format = $params['input_date_format'];
335
- if( isset( $params['allow_events_posting_facebook'] ) ) $this->allow_events_posting_facebook = $params['allow_events_posting_facebook'];
336
- if( isset( $params['facebook_credentials'] ) ) $this->facebook_credentials = $params['facebook_credentials'];
337
- if( isset( $params['user_role_can_create_event'] ) ) $this->user_role_can_create_event = $params['user_role_can_create_event'];
338
- if( isset( $params['timezone'] ) ) $this->timezone = $params['timezone'];
339
- if( $this->agenda_events_per_page <= 0 ) $this->agenda_events_per_page = 1;
340
-
341
- // checkboxes
342
- $this->agenda_events_expanded = ( isset( $params['agenda_events_expanded'] ) ) ? true : false;
343
- $this->include_events_in_rss = ( isset( $params['include_events_in_rss'] ) ) ? true : false;
344
- $this->show_publish_button = ( isset( $params['show_publish_button'] ) ) ? true : false;
345
- $this->hide_maps_until_clicked = ( isset( $params['hide_maps_until_clicked'] ) ) ? true : false;
346
- $this->exclude_from_search = ( isset( $params['exclude_from_search'] ) ) ? true : false;
347
- $this->show_create_event_button = ( isset( $params['show_create_event_button'] ) ) ? true : false;
348
- $this->turn_off_subscription_buttons = ( isset( $params['turn_off_subscription_buttons'] ) ) ? true : false;
349
- $this->inject_categories = ( isset( $params['inject_categories'] ) ) ? true : false;
350
- $this->input_24h_time = ( isset( $params['input_24h_time'] ) ) ? true : false;
351
- $this->geo_region_biasing = ( isset( $params['geo_region_biasing'] ) ) ? true : false;
352
- $this->allow_statistics = ( isset( $params['allow_statistics'] ) ) ? true : false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
353
  }
354
-
355
- function update_notification( $value = false ) {
 
 
 
 
 
 
 
356
  $this->show_data_notification = $value;
357
  update_option( 'ai1ec_settings', $this );
358
  }
93
  * @var string
94
  **/
95
  var $cron_freq;
96
+
97
  /**
98
  * timezone class variable
99
  *
118
  * @var bool
119
  **/
120
  var $show_publish_button;
121
+
122
  /**
123
  * hide_maps_until_clicked class variable
124
  *
125
+ * When this setting is on, instead of showing the Google Map,
126
+ * show a dotted-line box containing the text "Click to view map",
127
  * and when clicked, this box is replaced by the Google Map.
128
  *
129
  * @var bool
130
  **/
131
  var $hide_maps_until_clicked;
132
+
133
  /**
134
  * agenda_events_expanded class variable
135
  *
179
  * @var string
180
  **/
181
  var $input_date_format;
182
+
183
  /**
184
  * input_24h_time class variable
185
  *
186
+ * Use 24h time in time pickers.
187
  *
188
  * @var bool
189
  **/
190
  var $input_24h_time;
191
 
192
+ /**
193
+ * settings_page class variable
194
+ *
195
+ * Stores a reference to the settings page added using the
196
+ * add_submenu_page function.
197
+ *
198
+ * @var object
199
+ */
200
+ var $settings_page;
201
+
202
  /**
203
+ * feeds_page class variable
204
  *
205
+ * Stores a reference to the calendar feeds page added using the
206
+ * add_submenu_page function.
207
  *
208
  * @var object
209
+ */
210
+ var $feeds_page;
211
+
212
  /**
213
  * geo_region_biasing class variable
214
  *
215
+ * If set to TRUE the ISO-3166 part of the configured
216
  * locale in WordPress is going to be used to bias the
217
  * geo autocomplete plugin towards a specific region.
218
  *
219
  * @var bool
220
  **/
221
  var $geo_region_biasing;
222
+
223
  /**
224
+ * Whether to display data collection notice on the admin side.
225
  *
226
  * @var bool
227
+ */
228
  var $show_data_notification;
229
+
230
+ /**
231
+ * allow_statistics class variable
232
+ *
233
+ * @var bool
234
+ **/
235
+ var $allow_statistics;
236
+
237
  /**
238
+ * disable_autocompletion class variable
239
  *
240
  * @var bool
241
  **/
242
+ var $disable_autocompletion;
243
 
244
  /**
245
  * __construct function
305
  'calendar_css_selector' => '',
306
  'week_start_day' => get_option( 'start_of_week' ),
307
  'agenda_events_per_page' => get_option( 'posts_per_page' ),
308
+ 'agenda_events_expanded' => FALSE,
309
+ 'include_events_in_rss' => FALSE,
310
+ 'allow_publish_to_facebook' => FALSE,
311
+ 'facebook_credentials' => NULL,
312
+ 'user_role_can_create_event' => NULL,
313
+ 'show_publish_button' => FALSE,
314
+ 'hide_maps_until_clicked' => FALSE,
315
+ 'exclude_from_search' => FALSE,
316
+ 'show_create_event_button' => FALSE,
317
+ 'turn_off_subscription_buttons' => FALSE,
318
+ 'inject_categories' => FALSE,
319
  'input_date_format' => 'def',
320
+ 'input_24h_time' => FALSE,
321
  'cron_freq' => 'daily',
322
  'timezone' => get_option( 'timezone_string' ),
323
+ 'geo_region_biasing' => FALSE,
324
+ 'show_data_notification' => TRUE,
325
+ 'allow_statistics' => TRUE,
326
+ 'disable_autocompletion' => FALSE,
327
  );
328
 
329
  foreach( $defaults as $key => $default ) {
333
  }
334
 
335
  /**
 
 
336
  * Updates field values with corresponding values found in $params
337
  * associative array.
338
  *
339
+ * @param string $settings_page Which settings page is being updated.
340
+ * @param array $params Assoc. array of new settings, e.g. from $_REQUEST.
341
  *
342
  * @return void
343
+ */
344
+ function update( $settings_page, $params ) {
345
+ switch ($settings_page) {
346
+ // ==================
347
+ // = Settings page. =
348
+ // ==================
349
+ case 'settings':
350
+ $field_names = array(
351
+ 'default_calendar_view',
352
+ 'calendar_css_selector',
353
+ 'week_start_day',
354
+ 'agenda_events_per_page',
355
+ 'input_date_format',
356
+ 'allow_events_posting_facebook',
357
+ 'facebook_credentials',
358
+ 'user_role_can_create_event',
359
+ 'timezone',
360
+ );
361
+ $checkboxes = array(
362
+ 'agenda_events_expanded',
363
+ 'include_events_in_rss',
364
+ 'show_publish_button',
365
+ 'hide_maps_until_clicked',
366
+ 'exclude_from_search',
367
+ 'show_create_event_button',
368
+ 'turn_off_subscription_buttons',
369
+ 'inject_categories',
370
+ 'input_24h_time',
371
+ 'geo_region_biasing',
372
+ 'allow_statistics',
373
+ 'disable_autocompletion'
374
+ );
375
+
376
+ // Assign parameters to settings.
377
+ foreach( $field_names as $field_name ) {
378
+ if( isset( $params[$field_name] ) ) {
379
+ $this->$field_name = $params[$field_name];
380
+ }
381
+ }
382
+ foreach( $checkboxes as $checkbox ) {
383
+ $this->$checkbox = isset( $params[$checkbox] ) ? TRUE : FALSE;
384
+ }
385
+
386
+ // Validate specific parameters.
387
+ $this->agenda_events_per_page = intval( $this->agenda_events_per_page );
388
+ if( $this->agenda_events_per_page <= 0 ) {
389
+ $this->agenda_events_per_page = 1;
390
+ }
391
+
392
+ // Update special parameters.
393
+ $this->update_page( 'calendar_page_id', $params );
394
+ break;
395
+
396
+ // ===============
397
+ // = Feeds page. =
398
+ // ===============
399
+ case 'feeds':
400
+ // Assign parameters to settings.
401
+ if( isset( $params['cron_freq'] ) ) {
402
+ $this->cron_freq = $params['cron_freq'];
403
+ }
404
+ break;
405
+ }
406
  }
407
+
408
+ /**
409
+ * Update setting of show_data_notification - whether to display data
410
+ * collection notice on the admin side.
411
+ *
412
+ * @param boolean $value The new setting for show_data_notification.
413
+ * @return void
414
+ */
415
+ function update_notification( $value = FALSE ) {
416
  $this->show_data_notification = $value;
417
  update_option( 'ai1ec_settings', $this );
418
  }
app/view/{admin_notices.php → admin/admin_notices.php} RENAMED
File without changes
app/view/admin/box_advanced_settings.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php do_action( 'ai1ec_advanced_settings_before' ); ?>
2
+
3
+ <label class="textinput" for="calendar_css_selector"><?php _e( 'Contain calendar in this DOM element:', AI1EC_PLUGIN_NAME ) ?></label>
4
+ <input name="calendar_css_selector" id="calendar_css_selector" type="text" size="20" value="<?php echo esc_attr( $calendar_css_selector ) ?>" />
5
+ <div class="description"><?php _e( 'Optional. Provide a <a href="http://api.jquery.com/category/selectors/" target="_blank">jQuery selector</a> that evaluates to a single DOM element. Replaces any existing markup found within target. If left empty, calendar is shown in normal page content container.', AI1EC_PLUGIN_NAME ) ?></div>
6
+
7
+ <?php do_action( 'ai1ec_advanced_settings_after' ); ?>
app/view/{box_event_contact.php → admin/box_event_contact.php} RENAMED
File without changes
app/view/{box_event_cost.php → admin/box_event_cost.php} RENAMED
File without changes
app/view/admin/box_event_location.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h4 class="ai1ec-section-title"><?php _e( 'Event location details', AI1EC_PLUGIN_NAME ); ?></h4>
2
+ <div id="ai1ec-inside-wrapper">
3
+ <table class="ai1ec-form ai1ec-location-form">
4
+ <tbody>
5
+ <tr>
6
+ <td class="ai1ec-first">
7
+ <label for="ai1ec_venue">
8
+ <?php _e( 'Venue name:', AI1EC_PLUGIN_NAME ); ?>
9
+ </label>
10
+ </td>
11
+ <td>
12
+ <input type="text" name="ai1ec_venue" id="ai1ec_venue" value="<?php echo $venue; ?>" />
13
+ </td>
14
+ </tr>
15
+ <tr>
16
+ <td>
17
+ <label for="ai1ec_address">
18
+ <?php _e( 'Address:', AI1EC_PLUGIN_NAME ); ?>
19
+ </label>
20
+ </td>
21
+ <td>
22
+ <input type="text" name="ai1ec_address" id="ai1ec_address" value="<?php echo $address; ?>" />
23
+ </td>
24
+ </tr>
25
+ <tr>
26
+ <td>
27
+ <label for="ai1ec_google_map">
28
+ <?php _e( 'Show Google Map:', AI1EC_PLUGIN_NAME ); ?>
29
+ </label>
30
+ </td>
31
+ <td>
32
+ <input type="checkbox" value="1" name="ai1ec_google_map" id="ai1ec_google_map" <?php echo $google_map; ?> />
33
+ </td>
34
+ </tr>
35
+ </tbody>
36
+ </table>
37
+ </div>
38
+ <div class="ai1ec_box_map <?php if( $show_map ) echo 'ai1ec_box_map_visible' ?>">
39
+ <div id="ai1ec_map_canvas"></div>
40
+ </div>
41
+ <input type="hidden" name="ai1ec_city" id="ai1ec_city" value="<?php echo $city; ?>" />
42
+ <input type="hidden" name="ai1ec_province" id="ai1ec_province" value="<?php echo $province; ?>" />
43
+ <input type="hidden" name="ai1ec_postal_code" id="ai1ec_postal_code" value="<?php echo $postal_code; ?>" />
44
+ <input type="hidden" name="ai1ec_country" id="ai1ec_country" value="<?php echo $country; ?>" />
app/view/{box_eventbrite.php → admin/box_eventbrite.php} RENAMED
File without changes
app/view/{box_ics_import_settings.php → admin/box_feeds.php} RENAMED
@@ -1,5 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
1
  <label class="textinput" for="cron_freq">
2
- <?php _e( 'Auto-refresh', AI1EC_PLUGIN_NAME ) ?>:
3
  </label>
4
  <?php echo $cron_freq ?>
5
  <br class="clear" />
@@ -24,3 +35,5 @@
24
 
25
  <?php echo $feed_rows; ?>
26
  <br class="clear" />
 
 
1
+ <p>
2
+ <?php _e(
3
+ 'Configure which other calendars your own calendar subscribes to.
4
+ You can add any calendar that provides an iCalendar (.ics) feed.
5
+ Enter the feed URL(s) below and the events from those feeds will be
6
+ imported periodically.',
7
+ AI1EC_PLUGIN_NAME ); ?>
8
+ </p>
9
+
10
+ <?php do_action( 'ai1ec_feeds_before' ); ?>
11
+
12
  <label class="textinput" for="cron_freq">
13
+ <?php _e( 'Check for new events', AI1EC_PLUGIN_NAME ) ?>:
14
  </label>
15
  <?php echo $cron_freq ?>
16
  <br class="clear" />
35
 
36
  <?php echo $feed_rows; ?>
37
  <br class="clear" />
38
+
39
+ <?php do_action( 'ai1ec_feeds_after' ); ?>
app/view/{box_general_settings.php → admin/box_general_settings.php} RENAMED
@@ -1,3 +1,5 @@
 
 
1
  <h2><?php _e( 'Viewing Events', AI1EC_PLUGIN_NAME ) ?></h2>
2
 
3
  <label class="textinput" for="calendar_page_id"><?php _e( 'Calendar page:', AI1EC_PLUGIN_NAME ) ?></label>
@@ -14,10 +16,6 @@
14
  <?php endif; ?>
15
  <br class="clear" />
16
 
17
- <label class="textinput" for="calendar_css_selector"><?php _e( 'Contain calendar in this DOM element:', AI1EC_PLUGIN_NAME ) ?></label>
18
- <input name="calendar_css_selector" id="calendar_css_selector" type="text" size="20" value="<?php echo esc_attr( $calendar_css_selector ) ?>" />
19
- <div class="description"><?php _e( 'Optional. Provide a <a href="http://api.jquery.com/category/selectors/" target="_blank">jQuery selector</a> that evaluates to a single DOM element. Replaces any existing markup found within target. If left empty, calendar is shown in normal page content container.', AI1EC_PLUGIN_NAME ) ?></div>
20
-
21
  <label class="textinput" for="week_start_day"><?php _e( 'Week starts on', AI1EC_PLUGIN_NAME ) ?></label>
22
  <?php echo $week_start_day ?>
23
  <br class="clear" />
@@ -56,12 +54,6 @@
56
  </label>
57
  <br class="clear" />
58
 
59
- <label for="geo_region_biasing">
60
- <input class="checkbox" name="geo_region_biasing" id="geo_region_biasing" type="checkbox" value="1" <?php echo $geo_region_biasing ?> />
61
- <?php _e( 'Use the configured <strong>region</strong> (WordPress locale) to bias the address autocomplete function', AI1EC_PLUGIN_NAME ) ?>
62
- </label>
63
- <br class="clear" />
64
-
65
  <label for="inject_categories">
66
  <input class="checkbox" name="inject_categories" id="inject_categories" type="checkbox" value="1" <?php echo $inject_categories ?> />
67
  <?php _e( 'Include <strong>event categories</strong> in post category lists', AI1EC_PLUGIN_NAME ) ?>
@@ -74,10 +66,22 @@
74
  <?php echo $input_date_format ?>
75
  <br class="clear" />
76
 
77
- <label for="input_24h_time">
78
- <input class="checkbox" name="input_24h_time" id="input_24h_time" type="checkbox" value="1" <?php echo $input_24h_time ?> />
79
- <?php _e( 'Use <strong>24h time</strong> in time pickers', AI1EC_PLUGIN_NAME ) ?>
80
- </label>
 
 
 
 
 
 
 
 
 
 
 
 
81
  <br class="clear" />
82
 
83
  <label for="show_publish_button">
@@ -86,10 +90,12 @@
86
  </label>
87
  <br class="clear" />
88
 
89
- <h2><?php _e( 'Sharing data', AI1EC_PLUGIN_NAME ) ?></h2>
90
 
91
- <label for="allow_statistics">
92
- <input class="checkbox" name="allow_statistics" id="allow_statistics" type="checkbox" value="1" <?php echo $allow_statistics ?> />
93
- <?php _e( 'Allow The Seed to collect statistics', AI1EC_PLUGIN_NAME ) ?>
94
- </label>
95
  <br class="clear" />
 
 
1
+ <?php do_action( 'ai1ec_general_settings_before' ); ?>
2
+
3
  <h2><?php _e( 'Viewing Events', AI1EC_PLUGIN_NAME ) ?></h2>
4
 
5
  <label class="textinput" for="calendar_page_id"><?php _e( 'Calendar page:', AI1EC_PLUGIN_NAME ) ?></label>
16
  <?php endif; ?>
17
  <br class="clear" />
18
 
 
 
 
 
19
  <label class="textinput" for="week_start_day"><?php _e( 'Week starts on', AI1EC_PLUGIN_NAME ) ?></label>
20
  <?php echo $week_start_day ?>
21
  <br class="clear" />
54
  </label>
55
  <br class="clear" />
56
 
 
 
 
 
 
 
57
  <label for="inject_categories">
58
  <input class="checkbox" name="inject_categories" id="inject_categories" type="checkbox" value="1" <?php echo $inject_categories ?> />
59
  <?php _e( 'Include <strong>event categories</strong> in post category lists', AI1EC_PLUGIN_NAME ) ?>
66
  <?php echo $input_date_format ?>
67
  <br class="clear" />
68
 
69
+ <label for="input_24h_time">
70
+ <input class="checkbox" name="input_24h_time" id="input_24h_time" type="checkbox" value="1" <?php echo $input_24h_time ?> />
71
+ <?php _e( 'Use <strong>24h time</strong> in time pickers', AI1EC_PLUGIN_NAME ) ?>
72
+ </label>
73
+ <br class="clear" />
74
+
75
+ <label for="disable_autocompletion">
76
+ <input class="checkbox" name="disable_autocompletion" id="disable_autocompletion" type="checkbox" value="1" <?php echo $disable_autocompletion ?> />
77
+ <?php _e( '<strong>Disable address autocomplete</strong> function', AI1EC_PLUGIN_NAME ) ?>
78
+ </label>
79
+ <br class="clear" />
80
+
81
+ <label for="geo_region_biasing">
82
+ <input class="checkbox" name="geo_region_biasing" id="geo_region_biasing" type="checkbox" value="1" <?php echo $geo_region_biasing ?> />
83
+ <?php _e( 'Use the configured <strong>region</strong> (WordPress locale) to bias the address autocomplete function', AI1EC_PLUGIN_NAME ) ?>
84
+ </label>
85
  <br class="clear" />
86
 
87
  <label for="show_publish_button">
90
  </label>
91
  <br class="clear" />
92
 
93
+ <h2><?php _e( 'Sharing Data', AI1EC_PLUGIN_NAME ) ?></h2>
94
 
95
+ <label for="allow_statistics">
96
+ <input class="checkbox" name="allow_statistics" id="allow_statistics" type="checkbox" value="1" <?php echo $allow_statistics ?> />
97
+ <?php _e( 'Allow The Seed to collect calendar statistics', AI1EC_PLUGIN_NAME ) ?>
98
+ </label>
99
  <br class="clear" />
100
+
101
+ <?php do_action( 'ai1ec_general_settings_after' ); ?>
app/view/{box_publish_button.php → admin/box_publish_button.php} RENAMED
File without changes
app/view/{box_repeat.php → admin/box_repeat.php} RENAMED
File without changes
app/view/admin/box_the_seed_studio.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="ai1ec-plugin-branding thenly">
2
+
3
+ <h2 class="thenly-logo"><a href="http://then.ly/" target="_blank"><img src="http://then.ly/img/logo.png" alt="<?php esc_attr_e( 'then.ly', AI1EC_PLUGIN_NAME ) ?>" /></a></h2>
4
+
5
+ <div class="thenly-intro">
6
+ <h2>
7
+ <?php _e( 'Then.ly’s All-in-One Calendar is a revolutionary new way to find and share events.', AI1EC_PLUGIN_NAME ); ?>
8
+ </h2>
9
+ </div>
10
+
11
+ <div class="ai1ec-follow-fan">
12
+ <div class="ai1ec-facebook-like-top">
13
+ <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
14
+ <fb:like href="http://www.facebook.com/thenly.events" layout="button_count" show_faces="true" width="110" font="lucida grande"></fb:like>
15
+ </div>
16
+ <a href="http://twitter.com/then_ly" class="twitter-follow-button"><?php _e( 'Follow @then_ly', AI1EC_PLUGIN_NAME ) ?></a>
17
+ <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
18
+ </div>
19
+
20
+ <p></p>
21
+ <h2>
22
+ <?php _e( 'Upgrade to the free Premium version and get access to exclusive features such as:', AI1EC_PLUGIN_NAME ) ?>
23
+ </h2>
24
+ <p></p>
25
+ <h4 class="row-fluid">
26
+ <div class="span1">&nbsp;</div>
27
+ <div class="span4">
28
+ <ul>
29
+ <li class="icon-leaf span6"><strong><?php _e( 'Calendar Themes', AI1EC_PLUGIN_NAME ) ?></strong></li>
30
+ <li class="icon-calendar span6"><strong><?php _e( 'Duplicate Events', AI1EC_PLUGIN_NAME ) ?></strong></li>
31
+ </ul>
32
+ </div>
33
+ <div class="span4">
34
+ <ul>
35
+ <li class="icon-map-marker span6"><strong><?php _e( 'Location by Latitude/Longitude', AI1EC_PLUGIN_NAME ) ?></strong></li>
36
+ <li class="icon-star span6"><strong><?php _e( '... and more!', AI1EC_PLUGIN_NAME ) ?></strong></li>
37
+ </ul>
38
+ </div>
39
+ </h4>
40
+ <p></p>
41
+ <p class="ai1ec-get-support">
42
+ <a class="btn btn-large btn-primary" href="<?php echo admin_url( 'edit.php?post_type=' . AI1EC_POST_TYPE . '&amp;page=' . AI1EC_PLUGIN_NAME . '-upgrade' ) ?>">
43
+ <i class="icon-download-alt"></i> <?php _e( 'Upgrade to Premium for Free', AI1EC_PLUGIN_NAME ) ?>
44
+ </a>
45
+ </p>
46
+ <hr />
47
+ <h4>
48
+ <?php _e( 'Then.ly is dedicated to creating the best calendar software in the world.', AI1EC_PLUGIN_NAME ) ?>
49
+ </h4>
50
+ <p></p>
51
+ <p>
52
+ <?php _e( 'Please let us know if anything is not working the way you expect. While many problems are caused by conflicts with other plugins, most problems can be solved quickly. Visit our <a href="http://help.then.ly/" target="_blank">Help Desk</a> to report bugs, request features, or learn how to get the most out of this plugin.', AI1EC_PLUGIN_NAME ) ?>
53
+ </p>
54
+ <div class="ai1ec-get-support">
55
+ <a class="btn btn-large btn-primary" href="http://help.then.ly/" target="_blank">
56
+ <i class="icon-info-sign"></i> <?php _e( 'Get Support', AI1EC_PLUGIN_NAME ) ?>
57
+ </a>
58
+ </div>
59
+ </div>
60
+ <br class="clear" />
app/view/{box_time_and_date.php → admin/box_time_and_date.php} RENAMED
File without changes
app/view/admin/calendar_tasks.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="thenly">
2
+ <div class="hero-unit">
3
+ <h1><?php _e( 'Welcome', AI1EC_PLUGIN_NAME ); ?></h1>
4
+ <p><?php _e( 'to the All-in-One Calendar by <a href="http://then.ly/" target="_blank">Then.ly</a>', AI1EC_PLUGIN_NAME ); ?></p>
5
+ </div>
6
+
7
+ <div class="clearfix">
8
+ <div class="row-fluid">
9
+ <?php if( $add_allowed ): ?>
10
+ <div class="span6">
11
+ <p>
12
+ <a class="btn btn-primary btn-large" href="<?php echo esc_attr( $add_url ); ?>">
13
+ <i class="icon-plus"></i>&nbsp;&nbsp;<?php _e( 'Post Your Event', AI1EC_PLUGIN_NAME ); ?>
14
+ </a>
15
+ </p>
16
+ <strong><?php _e( 'Add a new event to the calendar.', AI1EC_PLUGIN_NAME ); ?></strong>
17
+ </div>
18
+ <?php endif; ?>
19
+
20
+ <?php if( $edit_allowed ): ?>
21
+ <div class="span6">
22
+ <p>
23
+ <a class="btn btn-primary btn-large" href="<?php echo esc_attr( $edit_url ); ?>">
24
+ <i class="icon-pencil"></i>&nbsp;&nbsp;<?php _e( 'Manage Events', AI1EC_PLUGIN_NAME ); ?>
25
+ </a>
26
+ </p>
27
+ <strong><?php _e( 'View and edit all your events.', AI1EC_PLUGIN_NAME ); ?></strong>
28
+ </div>
29
+ <?php endif; ?>
30
+ </div>
31
+
32
+ <hr />
33
+
34
+ <div class="row-fluid">
35
+ <?php if( $categories_allowed ): ?>
36
+ <div class="span6">
37
+ <p>
38
+ <a class="btn" href="<?php echo esc_attr( $categories_url ); ?>">
39
+ <i class="icon-tags icon-large"></i> <?php _e( 'Manage Event Categories', AI1EC_PLUGIN_NAME ); ?>
40
+ </a>
41
+ </p>
42
+ <p><strong><?php _e( 'Organize and color-code your events.', AI1EC_PLUGIN_NAME ); ?></strong></p>
43
+ </div>
44
+ <?php endif; ?>
45
+
46
+ <?php if( $themes_allowed ): ?>
47
+ <div class="span6">
48
+ <p>
49
+ <a class="btn" href="<?php echo esc_attr( $themes_url ); ?>">
50
+ <i class="icon-leaf icon-large"></i> <?php _e( 'Choose Your Theme', AI1EC_PLUGIN_NAME ); ?>
51
+ </a>
52
+ </p>
53
+ <p><strong><?php _e( 'Change the look and feel.', AI1EC_PLUGIN_NAME ); ?></strong></p>
54
+ </div>
55
+ <?php endif; ?>
56
+ </div>
57
+
58
+ <div class="row-fluid">
59
+ <?php if( $feeds_allowed ): ?>
60
+ <div class="span6">
61
+ <p>
62
+ <a class="btn" href="<?php echo esc_attr( $feeds_url ); ?>">
63
+ <i class="icon-refresh icon-large"></i> <?php _e( 'Manage Calendar Feeds', AI1EC_PLUGIN_NAME ); ?>
64
+ </a>
65
+ </p>
66
+ <p><strong><?php _e( 'Subscribe to other calendars.', AI1EC_PLUGIN_NAME ); ?></strong></p>
67
+ </div>
68
+ <?php endif; ?>
69
+
70
+ <?php if( $settings_allowed ): ?>
71
+ <div class="span6">
72
+ <p>
73
+ <a class="btn" href="<?php echo esc_attr( $settings_url ); ?>">
74
+ <i class="icon-cog icon-large"></i> <?php _e( 'Edit Calendar Settings', AI1EC_PLUGIN_NAME ); ?>
75
+ </a>
76
+ </p>
77
+ <p><strong><?php _e( 'Make this calendar your own.', AI1EC_PLUGIN_NAME ); ?></strong></p>
78
+ </div>
79
+ <?php endif; ?>
80
+ </div>
81
+ </div>
82
+ </div>
app/view/{class-ai1ec-agenda-widget.php → admin/class-ai1ec-agenda-widget.php} RENAMED
@@ -5,11 +5,8 @@
5
  *
6
  * A widget that displays the next X upcoming events (similar to Agenda view).
7
  */
8
- class Ai1ec_Agenda_Widget extends WP_Widget
9
- {
10
  /**
11
- * _construct function
12
- *
13
  * Constructor for widget.
14
  */
15
  function __construct() {
@@ -17,7 +14,7 @@ class Ai1ec_Agenda_Widget extends WP_Widget
17
  'ai1ec_agenda_widget',
18
  __( 'Upcoming Events', AI1EC_PLUGIN_NAME ),
19
  array(
20
- 'description' => __( 'All-in-One Event Calendar: Lists upcoming events in Agenda view', AI1EC_PLUGIN_NAME ),
21
  'class' => 'ai1ec-agenda-widget',
22
  )
23
  );
@@ -88,7 +85,7 @@ class Ai1ec_Agenda_Widget extends WP_Widget
88
  }
89
  }
90
 
91
- $ai1ec_view_helper->display( 'agenda-widget-form.php', $fields );
92
  }
93
 
94
  /**
@@ -111,7 +108,7 @@ class Ai1ec_Agenda_Widget extends WP_Widget
111
  $instance['show_subscribe_buttons'] = $new_instance['show_subscribe_buttons'] ? true : false;
112
  $instance['show_calendar_button'] = $new_instance['show_calendar_button'] ? true : false;
113
  $instance['hide_on_calendar_page'] = $new_instance['hide_on_calendar_page'] ? true : false;
114
-
115
  // For limits, set the limit to False if no IDs were selected, or set the respective IDs to empty if "limit by" was unchecked
116
  $instance['limit_by_cat'] = false;
117
  $instance['event_cat_ids'] = array();
@@ -208,6 +205,6 @@ class Ai1ec_Agenda_Widget extends WP_Widget
208
  $args['calendar_url'] = $ai1ec_calendar_helper->get_calendar_url( null, $limit );
209
  $args['subscribe_url'] = AI1EC_EXPORT_URL . $subscribe_filter;
210
 
211
- $ai1ec_view_helper->display( 'agenda-widget.php', $args );
212
  }
213
  }
5
  *
6
  * A widget that displays the next X upcoming events (similar to Agenda view).
7
  */
8
+ class Ai1ec_Agenda_Widget extends WP_Widget {
 
9
  /**
 
 
10
  * Constructor for widget.
11
  */
12
  function __construct() {
14
  'ai1ec_agenda_widget',
15
  __( 'Upcoming Events', AI1EC_PLUGIN_NAME ),
16
  array(
17
+ 'description' => __( 'All-in-One Calendar: Lists upcoming events in Agenda view', AI1EC_PLUGIN_NAME ),
18
  'class' => 'ai1ec-agenda-widget',
19
  )
20
  );
85
  }
86
  }
87
 
88
+ $ai1ec_view_helper->display_admin( 'agenda-widget-form.php', $fields );
89
  }
90
 
91
  /**
108
  $instance['show_subscribe_buttons'] = $new_instance['show_subscribe_buttons'] ? true : false;
109
  $instance['show_calendar_button'] = $new_instance['show_calendar_button'] ? true : false;
110
  $instance['hide_on_calendar_page'] = $new_instance['hide_on_calendar_page'] ? true : false;
111
+
112
  // For limits, set the limit to False if no IDs were selected, or set the respective IDs to empty if "limit by" was unchecked
113
  $instance['limit_by_cat'] = false;
114
  $instance['event_cat_ids'] = array();
205
  $args['calendar_url'] = $ai1ec_calendar_helper->get_calendar_url( null, $limit );
206
  $args['subscribe_url'] = AI1EC_EXPORT_URL . $subscribe_filter;
207
 
208
+ $ai1ec_view_helper->display_theme( 'agenda-widget.php', $args );
209
  }
210
  }
{css → app/view/admin/css}/add_new_event.css RENAMED
@@ -91,6 +91,7 @@
91
  .ai1ec_box_map {
92
  float: right;
93
  margin-bottom: 1em;
 
94
  /* These are needed for proper map initialization: */
95
  position: absolute;
96
  visibility: hidden;
@@ -102,7 +103,7 @@
102
  }
103
  #ai1ec_map_canvas {
104
  width: 264px;
105
- height: 15em;
106
  }
107
  /* Bottom publish button */
108
  .ai1ec_bottom_publish {
@@ -517,4 +518,8 @@ div.growlUI h1, div.growlUI h2 {
517
  .ai1ec-info-text {
518
  font-size: 10px;
519
  float: left;
 
 
 
 
520
  }
91
  .ai1ec_box_map {
92
  float: right;
93
  margin-bottom: 1em;
94
+ margin-top: -11em;
95
  /* These are needed for proper map initialization: */
96
  position: absolute;
97
  visibility: hidden;
103
  }
104
  #ai1ec_map_canvas {
105
  width: 264px;
106
+ height: 16em;
107
  }
108
  /* Bottom publish button */
109
  .ai1ec_bottom_publish {
518
  .ai1ec-info-text {
519
  font-size: 10px;
520
  float: left;
521
+ }
522
+ /* input coordinates */
523
+ #ai1ec-inside-wrapper{
524
+ width: 33em;
525
  }
app/view/admin/css/admin.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ #icon-edit.icon32-posts-ai1ec_event,
2
+ #icon-post.icon32-posts-ai1ec_event {
3
+ background: url(../img/logo.png) no-repeat center center;
4
+ }
app/view/admin/css/bootstrap.min.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ @import url("http://fonts.googleapis.com/css?family=Droid+Sans:400,700");/*!
2
+ * Bootstrap v2.0.2
3
+ *
4
+ * Copyright 2012 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
+ */@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot');src:url('../font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),url('../font/fontawesome-webfont.woff') format('woff'),url('../font/fontawesome-webfont.ttf') format('truetype'),url('../font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),url('../font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:inherit;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat}li[class^="icon-"],li[class*=" icon-"]{display:block}[class^="icon-"]:before,[class*=" icon-"]:before{font-family:FontAwesome;font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit}a [class^="icon-"],a [class*=" icon-"]{display:inline-block;text-decoration:inherit}.icon-large:before{vertical-align:top;font-size:1.3333333333333333em}.btn [class^="icon-"],.btn [class*=" icon-"]{line-height:.9em}li [class^="icon-"],li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li .icon-large[class^="icon-"],li .icon-large[class*=" icon-"]{width:1.875em}li[class^="icon-"],li[class*=" icon-"]{margin-left:0;list-style-type:none}li[class^="icon-"]:before,li[class*=" icon-"]:before{text-indent:-2em;text-align:center}li[class^="icon-"].icon-large:before,li[class*=" icon-"].icon-large:before{text-indent:-1.3333333333333333em}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.thenly article,.thenly aside,.thenly details,.thenly figcaption,.thenly figure,.thenly footer,.thenly header,.thenly hgroup,.thenly nav,.thenly section{display:block}.thenly audio,.thenly canvas,.thenly video{display:inline-block;*display:inline;*zoom:1}.thenly audio:not([controls]){display:none}.thenly html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.thenly a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.thenly a:hover,.thenly a:active{outline:0}.thenly sub,.thenly sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.thenly sup{top:-0.5em}.thenly sub{bottom:-0.25em}.thenly img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle}.thenly button,.thenly input,.thenly select,.thenly textarea{margin:0;font-size:100%;vertical-align:middle}.thenly button,.thenly input{*overflow:visible;line-height:normal}.thenly button::-moz-focus-inner,.thenly input::-moz-focus-inner{padding:0;border:0}.thenly button,.thenly input[type="button"],.thenly input[type="reset"],.thenly input[type="submit"]{cursor:pointer;-webkit-appearance:button}.thenly input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.thenly input[type="search"]::-webkit-search-decoration,.thenly input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}.thenly textarea{overflow:auto;vertical-align:top}.thenly .clearfix{*zoom:1}.thenly .clearfix:before,.thenly .clearfix:after{display:table;content:""}.thenly .clearfix:after{clear:both}.thenly .hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.thenly .input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.thenly .row{margin-left:-20px;*zoom:1}.thenly .row:before,.thenly .row:after{display:table;content:""}.thenly .row:after{clear:both}.thenly [class*="span"]{float:left;margin-left:20px}.thenly .container,.thenly .navbar-fixed-top .container,.thenly .navbar-fixed-bottom .container{width:940px}.thenly .span12{width:940px}.thenly .span11{width:860px}.thenly .span10{width:780px}.thenly .span9{width:700px}.thenly .span8{width:620px}.thenly .span7{width:540px}.thenly .span6{width:460px}.thenly .span5{width:380px}.thenly .span4{width:300px}.thenly .span3{width:220px}.thenly .span2{width:140px}.thenly .span1{width:60px}.thenly .offset12{margin-left:980px}.thenly .offset11{margin-left:900px}.thenly .offset10{margin-left:820px}.thenly .offset9{margin-left:740px}.thenly .offset8{margin-left:660px}.thenly .offset7{margin-left:580px}.thenly .offset6{margin-left:500px}.thenly .offset5{margin-left:420px}.thenly .offset4{margin-left:340px}.thenly .offset3{margin-left:260px}.thenly .offset2{margin-left:180px}.thenly .offset1{margin-left:100px}.thenly .row-fluid{width:100%;*zoom:1}.thenly .row-fluid:before,.thenly .row-fluid:after{display:table;content:""}.thenly .row-fluid:after{clear:both}.thenly .row-fluid>[class*="span"]{float:left;margin-left:2.127659574%}.thenly .row-fluid>[class*="span"]:first-child{margin-left:0}.thenly .row-fluid>.span12{width:99.99999998999999%}.thenly .row-fluid>.span11{width:91.489361693%}.thenly .row-fluid>.span10{width:82.97872339599999%}.thenly .row-fluid>.span9{width:74.468085099%}.thenly .row-fluid>.span8{width:65.95744680199999%}.thenly .row-fluid>.span7{width:57.446808505%}.thenly .row-fluid>.span6{width:48.93617020799999%}.thenly .row-fluid>.span5{width:40.425531911%}.thenly .row-fluid>.span4{width:31.914893614%}.thenly .row-fluid>.span3{width:23.404255317%}.thenly .row-fluid>.span2{width:14.89361702%}.thenly .row-fluid>.span1{width:6.382978723%}.thenly p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px}.thenly p small{font-size:11px;color:#999}.thenly .lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}.thenly h1,.thenly h2,.thenly h3,.thenly h4,.thenly h5,.thenly h6{margin:0;font-family:'Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:bold;color:#135486;text-rendering:optimizelegibility}.thenly h1 small,.thenly h2 small,.thenly h3 small,.thenly h4 small,.thenly h5 small,.thenly h6 small{font-weight:normal;color:#999}.thenly h1{font-size:30px;line-height:36px}.thenly h1 small{font-size:18px}.thenly h2{font-size:24px;line-height:36px}.thenly h2 small{font-size:18px}.thenly h3{line-height:27px;font-size:18px}.thenly h3 small{font-size:14px}.thenly h4,.thenly h5,.thenly h6{line-height:18px}.thenly h4{font-size:14px}.thenly h4 small{font-size:12px}.thenly h5{font-size:12px}.thenly h6{font-size:11px;color:#999;text-transform:uppercase}.thenly .page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.thenly .page-header h1{line-height:1}.thenly ul,.thenly ol{padding:0;margin:0 0 9px 25px}.thenly ul ul,.thenly ul ol,.thenly ol ol,.thenly ol ul{margin-bottom:0}.thenly ul{list-style:disc}.thenly ol{list-style:decimal}.thenly li{line-height:18px}.thenly ul.unstyled,.thenly ol.unstyled{margin-left:0;list-style:none}.thenly dl{margin-bottom:18px}.thenly dt,.thenly dd{line-height:18px}.thenly dt{font-weight:bold;line-height:17px}.thenly dd{margin-left:9px}.thenly .dl-horizontal dt{float:left;clear:left;width:120px;text-align:right}.thenly .dl-horizontal dd{margin-left:130px}.thenly hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}.thenly strong{font-weight:bold}.thenly em{font-style:italic}.thenly .muted{color:#999}.thenly abbr[title]{border-bottom:1px dotted #ddd;cursor:help}.thenly abbr.initialism{font-size:90%;text-transform:uppercase}.thenly blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}.thenly blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}.thenly blockquote small{display:block;line-height:18px;color:#999}.thenly blockquote small:before{content:'\2014 \00A0'}.thenly blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eee}.thenly blockquote.pull-right p,.thenly blockquote.pull-right small{text-align:right}.thenly q:before,.thenly q:after,.thenly blockquote:before,.thenly blockquote:after{content:""}.thenly address{display:block;margin-bottom:18px;line-height:18px;font-style:normal}.thenly small{font-size:100%}.thenly cite{font-style:normal}.thenly .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #ccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);cursor:pointer;*margin-left:.3em}.thenly .btn:hover,.thenly .btn:active,.thenly .btn.active,.thenly .btn.disabled,.thenly .btn[disabled]{background-color:#e6e6e6}.thenly .btn:active,.thenly .btn.active{background-color:#ccc \9}.thenly .btn:first-child{*margin-left:0}.thenly .btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.thenly .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.thenly .btn.active,.thenly .btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0}.thenly .btn.disabled,.thenly .btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.thenly .btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.thenly .btn-large [class^="icon-"]{margin-top:1px}.thenly .btn-small{padding:5px 9px;font-size:11px;line-height:16px}.thenly .btn-small [class^="icon-"]{margin-top:-1px}.thenly .btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.thenly .btn-primary,.thenly .btn-primary:hover,.thenly .btn-warning,.thenly .btn-warning:hover,.thenly .btn-danger,.thenly .btn-danger:hover,.thenly .btn-success,.thenly .btn-success:hover,.thenly .btn-info,.thenly .btn-info:hover,.thenly .btn-inverse,.thenly .btn-inverse:hover{text-shadow:0 -1px 0 rgba(0,0,0,0.25);color:#fff}.thenly .btn-primary.active,.thenly .btn-warning.active,.thenly .btn-danger.active,.thenly .btn-success.active,.thenly .btn-info.active,.thenly .btn-inverse.active{color:rgba(255,255,255,0.75)}.thenly .btn-primary{background-color:#58b03a;background-image:-moz-linear-gradient(top,#6bbf3f,#3c9933);background-image:-ms-linear-gradient(top,#6bbf3f,#3c9933);background-image:-webkit-gradient(linear,0 0,0 100%,from(#6bbf3f),to(#3c9933));background-image:-webkit-linear-gradient(top,#6bbf3f,#3c9933);background-image:-o-linear-gradient(top,#6bbf3f,#3c9933);background-image:linear-gradient(top,#6bbf3f,#3c9933);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#6bbf3f',endColorstr='#3c9933',GradientType=0);border-color:#3c9933 #3c9933 #255f20;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-primary:hover,.thenly .btn-primary:active,.thenly .btn-primary.active,.thenly .btn-primary.disabled,.thenly .btn-primary[disabled]{background-color:#3c9933}.thenly .btn-primary:active,.thenly .btn-primary.active{background-color:#2d7326 \9}.thenly .btn-warning{background-color:#e7a179;background-image:-moz-linear-gradient(top,#ecb393,#e08652);background-image:-ms-linear-gradient(top,#ecb393,#e08652);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ecb393),to(#e08652));background-image:-webkit-linear-gradient(top,#ecb393,#e08652);background-image:-o-linear-gradient(top,#ecb393,#e08652);background-image:linear-gradient(top,#ecb393,#e08652);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ecb393',endColorstr='#e08652',GradientType=0);border-color:#e08652 #e08652 #c35d23;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-warning:hover,.thenly .btn-warning:active,.thenly .btn-warning.active,.thenly .btn-warning.disabled,.thenly .btn-warning[disabled]{background-color:#e08652}.thenly .btn-warning:active,.thenly .btn-warning.active{background-color:#d86827 \9}.thenly .btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-danger:hover,.thenly .btn-danger:active,.thenly .btn-danger.active,.thenly .btn-danger.disabled,.thenly .btn-danger[disabled]{background-color:#bd362f}.thenly .btn-danger:active,.thenly .btn-danger.active{background-color:#942a25 \9}.thenly .btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-success:hover,.thenly .btn-success:active,.thenly .btn-success.active,.thenly .btn-success.disabled,.thenly .btn-success[disabled]{background-color:#51a351}.thenly .btn-success:active,.thenly .btn-success.active{background-color:#408140 \9}.thenly .btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-info:hover,.thenly .btn-info:active,.thenly .btn-info.active,.thenly .btn-info.disabled,.thenly .btn-info[disabled]{background-color:#2f96b4}.thenly .btn-info:active,.thenly .btn-info.active{background-color:#24748c \9}.thenly .btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top,#555,#222);background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-inverse:hover,.thenly .btn-inverse:active,.thenly .btn-inverse.active,.thenly .btn-inverse.disabled,.thenly .btn-inverse[disabled]{background-color:#222}.thenly .btn-inverse:active,.thenly .btn-inverse.active{background-color:#080808 \9}.thenly button.btn,.thenly input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}.thenly button.btn::-moz-focus-inner,.thenly input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}.thenly button.btn.btn-large,.thenly input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}.thenly button.btn.btn-small,.thenly input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}.thenly button.btn.btn-mini,.thenly input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.thenly .hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.thenly .hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px}.thenly .hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.thenly .pull-right{float:right}.thenly .pull-left{float:left}.thenly .hide{display:none}.thenly .show{display:block}.thenly .invisible{visibility:hidden}.thenly .hero-unit{padding:30px;margin-bottom:15px}.thenly .hero-unit h1{color:#135486}.thenly hr{margin:14px 0}
{css → app/view/admin/css}/colorpicker.css RENAMED
@@ -30,7 +30,7 @@ ul.colorpicker-list {
30
  -webkit-border-radius: 2px;
31
  }
32
  .select-more-colors {
33
- width: 73px !important;
34
  line-height: 22px;
35
  height: 22px !important;
36
  border-color: #fff !important;
@@ -38,10 +38,15 @@ ul.colorpicker-list {
38
  text-align: center;
39
  font-family: Tahoma,Verdana,Arial,Helvetica;
40
  font-size: 11px;
 
41
  }
42
  li.select-more-colors:hover {
 
43
  border-color: #0A246A !important;
44
  background: #B6BDD2 !important;
 
 
 
45
  }
46
  .color-1 {
47
  background: #60a !important;
@@ -103,6 +108,11 @@ li.select-more-colors:hover {
103
  .color-20 {
104
  background: #aaa !important;
105
  }
 
 
 
 
 
106
  .colorpicker {
107
  width: 356px;
108
  height: 176px;
30
  -webkit-border-radius: 2px;
31
  }
32
  .select-more-colors {
33
+ width: 100% !important;
34
  line-height: 22px;
35
  height: 22px !important;
36
  border-color: #fff !important;
38
  text-align: center;
39
  font-family: Tahoma,Verdana,Arial,Helvetica;
40
  font-size: 11px;
41
+ /*padding-left: 17px !important;*/
42
  }
43
  li.select-more-colors:hover {
44
+ width:103px !important;
45
  border-color: #0A246A !important;
46
  background: #B6BDD2 !important;
47
+ margin-right: 2px !important;
48
+
49
+
50
  }
51
  .color-1 {
52
  background: #60a !important;
108
  .color-20 {
109
  background: #aaa !important;
110
  }
111
+ .color-21 {
112
+ width: 13px;
113
+ height: 13px;
114
+ background: url( ../img/color-picker-default.png );
115
+ }
116
  .colorpicker {
117
  width: 356px;
118
  height: 176px;
app/view/admin/css/dashboard.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ div.ai1ec-calendar-tasks {
2
+ padding: 0.25em 0.5em;
3
+ position: relative;
4
+ }
5
+ #ai1ec-calendar-tasks a.ai1ec-big-button {
6
+ font-size: 23px !important;
7
+ min-width: 275px;
8
+ width: 55%;
9
+ }
10
+ .ai1ec-motif {
11
+ background: url(../img/logo.png) no-repeat 90% center;
12
+ bottom: 0;
13
+ left: 0;
14
+ opacity: 0.75;
15
+ filter: alpha(opacity=75);
16
+ right: 0;
17
+ margin: -10px 0;
18
+ position: absolute;
19
+ top: 0;
20
+ }
21
+
22
+ #dashboard-widgets > #postbox-container-1 {
23
+ width: 65% !important;
24
+ }
25
+
26
+ #dashboard-widgets > #postbox-container-2 {
27
+ width: 35% !important;
28
+ }
{css → app/view/admin/css}/datepicker.css RENAMED
File without changes
{css → app/view/admin/css}/jquery.autocomplete.css RENAMED
File without changes
app/view/admin/css/platform.css ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ * Styles specific to calendar platform mode.
4
+ */
5
+
6
+ #ai1ec-calendar-tasks {
7
+ background: #fff;
8
+ }
9
+ #ai1ec-calendar-tasks .btn {
10
+ -webkit-box-sizing: border-box;
11
+ -moz-box-sizing: border-box;
12
+ box-sizing: border-box;
13
+ width: 85%;
14
+ }
15
+ #wp-admin-bar-wp-logo > .ab-item .ab-icon {
16
+ background-image: url(../img/admin-bar-sprite.png);
17
+ }
18
+ /* Weird rendering of large icons in WP 3.2. */
19
+ .branch-3-2 .icon-large::before {
20
+ vertical-align: bottom;
21
+ }
22
+
23
+ #adminmenu #menu-posts-ai1ec_event.menu-top {
24
+ min-height: 47px;
25
+ }
26
+ #adminmenu #menu-posts-ai1ec_event a.menu-top,
27
+ #adminmenu #menu-posts-ai1ec_event .wp-submenu-head {
28
+ font-size: 16px;
29
+ line-height: 36px;
30
+ min-width: 0;
31
+ }
32
+ #menu-posts-ai1ec_event > div.wp-menu-image {
33
+ margin-top: 8px;
34
+ }
35
+ #adminmenu #menu-posts-ai1ec_event > div.wp-menu-arrow,
36
+ #adminmenu #menu-posts-ai1ec_event.wp-not-current-submenu > div.wp-menu-arrow {
37
+ height: 46px;
38
+ }
39
+ #adminmenu #menu-posts-ai1ec_event .wp-menu-arrow div,
40
+ #adminmenu #menu-posts-ai1ec_event.wp-not-current-submenu .wp-menu-arrow div {
41
+ top: 15px;
42
+ -webkit-transform: matrix(-0.6,1.5,0.6,1.5,0,0);
43
+ -moz-transform: matrix(-0.6,1.5,0.6,1.5,0,0);
44
+ -ms-transform: matrix(-0.6,1.5,0.6,1.5,0,0);
45
+ -o-transform: matrix(-0.6,1.5,0.6,1.5,0,0);
46
+ transform: matrix(-0.6,1.5,0.6,1.5,0,0);
47
+ }
48
+ .branch-3-2 #adminmenu #menu-posts-ai1ec_event .wp-menu-arrow div,
49
+ .branch-3-2 #adminmenu #menu-posts-ai1ec_event.wp-not-current-submenu .wp-menu-arrow div {
50
+ -webkit-background-size: 100% 100%;
51
+ -moz-background-size: 100% 100%;
52
+ -ms-background-size: 100% 100%;
53
+ -o-background-size: 100% 100%;
54
+ background-size: 100% 100%;
55
+ height: 47px;
56
+ -webkit-transform: none;
57
+ -moz-transform: none;
58
+ -ms-transform: none;
59
+ -o-transform: none;
60
+ transform: none;
61
+ }
{css → app/view/admin/css}/selector.css RENAMED
File without changes
app/view/admin/css/settings.css ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ai1ec-plugin-branding div.inside {
2
+ background: #fff;
3
+ margin: 0 !important;
4
+ padding: 6px 12px 8px;
5
+ }
6
+ .ai1ec-plugin-branding h2 {
7
+ font-size: 20px !important;
8
+ line-height: 28px !important;
9
+ }
10
+ .ai1ec-plugin-branding .thenly-logo {
11
+ text-align: center;
12
+ }
13
+ .ai1ec-plugin-branding .thenly-logo img {
14
+ max-width: 100%;
15
+ }
16
+ .ai1ec-plugin-branding .ai1ec-follow-fan {
17
+ padding: 10px 0 6px;
18
+ margin: 5px 0 15px;
19
+ border-top: 1px solid #ddd;
20
+ border-bottom: 1px solid #ddd;
21
+ }
22
+ .ai1ec-plugin-branding .ai1ec-facebook-like-top {
23
+ float: left;
24
+ }
25
+ .ai1ec-plugin-branding a.btn,
26
+ .ai1ec-plugin-branding a.btn:hover {
27
+ text-decoration: none;
28
+ }
29
+ .ai1ec-plugin-branding .ai1ec-get-support {
30
+ text-align: center;
31
+ }
32
+ .ai1ec-plugin-branding .ai1ec-get-support a.btn {
33
+ font-size: 20px;
34
+ }
35
+
36
+ .ai1ec_feed_h4 {
37
+ margin-bottom: 5px;
38
+ }
39
+ .column-1-ai1ec {
40
+ float: left;
41
+ width: 54%;
42
+ }
43
+ .column-2-ai1ec {
44
+ float: right;
45
+ width: 45%;
46
+ }
47
+ .column-3-ai1ec {
48
+ float: left;
49
+ width: 100%;
50
+ }
51
+
52
+ #ai1ec-general-settings {
53
+ line-height: 1.7em;
54
+ }
55
+ .column-1-ai1ec #ai1ec-general-settings div.inside label {
56
+ float: left;
57
+ clear: left;
58
+ margin: 0.25em 0;
59
+ }
60
+ .column-1-ai1ec #ai1ec-general-settings .checkbox {
61
+ float: left;
62
+ margin: 0.25em 0.5em 0 0;
63
+ }
64
+ .column-1-ai1ec #ai1ec-general-settings div.description {
65
+ clear: left;
66
+ font-size: 0.95em;
67
+ line-height: 1.5em;
68
+ margin-bottom: 1em;
69
+ }
70
+ .column-1-ai1ec #ai1ec-general-settings label.textinput {
71
+ width: 230px;
72
+ }
73
+ .column-1-ai1ec #ai1ec-general-settings h2 {
74
+ margin-bottom: 0;
75
+ margin-top: 10px;
76
+ }
77
+
78
+ /* ICS Feeds */
79
+ #ai1ec_feed_url,
80
+ .ai1ec-feed-url {
81
+ width: 100%;
82
+ }
83
+ .ai1ec-feed-category, .ai1ec-feed-tags {
84
+ float: left;
85
+ overflow: hidden;
86
+ line-height: 2em;
87
+ }
88
+ .ai1ec-feed-category strong, .ai1ec-feed-tags strong {
89
+ margin: 0 1em 0 0.2em;
90
+ }
91
+ #ai1ec_feed_category, #ai1ec_feed_tags {
92
+ width: 15em;
93
+ }
94
+ #ai1ec_feed_category {
95
+ margin-right: 0.5em;
96
+ }
97
+ .ai1ec-feed-container {
98
+ background: #eee;
99
+ border: 1px solid #ddd;
100
+ padding: 0.3em 0.5em;
101
+ border-radius: 0.5em;
102
+ -moz-border-radius: 0.5em;
103
+ -webkit-border-radius: 0.5em;
104
+ overflow: hidden;
105
+ position: relative;
106
+ margin: 1em 0 0;
107
+ }
108
+ .ai1ec-feed-container .ajax-loading {
109
+ clear: left;
110
+ display: block;
111
+ }
112
+ .ai1ec_feed_h4 {
113
+ margin: 0.5em 0;
114
+ }
115
+ #ai1ec_add_new_ics, .ai1ec_delete_ics {
116
+ clear: left;
117
+ }
118
+ #ai1ec_add_new_ics, .ai1ec_delete_ics, .ai1ec_update_ics, .ai1ec_flush_ics {
119
+ float: right;
120
+ }
121
+ #ai1ec_save_settings {
122
+ clear: left;
123
+ display: block;
124
+ }
125
+
126
+ .ai1ec-donate {
127
+ text-align: center;
128
+ }
129
+ #ai1ec-rss-news {
130
+ margin: 0;
131
+ padding: 0px 0px 0px 20px;
132
+ }
133
+ #ai1ec-rss-news > li {
134
+ list-style: disc;
135
+ }
136
+
137
+ p.submit {
138
+ padding-top: 0;
139
+ }
{css → app/view/admin/css}/widget.css RENAMED
File without changes
app/view/{donate_button.php → admin/donate_button.php} RENAMED
File without changes
app/view/{event_categories-color_picker.php → admin/event_categories-color_picker.php} RENAMED
File without changes
app/view/{feed_row.php → admin/feed_row.php} RENAMED
File without changes
app/view/admin/font/fontawesome-webfont.eot ADDED
Binary file
app/view/admin/font/fontawesome-webfont.svg ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG webfont generated by Font Squirrel.
6
+ Designer : Dave Gandy
7
+ Foundry : Fort Awesome
8
+ </metadata>
9
+ <defs>
10
+ <font id="FontAwesomeRegular" horiz-adv-x="900" >
11
+ <font-face units-per-em="1000" ascent="750" descent="-250" />
12
+ <missing-glyph horiz-adv-x="250" />
13
+ <glyph unicode="&#xd;" horiz-adv-x="250" />
14
+ <glyph horiz-adv-x="0" />
15
+ <glyph horiz-adv-x="0" />
16
+ <glyph unicode=" " horiz-adv-x="250" />
17
+ <glyph unicode="&#x09;" horiz-adv-x="250" />
18
+ <glyph unicode="&#xa0;" horiz-adv-x="250" />
19
+ <glyph unicode="&#x2000;" horiz-adv-x="375" />
20
+ <glyph unicode="&#x2001;" horiz-adv-x="751" />
21
+ <glyph unicode="&#x2002;" horiz-adv-x="375" />
22
+ <glyph unicode="&#x2003;" horiz-adv-x="751" />
23
+ <glyph unicode="&#x2004;" horiz-adv-x="250" />
24
+ <glyph unicode="&#x2005;" horiz-adv-x="187" />
25
+ <glyph unicode="&#x2006;" horiz-adv-x="125" />
26
+ <glyph unicode="&#x2007;" horiz-adv-x="125" />
27
+ <glyph unicode="&#x2008;" horiz-adv-x="93" />
28
+ <glyph unicode="&#x2009;" horiz-adv-x="150" />
29
+ <glyph unicode="&#x200a;" horiz-adv-x="41" />
30
+ <glyph unicode="&#x202f;" horiz-adv-x="150" />
31
+ <glyph unicode="&#x205f;" horiz-adv-x="187" />
32
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0v0v0v0v0z" />
33
+ <glyph unicode="&#xf000;" horiz-adv-x="750" d="M3 727q10 23 34 23h675q25 0 35 -23t-8 -41l-298 -298v-313h121q16 0 27 -11t11 -26q0 -16 -11 -27t-27 -11h-375q-15 0 -26 11t-11 27q0 15 11 26t26 11h122v313l-298 298q-18 18 -8 41z" />
34
+ <glyph unicode="&#xf001;" horiz-adv-x="688" d="M0 112q0 24 11 44.5t30 35.5t45 24t55 9q13 0 24.5 -2t22.5 -5v388l500 144v-525q0 -23 -11 -43.5t-30 -36t-45 -24.5t-55 -9t-54.5 9t-44.5 24.5t-30 36t-11 43.5t11 43.5t30 35.5t44.5 24t54.5 9q24 0 47 -6v248l-312 -90v-377q0 -23 -11 -43.5t-30 -35.5t-45 -24 t-55 -9t-55 9t-45 24t-30 35.5t-11 43.5z" />
35
+ <glyph unicode="&#xf002;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM194 437q0 25 9.5 46.5t25.5 37.5t37.5 25.5t46.5 9.5q10 0 16.5 -7t6.5 -17t-6.5 -16.5t-16.5 -6.5 q-30 0 -51 -21t-21 -51q0 -10 -6.5 -16.5t-16.5 -6.5t-17 6.5t-7 16.5z" />
36
+ <glyph unicode="&#xf003;" d="M0 56v587v32v19q0 23 16.5 39.5t39.5 16.5h19h750h19q23 0 39.5 -16.5t16.5 -39.5v-19v-30v-589q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v416q-15 -15 -28 -24q-29 -21 -61 -46t-64 -49q-19 -14 -36.5 -28t-32.5 -25q-3 -2 -6 -4.5 t-7 -5.5q-14 -11 -29.5 -22.5t-33.5 -22t-37.5 -17t-40.5 -6.5q-20 0 -39.5 6.5t-37 17t-33.5 22t-29 22.5q-4 3 -7 5.5t-6 4.5q-15 11 -32.5 25t-36.5 28q-32 24 -64 49t-61 46q-13 9 -28 24v-416zM75 643q0 -14 6 -30t16.5 -32t23 -30t26.5 -24q23 -17 49 -37l52 -38 q26 -20 50 -39t44 -34l22 -17q14 -11 28.5 -21t29 -17.5t27.5 -7.5h1h1q13 0 27.5 7.5t29 17.5t28.5 21l22 17q20 15 44 34t50 39l52 38q26 20 49 37q13 10 26 24t23.5 30t16.5 32t6 30v32h-750v-32z" />
37
+ <glyph unicode="&#xf004;" horiz-adv-x="846" d="M0 519q0 64 20 108t52.5 71.5t73.5 39.5t83 12q30 0 59 -10t54 -25t45.5 -32.5t35.5 -32.5q15 15 35.5 32.5t45.5 32.5t54 25t59 10q42 0 83 -12t73.5 -39.5t52.5 -71.5t20 -108q0 -44 -16.5 -83.5t-36 -69.5t-37 -48t-18.5 -19l-289 -288q-11 -11 -26 -11t-26 11 l-290 288q-1 1 -18 19t-36.5 48t-36 69.5t-16.5 83.5z" />
38
+ <glyph unicode="&#xf005;" horiz-adv-x="787" d="M0.5 465q4.5 13 25.5 16l238 35l106 215q10 20 23.5 20t22.5 -20l107 -215l237 -35q22 -3 26 -16t-11 -28l-172 -168l40 -236q4 -22 -7 -30t-30 3l-213 111l-212 -111q-20 -11 -31 -3t-7 30l41 236l-172 168q-16 15 -11.5 28z" />
39
+ <glyph unicode="&#xf006;" horiz-adv-x="787" d="M0.5 465q4.5 13 25.5 16l238 34l106 216q9 19 23 19t23 -19l107 -216l237 -34q22 -3 26 -16t-11 -28l-172 -168l40 -236q3 -16 -2 -24.5t-16 -8.5q-7 0 -19 5l-213 112l-212 -112q-12 -5 -19 -5q-11 0 -16 8.5t-3 24.5l41 236l-172 168q-16 15 -11.5 28zM136 421l100 -98 l29 -27l-7 -39l-24 -139l124 66l35 18l35 -18l124 -66l-23 139l-7 39l28 27l101 98l-139 20l-39 6l-18 35l-62 126l-62 -126l-17 -35l-39 -6z" />
40
+ <glyph unicode="&#xf007;" d="M0 34v7q11 19 19.5 40t17.5 42t19.5 40t25.5 34q7 7 15.5 13.5t19.5 10.5t23.5 5t25.5 3q37 6 77.5 12.5t78.5 12.5q4 17 7 34.5t8 33.5q-8 11 -16 21.5t-15.5 23t-13.5 28.5t-9 37q-2 11 -5 32.5t-6 44t-5.5 41t-2.5 22.5q0 25 10.5 56t33 58t58 45.5t84.5 18.5 t84.5 -18.5t58 -45.5t33 -58t10.5 -56q0 -4 -2.5 -22.5t-5.5 -41t-6 -44t-5 -32.5q-3 -21 -9 -37t-13.5 -28.5t-16 -23t-15.5 -21.5q5 -16 8 -33.5t7 -34.5q38 -6 78.5 -12.5t77.5 -12.5q13 -2 25.5 -3t23.5 -5t19.5 -10.5t15.5 -13.5q15 -15 25.5 -34t19.5 -40t17.5 -42 t19.5 -40v-7q-14 -8 -26.5 -18.5t-30.5 -15.5h-786q-18 5 -30.5 15.5t-26.5 18.5z" />
41
+ <glyph unicode="&#xf008;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM56 75q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5 v-75zM56 250q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM56 425q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM56 600 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM225 75q0 -8 5.5 -13.5t13.5 -5.5h412q8 0 13.5 5.5t5.5 13.5v250q0 8 -5.5 13.5t-13.5 5.5h-412q-8 0 -13.5 -5.5t-5.5 -13.5v-250zM225 425 q0 -8 5.5 -13.5t13.5 -5.5h412q8 0 13.5 5.5t5.5 13.5v250q0 8 -5.5 13.5t-13.5 5.5h-412q-8 0 -13.5 -5.5t-5.5 -13.5v-250zM731 75q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 250 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 425q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 600 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75z" />
42
+ <glyph unicode="&#xf009;" d="M0 38v262q0 16 11 27t27 11h337q16 0 27 -11t11 -27v-262q0 -16 -11 -27t-27 -11h-337q-16 0 -27 11t-11 27zM0 450v263q0 15 11 26t27 11h337q16 0 27 -11t11 -26v-263q0 -16 -11 -26.5t-27 -10.5h-337q-16 0 -27 10.5t-11 26.5zM488 38v262q0 16 10.5 27t26.5 11h338 q15 0 26 -11t11 -27v-262q0 -16 -11 -27t-26 -11h-338q-16 0 -26.5 11t-10.5 27zM488 450v263q0 15 10.5 26t26.5 11h338q15 0 26 -11t11 -26v-263q0 -16 -11 -26.5t-26 -10.5h-338q-16 0 -26.5 10.5t-10.5 26.5z" />
43
+ <glyph unicode="&#xf00a;" d="M0 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM0 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM0 580v133q0 15 11 26t27 11 h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110 q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 580v133q0 15 11 26t27 11h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM650 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175 q-16 0 -27 11t-11 27zM650 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM650 580v133q0 15 11 26t27 11h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27z" />
44
+ <glyph unicode="&#xf00b;" d="M0 38v132q0 16 11 26.5t27 10.5h145q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM0 320v110q0 16 11 26.5t27 10.5h145q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM0 580v133q0 15 11 26t27 11 h145q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM295 38v132q0 16 11 26.5t27 10.5h530q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27zM295 320v110q0 16 11 26.5t27 10.5h530q15 0 26 -10.5t11 -26.5v-110 q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27zM295 580v133q0 15 11 26t27 11h530q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27z" />
45
+ <glyph unicode="&#xf00c;" d="M0 312.5q0 16.5 11 27.5l85 85q11 11 27.5 11t27.5 -11l178 -178q11 -11 27.5 -11t27.5 11l364 364q11 11 27.5 11t27.5 -11l85 -85q11 -11 11 -27.5t-11 -27.5l-444 -444q-11 -11 -30.5 -19t-35.5 -8h-43q-17 0 -36.5 8t-30.5 19l-257 258q-11 11 -11 27.5z" />
46
+ <glyph unicode="&#xf00d;" horiz-adv-x="750" d="M0 94q0 19 14 33l248 249l-248 244q-14 14 -14 33t14 33l49 49q14 14 33 14t33 -14l246 -246l246 246q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-248 -249l248 -244q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-246 247l-247 -247 q-14 -14 -32.5 -14t-32.5 14l-49 49q-14 14 -14 33z" />
47
+ <glyph unicode="&#xf00e;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM188 422v31q0 7 4.5 11.5t10.5 4.5h78v78q0 6 4.5 10.5t11.5 4.5h31q7 0 11.5 -4.5t4.5 -10.5v-78h78 q16 0 16 -16v-31q0 -16 -16 -16h-78v-78q0 -16 -16 -16h-31q-16 0 -16 16v78h-78q-6 0 -10.5 4.5t-4.5 11.5z" />
48
+ <glyph unicode="&#xf010;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM188 422v31q0 7 4.5 11.5t10.5 4.5h219q16 0 16 -16v-31q0 -16 -16 -16h-219q-6 0 -10.5 4.5 t-4.5 11.5z" />
49
+ <glyph unicode="&#xf011;" horiz-adv-x="713" d="M0 356q0 89 41 166.5t115 128.5q6 3 14 3q7 -1 12 -8l42 -62q10 -16 -5 -26q-51 -35 -78.5 -88t-27.5 -114q0 -50 19 -94.5t52 -77.5t77.5 -52t94.5 -19q51 0 95.5 19t77.5 52t52 77.5t19 94.5q0 61 -28 114t-79 88q-6 3 -8 12q-1 6 3 14l43 62q5 6 12 7.5t14 -2.5 q73 -51 114.5 -128.5t41.5 -166.5q0 -74 -28 -138.5t-76.5 -113t-113.5 -76.5t-139 -28t-138.5 28t-113 76.5t-76.5 113t-28 138.5zM300 394v337q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-337q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19z" />
50
+ <glyph unicode="&#xf012;" d="M0 19v127q0 8 5.5 13.5t13.5 5.5h94q8 0 13 -5.5t5 -13.5v-127q0 -8 -5 -13.5t-13 -5.5h-94q-19 0 -19 19zM192 19v212q0 8 5.5 13.5t13.5 5.5h94q8 0 13 -5.5t5 -13.5v-212q0 -8 -5 -13.5t-13 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5zM384 19v330q0 8 5.5 13.5t13.5 5.5h94 q8 0 13.5 -5.5t5.5 -13.5v-330q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5zM577 19v486q0 8 5 13.5t13 5.5h94q8 0 13.5 -5.5t5.5 -13.5v-486q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13 5.5t-5 13.5zM769 19v712q0 19 19 19h93q19 0 19 -19v-712 q0 -19 -19 -19h-93q-19 0 -19 19z" />
51
+ <glyph unicode="&#xf013;" horiz-adv-x="748" d="M0 320v111q0 7 7 9q19 5 39.5 8t40.5 5q4 0 8 0.5t9 1.5q5 14 10.5 27.5t12.5 27.5q-12 17 -26.5 36.5t-30.5 37.5q-5 5 0 12q19 23 40 44t44 40q5 5 12 0q11 -11 22.5 -20t23.5 -17q7 -5 14 -10.5t14 -10.5q26 14 55 23q3 28 6 51.5t8 45.5q2 8 9 8h111q9 0 9 -8 q4 -19 6.5 -38t5.5 -39l3 -20q14 -5 27.5 -10t26.5 -13q7 5 13 9.5t12 9.5q13 10 26 19t25 20q6 6 12 -1l11 -11q5 -5 11 -10q15 -14 30 -29.5t29 -32.5q4 -6 0 -12q-13 -15 -26 -32.5t-30 -40.5q15 -29 24 -58q12 -3 24.5 -4.5t25.5 -3.5q11 -2 23.5 -3.5t23.5 -3.5 q7 -2 7 -9v-111q0 -7 -7 -9q-18 -5 -38 -7.5t-40 -4.5q-5 -1 -9.5 -1.5t-9.5 -1.5q-5 -14 -10.5 -27.5t-12.5 -27.5q12 -17 26.5 -36.5t30.5 -37.5q5 -5 0 -12q-38 -47 -84 -84q-5 -5 -12 0q-11 11 -22.5 20t-23.5 17q-7 5 -14 10.5t-14 10.5q-26 -14 -55 -23 q-2 -23 -5.5 -48t-9.5 -49q-2 -8 -9 -8h-111q-7 0 -9 8q-3 19 -5.5 38t-5.5 39l-3 20q-14 5 -27.5 10t-26.5 13q-6 -5 -12.5 -9.5t-12.5 -9.5q-26 -18 -51 -39q-6 -6 -12 1q-5 5 -11 10.5t-11 10.5q-15 14 -30 29.5t-29 32.5q-5 6 0 12q15 18 29 37t27 36q-15 29 -24 58 q-12 3 -24.5 4.5t-24.5 3.5t-24.5 3.5t-23.5 3.5q-7 2 -7 9zM261 375q0 -24 9 -44.5t24.5 -35.5t36 -24t43.5 -9t43.5 9t35.5 24t24 35.5t9 44.5q0 23 -9 43.5t-24 35.5t-35.5 24t-43.5 9t-43.5 -9t-36 -24t-24.5 -35.5t-9 -43.5z" />
52
+ <glyph unicode="&#xf014;" horiz-adv-x="648" d="M0 582q0 8 0.5 16t0.5 17q11 6 32.5 10t47 7t52.5 5t49 3q-2 16 -1 32t7 33q1 4 6 11.5t18.5 15t40 13t71.5 5.5t71.5 -5.5t40 -13t18 -15.5t6.5 -12q6 -17 7 -32.5t-1 -31.5q22 -1 49 -3t53 -5t47 -7t32 -10q1 -9 1 -17v-16v-16q0 -8 -1 -17q-10 -6 -30.5 -10t-45.5 -7 t-51 -5t-48 -3t-37 -1.5t-16 -0.5l-95 -1h-13h-28q-19 0 -54 1q-2 0 -16.5 0.5t-36.5 1.5t-48 3t-51 5t-45.5 7t-30.5 10q0 9 -0.5 17t-0.5 16zM67 484q41 -5 84.5 -7.5t75.5 -3.5q9 -1 23 -1h74h73q14 0 23 1q33 1 76.5 3.5t84.5 7.5q-5 -76 -8 -154.5t-7 -154.5 q-1 -19 -1.5 -42.5t-2 -45.5t-6 -40.5t-14.5 -28.5q-12 -11 -42 -14.5t-58 -3.5h-236q-29 0 -58.5 3.5t-41.5 14.5q-10 10 -14.5 28.5t-6 40.5t-2 45.5t-1.5 42.5q-4 76 -7.5 154.5t-7.5 154.5zM147 383q1 -15 1 -28t1 -22q0 -11 1 -19q2 -34 3.5 -68t3.5 -67q1 -8 1 -17 v-20v-12q0 -6 0.5 -14t1.5 -19q1 -8 9.5 -14t13.5 -6q5 -1 10 -1t8 -1h11q5 0 5 19v286q0 8 -5.5 13.5t-13.5 5.5l-33 2q-8 0 -13 -5t-5 -13zM255.5 657q0.5 -6 1.5 -15q9 1 20 1h47l67 -1q1 9 1.5 15t-0.5 11q-11 3 -29.5 4.5t-38.5 1.5t-38.5 -1.5t-29.5 -4.5 q-1 -5 -0.5 -11zM292 94q0 -8 5 -13.5t13 -5.5h28q8 0 13.5 5.5t5.5 13.5v285q0 8 -11 13t-14 5h-15q-3 0 -14 -5t-11 -13v-285zM432 94q0 -19 4 -19h11q3 1 13 1.5t15 0.5q5 1 8.5 6.5t4.5 13.5q0 11 0.5 19t0.5 14q0 7 1 12v20q0 9 1 17q2 33 3 66.5t3 67.5q0 9 1 20 q1 9 1.5 22t1.5 28q0 8 -5 13t-13 5l-33 -2q-8 0 -13 -5.5t-5 -13.5v-286z" />
53
+ <glyph unicode="&#xf015;" d="M1 384.5q3 11.5 13 19.5l412 338q11 8 24 8t24 -8l126 -104v58q0 19 19 19h112q19 0 19 -19v-180l136 -112q10 -8 13 -19.5t-1 -22.5q-10 -24 -36 -24h-75v-300q0 -16 -10.5 -27t-26.5 -11h-206v225h-188v-225h-206q-16 0 -27 11t-11 27v300h-75q-25 0 -35 24 q-4 11 -1 22.5z" />
54
+ <glyph unicode="&#xf016;" horiz-adv-x="600" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h219v-269q0 -23 16.5 -39.5t39.5 -16.5h269v-369q0 -23 -16.5 -39.5t-39.5 -16.5h-488q-23 0 -39.5 16.5t-16.5 39.5zM331 481v266h3l263 -263v-3h-266z" />
55
+ <glyph unicode="&#xf017;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM319 375v150q0 23 16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5v-127l90 -89q17 -17 17 -40t-17 -40q-8 -8 -18.5 -12t-21.5 -4t-21.5 4t-18.5 12l-106 106q-1 1 -1 2t-1 2 q-7 7 -10 14q-4 9 -4 22z" />
56
+ <glyph unicode="&#xf018;" d="M1 17l290 716q3 7 10.5 12t15.5 5h95l-4 -83h84l-4 83h95q8 0 15.5 -5t10.5 -12l290 -716q3 -7 -0.5 -12t-11.5 -5h-361l-13 250h-126l-13 -250h-361q-8 0 -11.5 5t-0.5 12zM394 389h112l-10 202h-92z" />
57
+ <glyph unicode="&#xf019;" d="M0 19v300q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-169h600v169q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-300q0 -19 -19 -19h-862q-19 0 -19 19zM169 461q3 8 19 8h150v244q0 15 10.5 26t26.5 11h150q16 0 27 -11t11 -26v-244h150q15 0 18 -8 t-8 -19l-246 -247q-11 -11 -27 -11t-27 11l-246 247q-11 11 -8 19z" />
58
+ <glyph unicode="&#xf01a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 83.5t-84 56t-102 20.5t-102 -20.5t-83.5 -56t-56 -83.5t-20.5 -102zM206 349q4 10 24 10h79v185q0 8 5.5 13.5t13.5 5.5h94q8 0 13.5 -5.5t5.5 -13.5v-185h79q20 0 24 -10t-10 -24l-136 -136q-9 -9 -23 -9q-13 0 -23 9l-136 136q-14 14 -10 24z " />
59
+ <glyph unicode="&#xf01b;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 83.5t-84 56t-102 20.5t-102 -20.5t-83.5 -56t-56 -83.5t-20.5 -102zM206 401q-4 10 10 24l136 136q10 9 23 9q12 0 23 -9l136 -136q14 -14 10 -24t-24 -10h-79v-185q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5v185h-79 q-20 0 -24 10z" />
60
+ <glyph unicode="&#xf01c;" d="M0 38v282q0 16 4.5 37t10.5 35l139 324q6 14 21.5 24t30.5 10h488q15 0 30.5 -10t21.5 -24l139 -324q6 -14 10.5 -35t4.5 -37v-282q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM116 339h189l56 -113h187l57 113h179q-1 2 -1 4.5t-1 4.5l-125 290h-414l-125 -291 q-1 -1 -1 -3.5t-1 -4.5z" />
61
+ <glyph unicode="&#xf01d;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM258 220v310q0 9 8 14q8 4 15 0l269 -156q8 -3 8 -13t-8 -13l-269 -156q-4 -2 -8 -2q-3 0 -7 2q-8 5 -8 14z" />
62
+ <glyph unicode="&#xf01e;" horiz-adv-x="747" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5q66 0 127.5 -23t112.5 -65l76 76q16 16 27 11.5t11 -27.5v-217q0 -15 -11 -26q-10 -10 -25 -10l-217 -1q-23 0 -27.5 11.5t11.5 27.5l75 75q-35 26 -75.5 41t-84.5 15q-54 0 -102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102 t20.5 -102t56 -83.5t83.5 -56t102 -20.5q49 0 93.5 17t79.5 47.5t58 72t29 90.5q1 6 7 12q7 5 14 4l75 -10q8 -1 12.5 -7t3.5 -14q-9 -69 -42 -128.5t-83 -103t-113.5 -68.5t-133.5 -25q-78 0 -146 29.5t-119 80.5t-80.5 119t-29.5 146z" />
63
+ <glyph unicode="&#xf021;" d="M3 160l70 206q4 13 18 20q15 6 28 2l206 -70q21 -7 21.5 -19t-19.5 -22l-95 -47q24 -36 57.5 -63t75.5 -41q51 -18 103 -13.5t97.5 26.5t80.5 61t53 90q2 8 8.5 11t14.5 1l71 -24q17 -7 12 -24q-25 -74 -75 -129t-114.5 -86.5t-139 -37.5t-147.5 19q-63 21 -113.5 62 t-84.5 98l-97 -47q-20 -11 -29.5 -2.5t-1.5 29.5zM95 495q25 73 75 128.5t114.5 87.5t138.5 38t148 -19q63 -22 113 -63t85 -98l97 48q20 10 29.5 1.5t1.5 -29.5l-70 -205q-4 -14 -18 -21q-15 -6 -28 -2l-206 70q-21 7 -21.5 19t19.5 22l95 47q-24 36 -58 63t-76 41 q-51 18 -103 13.5t-97 -26.5t-80 -61t-53 -90q-2 -8 -9 -11t-14 -1l-71 25q-8 2 -11 9t-1 14z" />
64
+ <glyph unicode="&#xf022;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v525h-750v-525zM150 169v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75 q-19 0 -19 19zM150 319v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19zM150 469v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19zM338 169v37q0 8 5 13.5t13 5.5h375 q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5zM338 319v37q0 8 5 13.5t13 5.5h375q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5zM338 469v37q0 8 5 13.5t13 5.5h375q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5z" />
65
+ <glyph unicode="&#xf023;" horiz-adv-x="750" d="M0 56v300q0 23 16.5 40t39.5 17h57v85q0 52 20.5 98t56 80t83.5 54t102 20t102 -20t84 -54t56.5 -80t20.5 -98v-85h56q23 0 39.5 -17t16.5 -40v-300q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5zM225 413h300v85q0 29 -12 54.5t-32 44.5t-47.5 30 t-58.5 11t-58.5 -11t-47.5 -30t-32 -44.5t-12 -54.5v-85z" />
66
+ <glyph unicode="&#xf024;" d="M0 675q0 31 22 53t53 22t53 -22t22 -53q0 -20 -10 -36.5t-27 -27.5v-592q0 -8 -5.5 -13.5t-13.5 -5.5h-38q-8 0 -13 5.5t-5 13.5v592q-17 11 -27.5 27.5t-10.5 36.5zM150 203v364q0 16 9.5 32t23.5 24q51 27 92 42t70 22q34 8 61 9q33 0 60.5 -5.5t52.5 -14.5t48.5 -21 t48.5 -25q31 -14 71 -16q34 -2 80 7.5t101 42.5q14 8 23 3t9 -21v-365q0 -15 -9 -31.5t-23 -24.5q-55 -33 -101 -42.5t-80 -7.5q-40 2 -71 16q-25 13 -48.5 25t-48.5 21t-52.5 14.5t-60.5 5.5q-27 -1 -61 -9q-29 -7 -70 -22t-92 -43q-14 -8 -23.5 -2t-9.5 22z" />
67
+ <glyph unicode="&#xf025;" d="M0 356q0 54 18.5 104.5t50 94t75 79.5t93.5 62t104.5 40t108.5 14t108.5 -14t104.5 -40t93.5 -62t75 -79.5t50 -94t18.5 -104.5q0 -87 -36 -165l-13 -28l-81 -12q-13 -49 -52.5 -81t-92.5 -32v-19q0 -8 -5.5 -13.5t-13.5 -5.5h-38q-8 0 -13 5.5t-5 13.5v337q0 8 5 13.5 t13 5.5h38q8 0 13.5 -5.5t5.5 -13.5v-18q42 0 75.5 -21t53.5 -54l19 2q15 43 15 91q0 58 -31 109.5t-80 89.5t-109 60.5t-118 22.5t-118 -22.5t-108.5 -60.5t-79.5 -89.5t-31 -109.5q0 -46 14 -91l19 -2q20 33 53.5 54t75.5 21v18q0 8 5.5 13.5t13.5 5.5h38q8 0 13 -5.5 t5 -13.5v-337q0 -8 -5 -13.5t-13 -5.5h-38q-8 0 -13.5 5.5t-5.5 13.5v19q-53 0 -92.5 32t-52.5 81l-81 12l-13 28q-36 78 -36 165z" />
68
+ <glyph unicode="&#xf026;" horiz-adv-x="425" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5z" />
69
+ <glyph unicode="&#xf027;" horiz-adv-x="600" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5zM482 205q-4 15 4 29q39 67 39 141q0 73 -39 141q-8 14 -4 29t18 23t28.5 4t22.5 -18q49 -87 49 -179t-49 -179 q-11 -19 -33 -19q-8 0 -18 5q-14 8 -18 23z" />
70
+ <glyph unicode="&#xf028;" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5zM482 205q-4 15 4 29q39 67 39 141q0 73 -39 141q-8 14 -4 29t18 23t28.5 4t22.5 -18q49 -87 49 -179t-49 -179 q-11 -19 -33 -19q-8 0 -18 5q-14 8 -18 23zM603 117q-3 15 5 29q67 105 67 229t-67 229q-8 14 -5 29t17 23t29 5t23 -17q38 -61 58 -129t20 -140t-20 -140t-58 -129q-5 -9 -14 -13.5t-18 -4.5q-11 0 -20 6q-14 8 -17 23zM723.5 30q-2.5 15 5.5 28q48 72 72 152t24 165 t-24 165t-72 152q-8 13 -5.5 28t16.5 24q13 8 28 5t24 -16q54 -81 81 -171.5t27 -186.5t-27 -186.5t-81 -171.5q-12 -17 -32 -17q-11 0 -20 6q-14 9 -16.5 24z" />
71
+ <glyph unicode="&#xf029;" horiz-adv-x="750" d="M0 0v341h341v-341h-341zM0 409v341h341v-341h-341zM68 68h205v205h-205v-205zM68 477h205v205h-205v-205zM136 136v69h69v-69h-69zM136 545v68h69v-68h-69zM409 0v341h204v-68h69v68h68v-205h-205v68h-68v-204h-68zM409 409v341h341v-341h-341zM477 477h205v205h-205 v-205zM545 0v68h68v-68h-68zM545 545v68h68v-68h-68zM682 0v68h68v-68h-68z" />
72
+ <glyph unicode="&#xf02a;" d="M0 0v750h75v-750h-75zM111 0v750h18v-750h-18zM174 0v750h57v-750h-57zM266 0v750h38v-750h-38zM349 0v750h37v-750h-37zM441 0v750h18v-750h-18zM495 0v750h75v-750h-75zM596 0v750h38v-750h-38zM688 0v750h19v-750h-19zM771 0v750h18v-750h-18zM825 0v750h75v-750h-75z " />
73
+ <glyph unicode="&#xf02b;" horiz-adv-x="750" d="M0 474v218q0 24 17 41t41 17h218q24 0 53 -12t46 -29l358 -358q17 -17 17 -41t-17 -41l-252 -252q-17 -17 -41 -17t-41 17l-358 358q-17 17 -29 46t-12 53zM94 600q0 -23 16.5 -39.5t39.5 -16.5t39.5 16.5t16.5 39.5t-16.5 39.5t-39.5 16.5t-39.5 -16.5t-16.5 -39.5z" />
74
+ <glyph unicode="&#xf02c;" horiz-adv-x="898" d="M0 475v217q0 24 17 41t41 17h217q24 0 53.5 -11.5t45.5 -29.5l321 -358q16 -17 16.5 -41t-16.5 -41l-252 -251q-17 -17 -41 -17.5t-41 17.5l-320 358q-16 18 -28.5 46.5t-12.5 52.5zM94 600q0 -23 16.5 -39.5t39.5 -16.5t39.5 16.5t16.5 39.5t-16.5 39.5t-39.5 16.5 t-39.5 -16.5t-16.5 -39.5zM379 749h83q24 0 53.5 -12t45.5 -29l321 -358q16 -18 16.5 -41.5t-16.5 -40.5l-252 -251q-17 -17 -41 -17.5t-41 17.5l-6 7l246 245q17 17 16.5 41t-16.5 41l-320 358q-15 16 -40.5 27t-48.5 13z" />
75
+ <glyph unicode="&#xf02d;" horiz-adv-x="835" d="M5 152q1 8 2 15.5t2 16.5q0 5 -2 10t-1 10q1 8 7.5 15.5t12.5 17.5q11 18 22 44t16 45q2 8 -0.5 15t-0.5 13q2 8 8 13.5t10 11.5q5 9 10.5 20.5t10.5 24t8 24.5t4 20t-1 16t0 14q3 8 10 13t12 12q5 6 10.5 17t11 24t9.5 25.5t5 22.5q1 6 -2 12t-1 13t9 14.5t13 15.5 q8 12 14 28.5t14.5 30t22.5 21t38 0.5l-1 -2q15 5 26 5h381q38 0 58 -28q20 -26 9 -63l-138 -442q-9 -31 -38 -52.5t-62 -21.5h-436q-5 0 -10 -1t-9 -6q-6 -10 0 -27q8 -21 29.5 -37t42.5 -16h462q14 0 28 10.5t18 23.5l151 482q2 8 2.5 14.5t-0.5 13.5q20 -7 30 -21 q20 -26 9 -63l-138 -442q-9 -32 -38 -53t-62 -21h-462q-20 0 -39 7t-36 19t-30 28.5t-20 35.5q-12 33 -1 62zM244 469q-5 -19 13 -19h300q8 0 15 5.5t9 13.5l12 37q2 8 -1.5 13.5t-11.5 5.5h-300q-8 0 -15.5 -5.5t-9.5 -13.5zM278 581q-2 -8 1.5 -13t11.5 -5h300q8 0 15 5 t10 13l11 38q2 8 -1.5 13.5t-11.5 5.5h-300q-8 0 -15 -5.5t-10 -13.5z" />
76
+ <glyph unicode="&#xf02e;" horiz-adv-x="600" d="M0 54v641q0 17 9 30.5t25 20.5q5 2 10 3t11 1h490q5 0 10.5 -1t10.5 -3q16 -7 25 -20.5t9 -30.5v-641q0 -17 -9 -30.5t-25 -19.5q-15 -7 -31.5 -3.5t-27.5 15.5l-207 207l-207 -207q-11 -12 -27.5 -15.5t-31.5 3.5q-16 7 -25 20t-9 30z" />
77
+ <glyph unicode="&#xf02f;" d="M0 19v169q0 23 9 43.5t24.5 35.5t36 24t43.5 9h675q23 0 43.5 -9t35.5 -24t24 -35.5t9 -43.5v-169q0 -19 -19 -19h-862q-19 0 -19 19zM131 94q0 -8 5.5 -13t13.5 -5h600q8 0 13.5 5t5.5 13v19q0 8 -5.5 13.5t-13.5 5.5h-600q-8 0 -13.5 -5.5t-5.5 -13.5v-19zM150 356v357 q0 15 11 26t27 11h318v-187q0 -24 16.5 -40.5t39.5 -16.5h188v-150h-600zM562 563v187l188 -187h-188z" />
78
+ <glyph unicode="&#xf030;" d="M0 56v525q0 23 16.5 40t39.5 17h179l28 61q9 21 32.5 36t46.5 15h216q23 0 46.5 -15t32.5 -36l28 -61h179q23 0 39.5 -17t16.5 -40v-525q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM216 319q0 -49 18.5 -91.5t50 -74.5t74.5 -50.5t91 -18.5 t91 18.5t74.5 50.5t50 74.5t18.5 91.5q0 48 -18.5 91t-50 74.5t-74.5 50t-91 18.5t-91 -18.5t-74.5 -50t-50 -74.5t-18.5 -91zM291 319q0 33 12.5 62t34 50.5t50.5 34t62 12.5t62 -12.5t50.5 -34t34 -50.5t12.5 -62t-12.5 -62t-34 -51t-50.5 -34.5t-62 -12.5t-62 12.5 t-50.5 34.5t-34 51t-12.5 62z" />
79
+ <glyph unicode="&#xf031;" horiz-adv-x="803" d="M0 0l1 39q5 2 14.5 4t23.5 4q45 9 53 16q8 5 24 33l114 300l135 354h36h26l5 -10l99 -235q16 -38 31 -74t29 -71t25.5 -63.5t20.5 -50.5q6 -14 14 -34t18 -46q11 -32 31 -73q12 -24 17 -28q10 -9 33 -12q12 -1 24 -4.5t26 -8.5q3 -18 3 -27v-5q0 -3 -1 -8q-21 0 -44 1 t-48 3q-26 2 -48.5 3t-42.5 1h-39q-16 0 -26 -1l-97 -5l-28 -1q0 10 0.5 19.5t1.5 18.5l63 13q28 7 33 12q6 4 6 13q0 7 -3 15l-23 56l-44 111l-218 1q-6 -14 -18 -47t-32 -87q-11 -31 -11 -41q0 -13 8 -21q7 -5 19.5 -8.5t30.5 -6.5q7 -2 41 -6v-29q0 -8 -1 -13 q-17 0 -59 2.5t-109 7.5l-24 -4q-21 -4 -40.5 -5.5t-39.5 -1.5h-10zM268 320q66 -1 105.5 -2t51.5 0l14 1q-9 25 -20 54.5t-25 63.5t-25 59.5t-19 42.5z" />
80
+ <glyph unicode="&#xf032;" horiz-adv-x="693" d="M0 0l1 46q13 3 33 6q19 3 34 6.5t27 8.5q4 7 6.5 13t3.5 12q3 16 4 39.5t1 54.5l-1 243q-1 19 -1.5 68t-2.5 130q-2 43 -6 53q-2 4 -6 5q-10 7 -34 8q-11 0 -56 6l-2 41l128 3l187 6h22q4 1 8 1h6q3 0 10.5 -0.5t19.5 -0.5h37q45 0 94 -13q9 -2 21 -6.5t26 -12.5 q31 -15 51 -37q22 -23 32 -51q5 -14 7.5 -28.5t2.5 -30.5q0 -35 -16 -63q-15 -28 -46 -51q-8 -6 -26.5 -15t-47.5 -23q87 -20 131 -71q45 -51 45 -115q0 -35 -14 -79q-11 -32 -35 -57q-32 -35 -69 -53q-38 -17 -100 -29q-34 -6 -97 -5l-97 2q-31 1 -67.5 -1t-79.5 -5 q-12 -1 -45.5 -2t-88.5 -3zM262 693q0 -6 0.5 -15.5t1.5 -21.5q1 -25 2 -58.5t0 -77.5v-48v-38q12 -2 25.5 -3t28.5 -1q86 0 130 32t44 110q0 55 -42 91q-41 37 -126 37q-26 0 -64 -7zM266 223l2 -132q0 -8 5 -21q36 -16 69 -16q64 0 107 20q40 19 60 55q9 18 14 40t5 49 q0 55 -21 88q-29 46 -69 61q-39 16 -122 16q-18 0 -30 -1.5t-20 -3.5v-70v-85z" />
81
+ <glyph unicode="&#xf033;" horiz-adv-x="515" d="M0 0l9 41q6 2 15.5 4.5t22.5 5.5q20 5 34.5 9.5t24.5 9.5q14 19 20 50l14 67l28 131l6 31q11 58 20 87t9 31l15 76l8 31l11 66l4 24v19q-22 11 -72 14q-7 0 -11.5 0.5t-8.5 0.5l10 51l159 -7q15 -1 24 -1h13q17 0 43.5 1t64.5 3q20 2 33.5 3t18.5 1q-1 -5 -1.5 -9.5 t-1.5 -9.5q-2 -5 -4 -11l-3 -14q-24 -8 -54 -15q-32 -8 -51 -15q-6 -16 -12 -43q-3 -12 -4.5 -22t-2.5 -18q-11 -49 -19.5 -86t-13.5 -63l-31 -152l-19 -77l-21 -115l-7 -22v-5q0 -3 1 -8q17 -4 31.5 -6.5t28.5 -4.5q2 0 10.5 -1t22.5 -3q-1 -9 -1.5 -16t-1.5 -13 q-1 -3 -2 -8t-3 -11q-4 0 -7 -0.5t-5 -0.5q-9 -1 -14 -1h-7h-5q-4 0 -9 2q-4 0 -22 2t-51 6l-99 1q-30 0 -88 -6q-19 -2 -31 -3t-18 -1z" />
82
+ <glyph unicode="&#xf034;" d="M0 562q7 18 17 54t22 90q4 16 6.5 26.5t4.5 15.5h28q2 -3 3 -5l2 -4q14 -28 20 -35q8 -2 63 -2q17 0 32.5 0.5t29.5 0.5l10 1l55 1l104 -1h141l27 5q5 4 13 26l2 6q1 3 3 8l21 1h5q3 0 8 -1q1 -19 0.5 -47.5t0.5 -67.5v-49v-28q0 -7 -0.5 -13.5t-1.5 -11.5 q-10 -4 -18 -5.5t-15 -3.5q-13 25 -26 63q-14 40 -18 45q-6 7 -13 10q-5 2 -30 2h-67h-15q-8 0 -17 -2q-3 -21 -3 -35l1 -74v-163l1 -175v-72q0 -35 5 -57q4 -2 10.5 -4t16.5 -4q2 0 10.5 -2t24.5 -6q13 -5 24 -9q2 -10 2 -16v-9v-5q0 -4 -1 -9h-17q-23 0 -43 1t-37 3 t-46.5 3t-72.5 1q-8 0 -28 -2t-53 -5q-14 -1 -22 -1.5t-12 -0.5q0 5 -0.5 8t-0.5 5l-1 12v5q9 15 39 24q46 13 66 24q2 5 3 12.5t2 15.5q2 33 3 86t0 125l-2 209q-1 44 -1 69.5t-2 35.5q0 4 -3 7q-2 3 -6 3q-8 2 -31 2h-62q-44 0 -58 -10q-20 -14 -59 -75q-11 -17 -17 -17 q-11 6 -17.5 11.5t-9.5 9.5zM675.5 112.5q2.5 6.5 15.5 6.5h59v512h-59q-13 0 -15.5 6.5t6.5 16.5l90 90q7 6 16 6q7 0 15 -6l90 -90q9 -10 6.5 -16.5t-16.5 -6.5h-58v-512h58q14 0 16.5 -6.5t-6.5 -15.5l-90 -91q-8 -6 -16 -6t-15 6l-90 91q-9 9 -6.5 15.5z" />
83
+ <glyph unicode="&#xf035;" horiz-adv-x="750" d="M0 114q0 9 6 15l91 90q9 10 15.5 7t6.5 -16v-59h512v59q0 13 6.5 16t16.5 -7l90 -90q6 -6 6 -15t-6 -15l-90 -91q-10 -9 -16.5 -6.5t-6.5 16.5v58h-512v-58q0 -14 -6.5 -16.5t-15.5 6.5l-91 91q-6 6 -6 15zM0 602q7 14 16.5 42.5t21.5 71.5q3 13 5.5 21t4.5 13h27 q4 -6 5 -7q13 -23 18 -28q1 0 17.5 -0.5t38.5 -0.5h44h36h60l9 1h53h99h203l26 3q6 5 12 22q1 2 2 4.5t3 6.5h19h14v-92v-39v-22q0 -6 -0.5 -10.5t-1.5 -9.5q-16 -5 -31 -7q-12 18 -25 50q-13 29 -17 36q-6 5 -13 7q-3 1 -20.5 1.5t-41.5 0.5h-50h-48h-14q-8 0 -17 -1 q-1 -9 -1.5 -16t-0.5 -12l2 -217l-1 -58q0 -30 6 -45q6 -3 26 -6q2 0 10 -2t22 -5q7 -2 13 -3.5t11 -3.5q1 -8 1.5 -12.5t0.5 -6.5t-0.5 -5t-0.5 -7h-16q-46 0 -77 3q-32 3 -115 3q-7 0 -26 -1.5t-51 -3.5q-13 -1 -21 -1.5t-12 -0.5q0 8 -1 10v10v4q10 13 36 19q44 10 64 20 q2 4 3 9.5t2 12.5q0 9 0.5 34.5t0.5 58.5t-0.5 69.5t-1 68t-1 52.5t-0.5 23q0 4 -3 6q-1 1 -6 3q-7 1 -29 1h-60q-10 0 -30.5 -0.5t-41.5 -1t-38 -2t-20 -3.5q-20 -12 -57 -60q-10 -14 -16 -14q-11 5 -17 9.5t-9 7.5z" />
84
+ <glyph unicode="&#xf036;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h525q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h750q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-750q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h450q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-450q-16 0 -27 11t-11 26z" />
85
+ <glyph unicode="&#xf037;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM38 450v56q0 16 10.5 27t26.5 11h750q16 0 27 -11t11 -27v-56q0 -16 -11 -26.5t-27 -10.5h-750q-16 0 -26.5 10.5t-10.5 26.5zM150 244v56q0 16 11 27t27 11h525 q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM188 656v57q0 15 10.5 26t26.5 11h450q16 0 27 -11t11 -26v-57q0 -15 -11 -26t-27 -11h-450q-16 0 -26.5 11t-10.5 26z" />
86
+ <glyph unicode="&#xf038;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM75 450v56q0 16 11 27t27 11h750q15 0 26 -11t11 -27v-56q0 -16 -11 -26.5t-26 -10.5h-750q-16 0 -27 10.5t-11 26.5zM300 244v56q0 16 11 27t27 11h525 q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM375 656v57q0 15 11 26t27 11h450q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-450q-16 0 -27 11t-11 26z" />
87
+ <glyph unicode="&#xf039;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h825q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h825q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-825q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-825q-16 0 -27 11t-11 26z" />
88
+ <glyph unicode="&#xf03a;" d="M0 38v56q0 15 11 26t27 11h75q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-75q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h75q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-75q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h75q15 0 26 -11t11 -27v-56 q0 -16 -11 -26.5t-26 -10.5h-75q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h75q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-75q-16 0 -27 11t-11 26zM225 38v56q0 15 11 26t27 11h600q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-600q-16 0 -27 11 t-11 27zM225 244v56q0 16 11 27t27 11h600q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-600q-16 0 -27 11t-11 27zM225 450v56q0 16 11 27t27 11h600q15 0 26 -11t11 -27v-56q0 -16 -11 -26.5t-26 -10.5h-600q-16 0 -27 10.5t-11 26.5zM225 656v57q0 15 11 26t27 11h600 q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-600q-16 0 -27 11t-11 26z" />
89
+ <glyph unicode="&#xf03b;" d="M0 369v37q0 19 19 19h104v75q0 15 8 18t19 -8l105 -105q8 -8 8 -18q0 -9 -8 -17l-105 -105q-11 -11 -19 -8t-8 19v74h-104q-19 0 -19 19zM300 19v712q0 19 19 19h37q19 0 19 -19v-712q0 -19 -19 -19h-37q-19 0 -19 19zM450 38v56q0 15 11 26t27 11h375q15 0 26 -11 t11 -26v-56q0 -16 -11 -27t-26 -11h-375q-16 0 -27 11t-11 27zM450 244v56q0 16 11 27t27 11h300q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-300q-16 0 -27 11t-11 27zM450 450v56q0 16 11 27t27 11h337q16 0 27 -11t11 -27v-56q0 -16 -11 -26.5t-27 -10.5h-337 q-16 0 -27 10.5t-11 26.5zM450 656v57q0 15 11 26t27 11h262q16 0 27 -11t11 -26v-57q0 -15 -11 -26t-27 -11h-262q-16 0 -27 11t-11 26z" />
90
+ <glyph unicode="&#xf03c;" d="M0 38v56q0 15 11 26t26 11h375q16 0 27 -11t11 -26v-56q0 -16 -11 -27t-27 -11h-375q-15 0 -26 11t-11 27zM0 244v56q0 16 11 27t26 11h300q16 0 27 -11t11 -27v-56q0 -16 -11 -27t-27 -11h-300q-15 0 -26 11t-11 27zM0 450v56q0 16 11 27t26 11h338q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-338q-15 0 -26 10.5t-11 26.5zM0 656v57q0 15 11 26t26 11h263q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-263q-15 0 -26 11t-11 26zM525 19v712q0 19 19 19h37q8 0 13.5 -5.5t5.5 -13.5v-712q0 -8 -5.5 -13.5t-13.5 -5.5h-37 q-19 0 -19 19zM637 363q0 8 7 17l106 105q11 11 18.5 8t7.5 -19v-74h105q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-105v-75q0 -15 -7.5 -18.5t-18.5 7.5l-106 106q-7 9 -7 18z" />
91
+ <glyph unicode="&#xf03d;" d="M-2 113v525q0 23 9 43.5t24.5 35.5t36 24t43.5 9h375q23 0 43.5 -9t36 -24t24.5 -35.5t9 -43.5v-169l251 272q9 9 20 9q5 0 11 -2q18 -8 18 -28v-690q0 -20 -18 -28q-17 -7 -31 7l-251 272v-168q0 -23 -9 -43.5t-24.5 -36t-36 -24.5t-43.5 -9h-375q-23 0 -43.5 9 t-36 24.5t-24.5 36t-9 43.5z" />
92
+ <glyph unicode="&#xf03e;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v600h-750v-600zM150 150v51l135 176l92 -76l173 262l200 -207v-206h-600zM150 524q0 32 22 54t54 22q31 0 53 -22 t22 -54q0 -31 -22 -53t-53 -22q-32 0 -54 22t-22 53z" />
93
+ <glyph unicode="&#xf040;" horiz-adv-x="750" d="M0 0l67 204l423 423l137 -137l-423 -423zM140 199q0 -6 5 -11q4 -4 11 -4q6 0 10 4l337 337q10 10 0 21q-5 5 -11 5t-10 -5l-337 -336q-5 -5 -5 -11zM538 675l58 58q17 17 41 17t41 -17l28 -27l27 -28q17 -17 17 -41t-17 -41l-58 -58z" />
94
+ <glyph unicode="&#xf041;" horiz-adv-x="530" d="M0 485q0 55 21 103t57 84t84 57t103 21t103 -21t84 -57t57 -84t21 -103q0 -40 -12 -75t-30 -67l-179 -311q-18 -32 -44 -32t-44 32l-179 311q-18 32 -30 67.5t-12 74.5zM134 485q0 -27 10 -51t28 -42t42 -28t51 -10t51 10t41.5 28t28 42t10.5 51t-10.5 51t-28 41.5 t-41.5 28t-51 10.5t-51 -10.5t-42 -28t-28 -41.5t-10 -51z" />
95
+ <glyph unicode="&#xf042;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5v525q-54 0 -102 -20.5 t-83.5 -56.5t-56 -84t-20.5 -102z" />
96
+ <glyph unicode="&#xf043;" horiz-adv-x="531" d="M0 266q0 39 11 75t31 67q10 16 33 47t50.5 72.5t53.5 90.5t42 102q5 17 17.5 24.5t26.5 5.5q15 2 27.5 -5.5t17.5 -24.5q16 -53 42 -102t53.5 -90.5t50.5 -72.5t33 -47q20 -31 31 -67t11 -75q0 -55 -21 -103.5t-57 -84.5t-84.5 -57t-103.5 -21t-103 21t-84 57t-57 84.5 t-21 103.5zM116 207q0 -28 19.5 -47t47.5 -19q27 0 46.5 19t19.5 47q0 18 -10 36q-3 4 -9 11.5t-12.5 18t-13 23t-10.5 25.5q-4 9 -11 7q-9 2 -11 -7q-4 -13 -11 -25.5t-13.5 -23t-12.5 -18t-8 -11.5q-11 -17 -11 -36z" />
97
+ <glyph unicode="&#xf044;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h525q2 0 5 -0.5t5 -0.5l-93 -93h-442q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v217l94 94v-311q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-525 q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM308 158l53 161l318 318l108 -108l-318 -318zM423 307q3 -4 8 -4t8 4l250 249q9 9 0 17t-17 0l-249 -249q-9 -9 0 -17zM733 691l45 46q14 14 33 14t32 -14l22 -22l22 -22q13 -14 13.5 -32.5t-13.5 -32.5l-46 -45z" />
98
+ <glyph unicode="&#xf045;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h408q-3 -15 -3 -31v-25q-80 -10 -151 -38h-254q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v54q8 5 15.5 10.5t15.5 13.5l63 62v-140q0 -31 -12 -58t-32.5 -47.5 t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM188 190v18q0 81 27.5 152.5t84.5 125t143.5 84.5t204.5 32v113q0 28 14 34t34 -14l191 -191q13 -12 13 -32q0 -19 -13 -31l-191 -191q-20 -20 -34 -14t-14 34v127q-101 0 -178 -21t-130 -57t-83 -85 t-38 -105q-2 -13 -15 -13q-12 0 -14 13q-2 11 -2 21z" />
99
+ <glyph unicode="&#xf046;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h525q13 0 25 -3l-91 -91h-459q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v159l94 94v-253q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12 t-47.5 32.5t-32 47.5t-12 58zM188 472q0 16 11 27l48 48q11 11 27 11t27 -11l166 -166l319 320q11 11 27.5 11t27.5 -11l48 -48q11 -11 11 -27t-11 -27l-347 -347l-48 -48q-11 -11 -27 -11t-27 11l-49 48l-192 193q-11 11 -11 27z" />
100
+ <glyph unicode="&#xf047;" horiz-adv-x="750" d="M0 375q0 12 8 20l121 120q12 13 21 9t9 -21v-80h169v168h-81q-17 0 -21 9t9 21l120 121q8 8 20 8t20 -8l121 -121q12 -12 8.5 -21t-21.5 -9h-81v-168h169v80q0 17 9 21t21 -9l121 -120q8 -8 8 -20t-8 -20l-121 -120q-12 -13 -21 -9.5t-9 21.5v83h-169v-171h81 q18 0 21.5 -9t-8.5 -21l-121 -121q-8 -8 -20 -8t-20 8l-120 121q-13 12 -9 21t21 9h81v171h-169v-83q0 -17 -9 -21t-21 9l-121 120q-8 8 -8 20z" />
101
+ <glyph unicode="&#xf048;" horiz-adv-x="525" d="M0 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675zM150 375q0 13 8 21l319 345q7 9 20 9q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22z" />
102
+ <glyph unicode="&#xf049;" d="M0 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675zM150 375q0 13 8 21l319 345q7 9 20 9q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22zM525 375q0 13 8 21l319 345q7 9 20 9 q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22z" />
103
+ <glyph unicode="&#xf04a;" horiz-adv-x="750" d="M0 374.5q0 12.5 8 21.5l319 345q7 9 20 9q5 0 11 -3q17 -7 17 -28v-689q0 -20 -17 -28q-18 -8 -31 7l-319 344q-8 9 -8 21.5zM375 374.5q0 12.5 8 21.5l319 345q7 9 20 9q5 0 11 -3q17 -7 17 -28v-689q0 -20 -17 -28q-18 -8 -31 7l-319 344q-8 9 -8 21.5z" />
104
+ <glyph unicode="&#xf04b;" horiz-adv-x="659" d="M0 34v682q0 19 17 29q18 11 34 0l591 -340q17 -12 17 -30t-17 -30l-591 -340q-8 -5 -17 -5t-17 5q-17 10 -17 29z" />
105
+ <glyph unicode="&#xf04c;" horiz-adv-x="750" d="M0 34v682q0 14 10 24t24 10h239q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-239q-14 0 -24 10t-10 24zM443 34v682q0 14 10 24t24 10h239q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-239q-14 0 -24 10t-10 24z" />
106
+ <glyph unicode="&#xf04d;" horiz-adv-x="750" d="M0 34v682q0 14 10 24t24 10h682q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-682q-14 0 -24 10t-10 24z" />
107
+ <glyph unicode="&#xf04e;" horiz-adv-x="750" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28z" />
108
+ <glyph unicode="&#xf050;" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM750 37q0 -15 11 -26t26 -11h75 q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675z" />
109
+ <glyph unicode="&#xf051;" horiz-adv-x="525" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675z" />
110
+ <glyph unicode="&#xf052;" horiz-adv-x="750" d="M0 34v97q0 14 10 24t24 10h682q14 0 24 -10t10 -24v-97q0 -14 -10 -24t-24 -10h-682q-14 0 -24 10t-10 24zM3 290q-9 21 7 37l341 341q10 10 24 10t24 -10l341 -341q16 -16 7 -37q-8 -21 -31 -21h-682q-23 0 -31 21z" />
111
+ <glyph unicode="&#xf053;" horiz-adv-x="471" d="M0 373.5q0 18.5 14 32.5l328 329q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-248 -249l248 -244q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-328 329q-14 14 -14 32.5z" />
112
+ <glyph unicode="&#xf054;" horiz-adv-x="471" d="M0 95q0 19 14 33l248 248l-248 245q-14 14 -14 32.5t14 32.5l49 50q14 14 33 14t33 -14l328 -329q14 -14 14 -33t-14 -33l-328 -328q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14 33z" />
113
+ <glyph unicode="&#xf055;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM159 338q0 -7 4.5 -11.5t10.5 -4.5h147v-161q0 -7 4.5 -11.5t10.5 -4.5h78 q6 0 10.5 4.5t4.5 11.5v161h147q6 0 10.5 4.5t4.5 11.5v74q0 6 -4.5 10.5t-10.5 4.5h-147v162q0 7 -4.5 11.5t-10.5 4.5h-78q-6 0 -10.5 -4.5t-4.5 -11.5v-162h-147q-6 0 -10.5 -4.5t-4.5 -10.5v-74z" />
114
+ <glyph unicode="&#xf056;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM159 338q0 -7 4.5 -11.5t10.5 -4.5h402q6 0 10.5 4.5t4.5 11.5v74q0 6 -4.5 10.5 t-10.5 4.5h-402q-6 0 -10.5 -4.5t-4.5 -10.5v-74z" />
115
+ <glyph unicode="&#xf057;" horiz-adv-x="750" d="M0 376q0 72 27.5 141t82.5 124t124 82t141 27t141 -27t124 -82t82.5 -124t27.5 -141t-27.5 -141t-82.5 -124t-124 -82.5t-141 -27.5t-141 27.5t-124 82.5t-82.5 124t-27.5 141zM185 240l55 -54q5 -5 11 -5t11 5l114 114l103 -104q5 -5 11 -5t11 5l53 53q11 11 0 22 l-104 103l115 115q11 11 0 22l-55 55q-11 11 -22 0l-114 -115l-104 104q-11 11 -22 0l-52 -53q-5 -5 -5 -11t5 -11l103 -103l-114 -115q-10 -10 0 -22z" />
116
+ <glyph unicode="&#xf058;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM112 351.5q0 -9.5 7 -16.5l150 -150q7 -6 18 -11t21 -5h25q10 0 21 5t18 11l259 259 q7 7 7 16.5t-7 15.5l-50 50q-6 7 -15.5 7t-16.5 -7l-212 -213q-7 -7 -16.5 -7t-15.5 7l-104 104q-7 7 -16.5 7t-15.5 -7l-50 -49q-7 -7 -7 -16.5z" />
117
+ <glyph unicode="&#xf059;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM250 531l44 -55q6 -4 10 -5q6 0 10 4q8 6 18 11q8 4 18.5 7.5t21.5 3.5 q20 0 33 -10.5t13 -26.5q0 -17 -11.5 -30.5t-28.5 -28.5q-11 -9 -22 -19.5t-20 -24t-15 -30t-6 -37.5v-30q0 -5 4.5 -9.5t9.5 -4.5h77q6 0 10 4.5t4 9.5v25q0 18 12 31t29 28q12 10 24 21.5t21.5 26.5t16 33t6.5 42q0 32 -13 57t-34.5 41.5t-48.5 25t-54 8.5 q-30 0 -53.5 -7.5t-40 -16.5t-25 -17t-9.5 -9q-9 -9 -1 -18zM315 132q0 -5 4.5 -9.5t9.5 -4.5h77q6 0 10 4.5t4 9.5v74q0 14 -14 14h-77q-5 0 -9.5 -4t-4.5 -10v-74z" />
118
+ <glyph unicode="&#xf05a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM269 418q0 -14 14 -14h40v-192h-37q-5 0 -9.5 -4.5t-4.5 -9.5v-66q0 -5 4.5 -9.5 t9.5 -4.5h189q5 0 9.5 4.5t4.5 9.5v66q0 5 -4.5 9.5t-9.5 4.5h-36v271q0 6 -4.5 10t-9.5 4h-142q-14 0 -14 -14v-65zM322 555q0 -6 4.5 -10.5t10.5 -4.5h88q5 0 9.5 4.5t4.5 10.5v77q0 6 -4.5 10t-9.5 4h-88q-6 0 -10.5 -4t-4.5 -10v-77z" />
119
+ <glyph unicode="&#xf05b;" horiz-adv-x="750" d="M0 338v75q0 8 5.5 13t13.5 5h80q9 41 29 77.5t48.5 65t65 48.5t77.5 29v80q0 19 19 19h75q8 0 13 -5.5t5 -13.5v-80q41 -9 77.5 -29t65 -48.5t48.5 -65t29 -77.5h80q8 0 13.5 -5t5.5 -13v-75q0 -19 -19 -19h-80q-9 -41 -29 -77.5t-48.5 -65t-65 -48.5t-77.5 -29v-80 q0 -8 -5 -13.5t-13 -5.5h-75q-19 0 -19 19v80q-41 9 -77.5 29t-65 48.5t-48.5 65t-29 77.5h-80q-19 0 -19 19zM178 319q14 -52 51.5 -89.5t89.5 -51.5v85q0 8 5.5 13t13.5 5h75q8 0 13 -5t5 -13v-85q52 14 89.5 51.5t51.5 89.5h-84q-19 0 -19 19v75q0 8 5.5 13t13.5 5h84 q-14 52 -51.5 89.5t-89.5 51.5v-84q0 -8 -5 -13.5t-13 -5.5h-75q-19 0 -19 19v84q-52 -14 -89.5 -51.5t-51.5 -89.5h85q8 0 13 -5t5 -13v-75q0 -8 -5 -13.5t-13 -5.5h-85z" />
120
+ <glyph unicode="&#xf05c;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM212 466q0 8 5 14l53 53q6 5 14 5t13 -5l78 -78l78 78q6 5 14 5t13 -5l53 -53q5 -6 5 -14t-5 -13l-78 -78l78 -78q12 -14 0 -27l-53 -53q-14 -12 -27 0l-78 78l-78 -78 q-5 -5 -13 -5t-14 5l-53 53q-12 13 0 27l79 78l-79 78q-5 5 -5 13z" />
121
+ <glyph unicode="&#xf05d;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM156 352q0 8 5 13l53 53q5 5 13 5t14 -5l83 -84q13 -12 27 0l158 159q6 5 14 5t13 -5l53 -53q5 -5 5 -13t-5 -14l-192 -192q-6 -5 -15 -9t-17 -4h-55q-8 0 -17 4t-15 9 l-117 117q-5 6 -5 14z" />
122
+ <glyph unicode="&#xf05e;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -39 10.5 -74.5t30.5 -66.5l362 362q-31 20 -66.5 31t-74.5 11 q-54 0 -102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM234 154q31 -20 66.5 -30.5t74.5 -10.5q54 0 102 20.5t84 56t56.5 83.5t20.5 102q0 39 -11 74.5t-31 66.5z" />
123
+ <glyph unicode="&#xf060;" horiz-adv-x="750" d="M0 375q0 19 14 33l328 329q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-165 -165h411q20 0 33.5 -13.5t13.5 -33.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-412l165 -165q14 -14 14 -33t-14 -33l-49 -49q-14 -14 -33 -14t-33 14l-328 328q-14 14 -14 33z" />
124
+ <glyph unicode="&#xf061;" horiz-adv-x="750" d="M0 341v70q0 19 13.5 32.5t32.5 13.5h412l-165 165q-14 14 -14 33t14 33l49 49q14 14 33 14t33 -14l328 -329q14 -14 14 -32.5t-14 -32.5l-328 -329q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14 33t14 33l165 165h-412q-19 0 -32.5 13.5t-13.5 33.5z" />
125
+ <glyph unicode="&#xf062;" horiz-adv-x="750" d="M-0.5 375q-0.5 19 13.5 33l329 328q14 14 33 14t33 -14l328 -328q14 -14 14 -33t-14 -33l-49 -49q-14 -14 -32.5 -14t-32.5 14l-166 165v-412q0 -19 -13.5 -32.5t-32.5 -13.5h-70q-20 0 -33 13.5t-13 32.5v412l-165 -165q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14.5 33z " />
126
+ <glyph unicode="&#xf063;" horiz-adv-x="750" d="M0 374q0 19 14 33l49 49q14 14 33 14t33 -14l165 -165v412q0 19 13.5 32.5t32.5 13.5h70q20 0 33 -13.5t13 -32.5v-412l166 165q14 14 32.5 14t32.5 -14l50 -49q14 -14 14 -33t-14 -33l-329 -328q-14 -14 -33 -14t-33 14l-328 328q-14 14 -14 33z" />
127
+ <glyph unicode="&#xf064;" d="M0 66q0 102 35 192t106.5 157.5t181 107t259.5 40.5v143q0 35 17.5 42.5t43.5 -17.5l240 -241q17 -16 17 -40q0 -23 -17 -40l-240 -241q-25 -25 -43 -17.5t-18 42.5v161q-128 -1 -225 -27.5t-164 -72t-105 -107t-48 -132.5q-2 -16 -18 -16h-1q-16 0 -18 16q-3 25 -3 50z " />
128
+ <glyph unicode="&#xf065;" horiz-adv-x="750" d="M0 42v255q0 26 13 31.5t32 -12.5l81 -81l134 134q6 6 15 6t16 -6l78 -78q6 -7 6 -16t-6 -15l-134 -134l81 -81q19 -19 13 -32t-32 -13h-254q-18 0 -30 12q-13 13 -13 30zM375 475q0 9 6 15l134 134l-81 81q-19 19 -13 32t32 13h254q18 0 30 -12q13 -13 13 -30v-255 q0 -26 -13 -31.5t-32 12.5l-81 81l-134 -133q-6 -7 -15 -7t-16 7l-78 77q-6 7 -6 16z" />
129
+ <glyph unicode="&#xf066;" horiz-adv-x="750" d="M0 99q0 9 6 16l134 133l-81 81q-19 19 -13 32t32 13h254q19 0 30 -12q13 -13 13 -30v-255q0 -26 -13 -31.5t-32 13.5l-81 81l-134 -134q-6 -7 -15 -7t-16 7l-78 78q-6 6 -6 15zM375 417v255q0 26 13 31.5t32 -13.5l81 -81l134 134q6 7 15 7t16 -7l78 -78q6 -6 6 -15 t-6 -16l-134 -133l81 -81q19 -19 13 -32t-32 -13h-254q-20 0 -30 12q-13 13 -13 30z" />
130
+ <glyph unicode="&#xf067;" horiz-adv-x="750" d="M0 340v70q0 19 13.5 32.5t32.5 13.5h248v247q0 20 13 33.5t33 13.5h70q19 0 32.5 -13.5t13.5 -32.5v-248h248q19 0 32.5 -13.5t13.5 -32.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-248v-247q0 -20 -13.5 -33.5t-32.5 -13.5h-70q-19 0 -32.5 13.5t-13.5 32.5v248h-247 q-20 0 -33.5 13t-13.5 33z" />
131
+ <glyph unicode="&#xf068;" horiz-adv-x="750" d="M0 340v70q0 19 13.5 32.5t32.5 13.5h658q19 0 32.5 -13.5t13.5 -32.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-657q-20 0 -33.5 13t-13.5 33z" />
132
+ <glyph unicode="&#xf069;" horiz-adv-x="697" d="M1 497q-5 18 5 35l35 61q10 17 28.5 21.5t35.5 -4.5l162 -94v187q0 20 13.5 33.5t33.5 13.5h69q20 0 33.5 -13.5t13.5 -32.5v-188l162 94q17 9 35.5 4.5t28.5 -21.5l34 -61q10 -17 5.5 -35t-21.5 -28l-163 -94l163 -94q17 -10 21.5 -28t-4.5 -35l-35 -61 q-10 -17 -28.5 -21.5t-35.5 4.5l-162 94v-187q0 -20 -13.5 -33.5t-33.5 -13.5h-69q-20 0 -33.5 13.5t-13.5 32.5v188l-162 -94q-17 -10 -35.5 -5t-28.5 22l-35 61q-9 17 -4.5 35t21.5 28l163 94l-163 94q-17 10 -22 28z" />
133
+ <glyph unicode="&#xf06a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM316 613l6 -347q2 -14 15 -14h76q14 0 14 14l7 347q1 5 -4 10q-3 4 -10 4h-90 q-7 0 -10 -4q-4 -4 -4 -10zM319 125q0 -14 14 -14h85q5 0 9.5 4t4.5 10v82q0 6 -4.5 10t-9.5 4h-85q-14 0 -14 -14v-82z" />
134
+ <glyph unicode="&#xf06b;" d="M0 281v188q0 8 5.5 13.5t13.5 5.5h258q-27 0 -51 10t-42 28t-28.5 42t-10.5 51t10.5 51t28.5 41.5t42 28t51 10.5q29 0 55 -11.5t43 -33.5l75 -97l75 97q17 22 43 33.5t55 11.5q27 0 51 -10.5t42 -28t28.5 -41.5t10.5 -51t-10.5 -51t-28.5 -42t-42 -28t-51 -10h258 q8 0 13.5 -5.5t5.5 -13.5v-188q0 -8 -5.5 -13t-13.5 -5h-56v-207q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5v207h-56q-8 0 -13.5 5t-5.5 13zM220 619q0 -23 17 -39.5t40 -16.5h113l-73 94q-5 5 -15 11.5t-25 6.5q-23 0 -40 -16.5t-17 -39.5zM356 105 q0 -15 11 -26t27 -11h112q16 0 27 11t11 26v383h-188v-383zM509 563h114q23 0 40 16.5t17 39.5t-17 39.5t-40 16.5q-15 0 -25 -6.5t-15 -11.5z" />
135
+ <glyph unicode="&#xf06c;" d="M3 78q9 25 25.5 41.5t33.5 30.5q14 11 24 20.5t13 20.5q1 2 0 5t-5 11q-2 6 -5 13.5t-5 16.5q-12 75 6.5 139t56.5 114.5t91 86.5t111 56q38 14 83.5 16.5t95.5 3.5q28 0 59.5 1t60.5 5.5t53.5 13.5t39.5 25q10 10 18.5 19.5t18 16.5t20.5 11.5t27 4.5q23 0 33 -21 q62 -121 32 -283q-42 -228 -272 -347q-110 -57 -220 -57q-36 0 -72.5 6t-71.5 19q-11 4 -21.5 9.5t-21.5 10.5q-13 8 -26.5 14.5t-22.5 7.5q-5 -1 -11.5 -8t-13 -16.5t-12.5 -19t-10 -15.5q-6 -11 -12 -20t-11 -16q-11 -14 -29 -14h-2q-28 2 -39 17.5t-14 23.5q-13 18 -5 37 zM188.5 253.5q1.5 -15.5 13.5 -26.5q10 -9 24 -9q18 0 28 13q42 48 85.5 82t90.5 54.5t99.5 29t114.5 6.5q15 -2 26.5 9.5t12.5 26.5q0 16 -10.5 27.5t-26.5 11.5q-69 3 -130 -7t-116 -34t-104.5 -63t-97.5 -94q-11 -11 -9.5 -26.5z" />
136
+ <glyph unicode="&#xf06d;" horiz-adv-x="675" d="M0 214q0 58 30.5 119.5t82.5 111.5q-11 -75 0.5 -120.5t30.5 -71.5q22 -30 53 -44q-24 105 -14 204q4 42 15.5 87.5t34 90t58.5 85.5t89 74q-23 -49 -22 -90t11 -71q11 -35 34 -64q16 -19 30.5 -37.5t25 -42.5t16.5 -56.5t6 -78.5q-9 20 -27 32t-41 12q-32 0 -53.5 -22 t-21.5 -53q0 -16 5.5 -30t17 -25t30 -17t44.5 -6q44 4 77 31q13 12 25.5 29.5t20.5 43t10 60t-5 80.5h-1q52 -50 82.5 -111.5t30.5 -119.5q0 -54 -26.5 -94t-72.5 -66.5t-107 -40t-131 -13.5t-131.5 13.5t-107.5 40t-72.5 66.5t-26.5 94z" />
137
+ <glyph unicode="&#xf06e;" d="M0 352.5q0 21.5 12 40.5q38 61 87 109.5t105.5 82t118.5 51t127 17.5q66 0 128 -17.5t118 -50.5t105 -81.5t88 -110.5q11 -19 11 -40.5t-11 -39.5q-39 -62 -88 -110.5t-105 -81.5t-118 -50.5t-128 -17.5q-65 0 -127 17.5t-118.5 51t-105.5 82t-87 109.5q-12 18 -12 39.5z M75 353q32 -51 73 -93t89 -71t101.5 -45t111.5 -16t111.5 16t101.5 45t89 71t73 93q-39 63 -91.5 110.5t-115.5 76.5q25 -29 39 -65t14 -78q0 -47 -17.5 -87.5t-48.5 -71.5t-72 -48.5t-87 -17.5q-47 0 -87.5 17.5t-71.5 48.5t-48.5 71.5t-17.5 87.5q0 38 12.5 72.5 t33.5 62.5q-57 -29 -106 -74.5t-86 -104.5zM300 397q0 -11 8 -19.5t20 -8.5t20 8.5t8 19.5q0 38 26 64t64 26q12 0 20 8.5t8 19.5q0 12 -8 20t-20 8q-30 0 -57 -11.5t-46.5 -31t-31 -46.5t-11.5 -57z" />
138
+ <glyph unicode="&#xf070;" d="M0 374.5q0 21.5 12 40.5q38 61 87 109.5t105.5 82t118.5 51t127 17.5q26 0 51.5 -3.5t50.5 -8.5l43 77q4 7 12 9q6 3 14 -1l65 -37q7 -4 9.5 -11.5t-1.5 -14.5l-378 -675q-3 -7 -11 -9q-2 -1 -5 -1t-9 2l-66 37q-7 4 -9 11.5t2 14.5l32 56q-71 33 -131.5 87t-106.5 127 q-12 18 -12 39.5zM75 375q40 -64 93.5 -112t117.5 -77l28 51q-42 31 -67.5 78t-25.5 104q0 38 12.5 72.5t33.5 63.5q-57 -30 -106 -75t-86 -105zM300 419q0 -11 8 -19.5t20 -8.5t20 8.5t8 19.5q0 38 26 64t64 26q12 0 20 8.5t8 19.5q0 12 -8 20t-20 8q-30 0 -57 -11.5 t-46.5 -31t-31 -46.5t-11.5 -57zM453 75l43 78q102 12 186.5 70.5t142.5 151.5q-53 83 -128 138l37 67q45 -32 84 -73t71 -92q11 -19 11 -40.5t-11 -39.5q-78 -124 -191.5 -191.5t-244.5 -68.5zM528 210l139 249q2 -10 3 -19.5t1 -20.5q0 -36 -10.5 -68.5t-29.5 -59.5 t-45.5 -48t-57.5 -33z" />
139
+ <glyph unicode="&#xf071;" horiz-adv-x="850" d="M5 23.5q-14 23.5 6 56.5l368 637q18 33 46 33q26 0 46 -33l368 -637q19 -33 5.5 -56.5t-51.5 -23.5h-736q-38 0 -52 23.5zM160 113h530l-265 459zM370 434q0 6 4 10t9 4h84q5 0 9 -4t4 -10l-7 -182q0 -12 -13 -12h-70q-13 0 -13 12zM372 189q0 13 13 13h78q13 0 13 -13 l1 -49q0 -13 -13 -13h-78q-13 0 -13 13z" />
140
+ <glyph unicode="&#xf072;" d="M1 212l34 144q2 8 2 18t-2 18l-34 144q-2 8 2 13.5t12 5.5h45q8 0 17 -4.5t14 -10.5l85 -110q44 9 92 14t94 5h12l-61 283q-2 8 2.5 13t12.5 5h64q8 0 16 -4.5t12 -11.5l164 -285h157q29 0 58 -6.5t51.5 -17t36.5 -24t13 -27.5q1 -14 -13 -27.5t-36.5 -24t-51.5 -17 t-58 -6.5h-158l-163 -283q-4 -7 -12 -11.5t-16 -4.5h-64q-8 0 -12.5 5t-2.5 13l61 281h-12q-46 0 -94 5.5t-92 13.5l-85 -110q-12 -14 -31 -14h-45q-8 0 -12 5t-2 13z" />
141
+ <glyph unicode="&#xf073;" horiz-adv-x="750" d="M0 56v549q0 23 16.5 39.5t39.5 16.5h36v-69q0 -28 19.5 -47.5t47.5 -19.5h15q28 0 48 19.5t20 47.5v69h58v-69q0 -28 19.5 -47.5t47.5 -19.5h16q28 0 47.5 19.5t19.5 47.5v69h58v-69q0 -28 20 -47.5t48 -19.5h15q28 0 47.5 19.5t19.5 47.5v69h36q23 0 39.5 -16.5 t16.5 -39.5v-549q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5zM75 75h600v398h-600v-398zM129 592v128q0 12 9 21t21 9h15q13 0 21.5 -9t8.5 -21v-128q0 -12 -8.5 -20.5t-21.5 -8.5h-15q-12 0 -21 8.5t-9 20.5zM177 158q0 36 20 58.5t43.5 39t43.5 32 t20 36.5q0 20 -11.5 29t-28.5 9q-11 0 -20.5 -4.5t-16.5 -11.5q-4 -4 -7 -8t-6 -9l-34 23q7 14 20 27q11 11 27.5 19t40.5 8q35 0 61 -20.5t26 -58.5q0 -21 -9 -36.5t-23 -28t-30 -22.5t-30 -20t-23.5 -21t-9.5 -25h92v34h42v-73h-185q-1 6 -1.5 12t-0.5 11zM338 592v128 q0 12 8.5 21t20.5 9h16q12 0 21 -9t9 -21v-128q0 -12 -9 -20.5t-21 -8.5h-16q-12 0 -20.5 8.5t-8.5 20.5zM397 330v71h187v-34l-117 -232h-51l107 212q3 8 6 11l3 4v1q-3 0 -5 -1h-13h-75v-32h-42zM546 592v128q0 12 8.5 21t21.5 9h15q12 0 21 -9t9 -21v-128q0 -12 -9 -20.5 t-21 -8.5h-15q-13 0 -21.5 8.5t-8.5 20.5z" />
142
+ <glyph unicode="&#xf074;" d="M0 122v75q0 19 19 19h107q25 0 48.5 15.5t45.5 41t44 58.5t44 68q27 43 56 85.5t62 75.5t72 53.5t88 20.5h99v90q0 20 12 24t29 -10l163 -135q11 -9 11 -23q0 -13 -11 -22l-163 -136q-17 -14 -29 -10t-12 24v86h-99q-26 0 -49 -15.5t-45.5 -41t-44.5 -58.5t-44 -68 q-27 -44 -55.5 -86t-61.5 -75t-72.5 -53.5t-87.5 -20.5h-107q-8 0 -13.5 5t-5.5 13zM0 541v75q0 8 5.5 13.5t13.5 5.5h107q52 0 93.5 -23.5t76.5 -61.5q-18 -25 -34 -49.5t-31 -47.5q-25 31 -50.5 50t-54.5 19h-107q-8 0 -13.5 5.5t-5.5 13.5zM417 190q17 24 33 48.5 t31 48.5q25 -31 50.5 -50t54.5 -19h99v94q0 20 12 24t29 -10l163 -136q11 -9 11 -22q0 -14 -11 -23l-163 -135q-17 -14 -29 -10t-12 24v82h-99q-53 0 -93.5 23t-75.5 61z" />
143
+ <glyph unicode="&#xf075;" d="M0 421q0 68 35.5 128t96.5 104.5t143 70.5t175 26t175 -26t143 -70.5t96.5 -104.5t35.5 -128t-35.5 -128t-96.5 -104.5t-143 -70.5t-175 -26q-44 0 -84 6q-42 -32 -90.5 -55t-103.5 -35l-24 -4q-12 -2 -25 -4q-16 -2 -20 14v1q-2 7 3 11l9 10q10 11 19.5 21.5t17 24.5 t14 32.5t11.5 45.5q-81 45 -129 112.5t-48 148.5z" />
144
+ <glyph unicode="&#xf076;" horiz-adv-x="750" d="M0 311v139q0 8 5.5 13.5t13.5 5.5h187q8 0 13.5 -5.5t5.5 -13.5v-139q0 -13 11 -28t30.5 -28t47 -21.5t61.5 -8.5t61.5 8.5t47 21.5t30.5 28t11 28v139q0 8 5.5 13.5t13.5 5.5h187q8 0 13.5 -5.5t5.5 -13.5v-139q0 -65 -29.5 -121.5t-80.5 -98.5t-119 -66.5t-146 -24.5 t-146 24.5t-119 66.5t-80.5 98.5t-29.5 121.5zM0 544v187q0 19 19 19h187q19 0 19 -19v-187q0 -19 -19 -19h-187q-19 0 -19 19zM525 544v187q0 19 19 19h187q19 0 19 -19v-187q0 -19 -19 -19h-187q-19 0 -19 19z" />
145
+ <glyph unicode="&#xf077;" horiz-adv-x="750" d="M-0.5 173.5q-0.5 18.5 13.5 32.5l329 329q14 14 33 14t33 -14l328 -329q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-248 249l-244 -249q-14 -14 -33 -14t-33 14l-49 50q-14 14 -14.5 32.5z" />
146
+ <glyph unicode="&#xf078;" horiz-adv-x="750" d="M0 448.5q0 18.5 14 32.5l49 50q14 14 33 14t33 -14l248 -249l244 249q14 14 33 14t33 -14l49 -50q14 -14 14.5 -32.5t-13.5 -32.5l-329 -329q-14 -14 -33 -14t-33 14l-328 329q-14 14 -14 32.5z" />
147
+ <glyph unicode="&#xf079;" d="M1 502.5q-6 14.5 13 34.5l181 199q12 14 30 14t30 -14l181 -199q19 -20 13 -34.5t-32 -14.5h-117v-319h81q4 -5 6.5 -9.5t7.5 -9.5l119 -131h-327q-15 0 -26 11t-11 26v432h-117q-26 0 -32 14.5zM386 731h326q16 0 27 -11t11 -26v-431h117q26 0 32 -15t-13 -35l-181 -199 q-12 -14 -30 -14t-30 14l-181 199q-19 20 -13 35t32 15h117v318h-81q-4 5 -6.5 9.5t-7.5 9.5z" />
148
+ <glyph unicode="&#xf07a;" d="M0 694v37q0 19 19 19h113q8 0 18.5 -2t17.5 -4q3 -2 7 -7t7.5 -11.5t6 -13t3.5 -10.5l13 -61h658q17 0 28 -13t8 -29l-53 -282q-3 -12 -13 -20.5t-24 -8.5h-529l17 -82q2 -8 8.5 -13t14.5 -5h418q8 0 13.5 -5.5t5.5 -13.5v-38q0 -8 -5.5 -13t-13.5 -5h-80h-318h-51 q-8 0 -18 1.5t-17 4.5q-3 1 -7 6.5t-7.5 12t-6 13t-3.5 10.5l-105 496q-2 8 -8.5 13t-14.5 5h-83q-19 0 -19 19zM284 56q0 23 16.5 40t39.5 17q24 0 40.5 -17t16.5 -40t-16.5 -39.5t-40.5 -16.5q-23 0 -39.5 16.5t-16.5 39.5zM602 56q0 23 16.5 40t39.5 17t39.5 -17 t16.5 -40t-16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5z" />
149
+ <glyph unicode="&#xf07b;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h338q23 0 39.5 -16.5t16.5 -39.5t16.5 -39.5t39.5 -16.5h338q23 0 39.5 -17t16.5 -40v-525q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5z" />
150
+ <glyph unicode="&#xf07c;" d="M0 185v509q0 23 16.5 39.5t39.5 16.5h338q23 0 39.5 -16.5t16.5 -39.5t16.5 -39.5t39.5 -16.5h216q23 0 39.5 -17t16.5 -40v-108h-600q-18 0 -35 -6t-32 -16.5t-26 -25t-17 -31.5zM21 0l120 371q3 11 15 19t23 8h721l-127 -370q-3 -11 -15 -19.5t-23 -8.5h-714z" />
151
+ <glyph unicode="&#xf07d;" horiz-adv-x="375" d="M0.5 187q4.5 11 27.5 11h95v354h-95q-23 0 -27.5 10.5t11.5 26.5l150 151q10 10 26 10q15 0 25 -10l150 -151q16 -15 11.5 -26t-27.5 -11h-95v-354h95q23 0 27.5 -10.5t-11.5 -26.5l-150 -151q-10 -10 -26 -10q-15 0 -25 10l-150 151q-16 15 -11.5 26z" />
152
+ <glyph unicode="&#xf07e;" horiz-adv-x="750" d="M0 357q0 15 10 25l151 151q15 15 26 10.5t11 -26.5v-96h354v96q0 22 10.5 26.5t26.5 -11.5l151 -150q10 -10 10 -25t-10 -25l-151 -151q-15 -16 -26 -11t-11 27v96h-354v-96q0 -22 -10.5 -26.5t-26.5 11.5l-151 150q-10 10 -10 25z" />
153
+ <glyph unicode="&#xf080;" d="M0 56v638q0 23 17 39.5t40 16.5h787q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-787q-23 0 -40 16.5t-17 39.5zM75 75h750v600h-750v-600zM150 129v177h99v-177h-99zM317 129v379h98v-379h-98zM485 129v289h99v-289h-99zM651 129v450h99v-450h-99z " />
154
+ <glyph unicode="&#xf081;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t36 7.5h563q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-563q-19 0 -36 7.5t-29.5 20t-20 29.5t-7.5 37zM98 273q39 -54 97 -82.5t127 -28.5q47 0 90 13t78 36t60.5 55t37.5 70q40 3 63 28 q7 7 2 16q-4 9 -15 7h-2q11 11 15 22q4 10 -4 16q-7 7 -16 1q-4 -2 -14.5 -5t-22.5 -3q-2 0 -3.5 0.5t-3.5 0.5q0 1 -0.5 2t-0.5 2q-8 30 -28 54t-46 35q2 2 3 4t3 4q3 8 0 16q-1 3 -6 8t-17 4q-1 2 -3 4q-6 6 -12 4q-12 -2 -24 -6l-1 1q-7 4 -15 -1q-29 -18 -48 -49 t-33 -66q-17 15 -28 20q-30 17 -63 31t-75 30q-7 2 -12 -2q-5 -3 -7 -10q-1 -13 4 -28.5t19 -30.5q-12 -3 -10 -16q6 -33 33 -49l-6 -6q-7 -7 -2 -16q2 -6 13 -18.5t32 -18.5q-3 -6 -3 -11t1 -7q3 -16 19 -24q-18 -12 -38.5 -16.5t-41.5 -3t-40.5 10t-34.5 22.5q-4 4 -9.5 4 t-9.5 -4q-11 -9 -2 -19z" />
155
+ <glyph unicode="&#xf082;" horiz-adv-x="750" d="M1 94v562q0 19 7.5 36.5t20 30t29.5 20t36 7.5h563q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-237v314h84q6 0 10.5 4t4.5 10l6 82q0 7 -4 12q-5 5 -11 5h-90v36q0 20 5 26.5t26 6.5q12 0 27 -2t29 -5q3 0 6.5 0.5t5.5 2.5 q5 3 7 11l11 79q2 14 -12 17q-44 12 -92 12q-147 0 -147 -143v-41h-50q-16 0 -16 -16v-82q0 -6 4.5 -10.5t11.5 -4.5h50v-314h-192q-19 0 -36 7.5t-29.5 20t-20 29.5t-7.5 37z" />
156
+ <glyph unicode="&#xf083;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 78h750v56h-750v-56zM75 559h750v113h-467l-7 -45h-276v-68zM130 655h154v45h-154v-45zM272 346q0 -37 14 -69.5t38 -56.5 t56.5 -38t69.5 -14t69.5 14t56.5 38t38 56.5t14 69.5t-14 69.5t-38 56.5t-56.5 38t-69.5 14t-69.5 -14t-56.5 -38t-38 -56.5t-14 -69.5zM328 346q0 25 9.5 47.5t26 39t39 26t47.5 9.5t47.5 -9.5t39 -26t26 -39t9.5 -47.5t-9.5 -47.5t-26 -39t-39 -26t-47.5 -9.5t-47.5 9.5 t-39 26t-26 39t-9.5 47.5zM363 346q0 -8 6 -14t14 -6q9 0 15 6t6 14q0 20 13.5 33t32.5 13v1q9 0 15 6t6 14q0 9 -6 15t-15 6q-36 0 -61.5 -26t-25.5 -62z" />
157
+ <glyph unicode="&#xf084;" d="M0.5 391.5q-2.5 52.5 14 108.5t53.5 107q36 51 83.5 85t98 48t99.5 8t90 -35q36 -26 57 -63.5t27.5 -82.5t-1.5 -93.5t-32 -95.5l195 -139l47 65l-49 35q-7 5 -8.5 13t3.5 15l23 32q5 7 13 8.5t15 -3.5l163 -116q7 -5 8 -13t-4 -15l-23 -33q-5 -7 -13 -8.5t-15 3.5 l-48 35l-47 -65l116 -83q20 -14 24.5 -39t-10.5 -45q-14 -20 -38.5 -24t-44.5 10l-376 269q-37 -38 -80.5 -61.5t-88 -31.5t-87 -0.5t-78.5 33.5q-41 29 -62.5 74t-24 97.5zM109 374.5q3 -19.5 13.5 -37t27.5 -29.5t37 -16.5t39.5 -1t37 14t29.5 27.5q17 24 18 53t-12 54 q28 -5 55 5.5t45 35.5q12 17 16.5 37t1 39.5t-14 37t-27.5 29.5t-37 16.5t-39.5 1t-37 -14t-29.5 -27.5q-17 -25 -18.5 -54t12.5 -54q-28 5 -55 -5.5t-45 -35.5q-12 -17 -16 -36.5t-1 -39z" />
158
+ <glyph unicode="&#xf085;" d="M0 391v84q0 6 5 6q14 4 29.5 6t30.5 4q4 0 7 0.5t7 0.5q6 21 17 42q-9 14 -20 28t-23 28q-5 5 0 9q14 17 30 33.5t33 30.5q6 4 9 -1q8 -8 17 -14.5t18 -13.5l21 -15q21 11 42 17q2 21 4.5 39t6.5 35q0 5 6 5h84q7 0 7 -6q2 -14 4.5 -28.5t4.5 -29.5l2 -15q20 -6 41 -17 q8 7 19 14q10 8 19.5 15t18.5 15q6 4 9 -1q5 -4 9 -8l8 -8l22 -22q12 -12 23 -25q3 -5 0 -9q-10 -11 -20 -24.5t-23 -30.5q6 -11 10.5 -22t8.5 -22q8 -2 17.5 -3t19.5 -3l18 -2q9 -1 17 -3q6 -2 6 -7v-84q0 -5 -5 -7q-14 -3 -29.5 -5t-30.5 -4q-4 0 -14 -2q-6 -20 -17 -41 q9 -14 20 -28t23 -28q4 -5 0 -9q-14 -17 -30 -33.5t-33 -30.5q-6 -4 -9 1q-8 7 -17 14t-18 13q-5 5 -10.5 8.5t-10.5 7.5q-21 -11 -42 -17q-2 -17 -4 -36.5t-7 -37.5q-2 -5 -7 -5h-84q-6 0 -6 5q-3 14 -5 29l-4 30l-2 15q-20 6 -41 17q-5 -4 -9.5 -7t-9.5 -7 q-10 -8 -19.5 -15t-18.5 -15q-6 -4 -9 1q-5 4 -8 8l-9 8q-11 11 -22.5 22t-22.5 25q-4 4 0 8q12 14 22.5 28.5t19.5 27.5q-10 20 -18 44q-8 2 -17.5 3t-19.5 3l-18 2q-9 1 -18 3q-5 2 -5 7zM197 432q0 -35 25 -60t60 -25t60 25t25 60t-25 60t-60 25t-60 -25t-25 -60z M524 188q-2 6 4 8q11 4 21 8t21 8q1 5 1.5 9t2.5 9t3.5 8.5t3.5 8.5q-7 10 -13 19.5t-12 19.5q-3 5 2 8l62 56q4 4 9 1q9 -7 17.5 -14t17.5 -15q18 7 35 8q5 11 10.5 21t10.5 19q3 5 8 3l80 -25q5 -2 5 -8q-2 -11 -4 -21.5t-4 -21.5q8 -6 14 -13t11 -15q12 1 23 1.5t22 0.5 q5 0 7 -5l18 -83q2 -5 -4 -7q-11 -5 -21 -8.5t-21 -7.5q-1 -5 -1.5 -9t-2.5 -9t-3.5 -8.5t-3.5 -7.5q7 -10 13.5 -19.5t11.5 -19.5q2 -5 -2 -8l-62 -57q-4 -4 -9 0q-8 7 -17 14t-17 14q-20 -7 -37 -8q-5 -11 -10 -21t-10 -19q-3 -5 -8 -3l-80 25q-5 2 -5 8q2 11 3.5 22 t3.5 22q-14 12 -24 27q-12 -2 -23.5 -2.5t-22.5 0.5q-5 0 -7 5zM560 607q0 5 5 7q10 2 20 4.5t20 4.5q2 4 3 8t3 8t4.5 7t4.5 7q-5 10 -9 19.5t-8 18.5q-2 4 2 8l64 42q5 3 8 -1q8 -7 14.5 -14.5t13.5 -15.5q16 3 33 3q12 18 24 33q3 3 8 2l69 -34q5 -3 3 -8 q-2 -10 -5.5 -19t-6.5 -19q10 -13 18 -29q11 -1 21.5 -1.5t20.5 -2.5q5 -2 5 -6l5 -77q0 -4 -5 -6q-10 -2 -19.5 -4.5t-20.5 -4.5q-2 -4 -3 -7.5t-3 -7.5q-3 -7 -8 -14q5 -10 9 -19.5t8 -18.5q2 -5 -3 -8l-63 -42q-5 -3 -8 1q-13 12 -28 30q-8 -2 -16.5 -3t-17.5 0 q-6 -9 -12 -17.5t-12 -16.5q-3 -3 -8 -1l-69 34q-5 2 -3 7q3 10 6 19.5t7 19.5q-6 6 -10.5 13t-8.5 15q-11 1 -21.5 1.5t-20.5 2.5q-5 0 -5 6zM658 203q-7 -22 3.5 -42.5t33.5 -27.5q22 -8 42.5 2.5t27.5 33.5q8 22 -2.5 42.5t-33.5 28.5q-22 7 -42.5 -3.5t-28.5 -33.5z M681 564q7 -20 26 -30q20 -9 40 -2.5t29 25.5q10 20 3 40t-26 29q-19 10 -39 3t-30 -26t-3 -39z" />
159
+ <glyph unicode="&#xf086;" d="M0 483q0 55 29 103.5t78.5 85t116 57.5t142.5 21t142.5 -21t116 -57.5t78 -85t28.5 -103.5q0 -56 -28.5 -104.5t-78 -84.5t-116 -57t-142.5 -21q-18 0 -35 1.5t-34 3.5q-34 -26 -73 -45t-84 -29q-20 -5 -40 -6q-12 -2 -16 11v1q-2 5 1.5 9t7.5 8q17 17 30 37t21 64 q-66 36 -105 91t-39 121zM305 136q8 4 12 7q13 -2 25 -2h24q93 0 173 26.5t139.5 72.5t93.5 108.5t34 134.5q0 19 -3 39q45 -36 71 -81.5t26 -98.5q0 -66 -39 -120.5t-105 -91.5q8 -44 21 -63.5t30 -36.5q4 -5 7.5 -9t1.5 -9q-1 -6 -6 -9.5t-10 -2.5q-11 2 -20.5 3.5 t-19.5 3.5q-88 19 -157 73q-17 -2 -34 -3.5t-35 -1.5q-66 0 -123.5 16t-105.5 45z" />
160
+ <glyph unicode="&#xf087;" horiz-adv-x="783" d="M0.5 222q-1.5 56 2 112t12.5 105q45 3 94 3t90 -10q6 -38 10 -91t5.5 -110t0.5 -111t-5 -94q-18 -2 -41.5 -2.5t-49 0.5t-50 1.5t-44.5 0.5q-10 38 -16.5 89t-8 107zM91 101q0 -16 11 -27t27 -11t26.5 11t10.5 27q0 15 -10.5 26t-26.5 11t-27 -11t-11 -26zM240 412 q22 10 35.5 19.5t24.5 21t22.5 26t30.5 34.5q16 16 28.5 26.5t23 20t19 20t17.5 25.5q16 29 21 65t13 68q0 7 7 11q19 3 35 -3.5t28 -17.5t19.5 -26t10.5 -28q6 -33 -1.5 -59.5t-19 -50.5t-22 -46.5t-11.5 -47.5q21 -9 51.5 -9.5t63.5 1t64 1.5t52 -8.5t28.5 -29t-5.5 -59.5 q0 -2 -2.5 -5.5t-5 -8t-4.5 -8.5l-2 -3q11 -11 16 -23t5 -20q1 -39 -32 -68q10 -15 11 -31.5t-4 -31.5t-14.5 -26.5t-21.5 -17.5q6 -34 -6 -58t-35.5 -38.5t-56.5 -20.5t-69 -6t-72.5 5t-67.5 14q-20 6 -39 14t-38.5 15t-41 11t-45.5 0q2 39 2.5 85t-1 93.5t-4.5 92.5t-7 82 z" />
161
+ <glyph unicode="&#xf088;" horiz-adv-x="783" d="M1 452q-1 21 7.5 37.5t24.5 30.5q-9 15 -10 31.5t3.5 31.5t14 26.5t21.5 17.5q-6 34 6 58t35.5 38.5t56.5 20.5t69 6t72.5 -5t67.5 -14q20 -6 39 -14t38.5 -15t41 -10.5t45.5 0.5q-2 -39 -2.5 -85.5t1 -94t4 -92.5t7.5 -82q-22 -10 -35.5 -19.5t-24 -21t-22.5 -26 t-31 -33.5q-15 -17 -27.5 -27.5t-23 -20t-19.5 -19.5t-18 -26q-16 -29 -20.5 -65t-13.5 -68q0 -8 -7 -11q-20 -3 -35.5 3.5t-27.5 17.5t-19.5 25.5t-10.5 28.5q-6 33 1.5 59.5t19 50.5t22 47t11.5 48q-21 9 -51.5 9t-63.5 -1.5t-63.5 -1.5t-52 8.5t-29 29t5.5 59.5 q1 1 3.5 5.5t5 8.5t3.5 8l2 3q-11 11 -16 23t-5 20zM568 630q1 54 5 94q18 2 42 2.5t49.5 0t50 -1.5t44.5 -1q10 -38 16 -89t7.5 -106.5t-2 -112t-12.5 -105.5q-45 -3 -93.5 -3t-90.5 10q-6 38 -10 91t-5.5 110t-0.5 111zM617 650q0 -16 11 -27t27 -11q15 0 26 11t11 27 q0 15 -11 26t-26 11q-16 0 -27 -11t-11 -26z" />
162
+ <glyph unicode="&#xf089;" horiz-adv-x="393" d="M0.5 465q4.5 13 25.5 16l238 34l106 216q9 19 23 19v-633l-212 -112q-20 -10 -31 -2t-7 30l41 236l-172 168q-16 15 -11.5 28z" />
163
+ <glyph unicode="&#xf08a;" horiz-adv-x="846" d="M0 519q0 64 20.5 108t53 71.5t73.5 39.5t82 12q30 0 59 -10t54 -25t45.5 -32.5t35.5 -32.5q15 15 36 32.5t46 32.5t53.5 25t58.5 10q42 0 83 -12t73.5 -39.5t52.5 -71.5t20 -108q0 -44 -16.5 -83.5t-36 -69.5t-37 -48t-18.5 -19l-288 -288q-13 -11 -27 -11q-15 0 -26 11 l-290 288q-1 1 -18 19t-36.5 48t-36 69.5t-16.5 83.5zM75 519q0 -32 13 -61.5t29 -53t29 -37.5l14 -14l263 -263l263 262q1 1 14 15t29 37.5t29 53t13 61.5q0 48 -14 78.5t-36.5 48t-50 23.5t-53.5 6q-25 0 -50.5 -12t-48 -29t-40 -34.5t-26.5 -28.5q-11 -14 -29 -14t-29 14 q-9 11 -26.5 28.5t-40 34.5t-48 29t-50.5 12q-26 0 -53.5 -6t-50 -23.5t-36.5 -48t-14 -78.5z" />
164
+ <glyph unicode="&#xf08b;" horiz-adv-x="825" d="M0 150v450q0 31 12 58t32.5 47.5t47.5 32.5t58 12h225v-94h-225q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h225v-94h-225q-31 0 -58 12t-47.5 32.5t-32.5 47.5t-12 58zM248 285v180q0 16 11 26.5t27 10.5h209v143q0 20 19 28q19 7 32 -7l270 -270 q9 -9 9 -21.5t-9 -20.5l-270 -270q-9 -9 -21 -9q-5 0 -11 2q-19 8 -19 28v142h-209q-16 0 -27 11t-11 27z" />
165
+ <glyph unicode="&#xf08c;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t37 7.5h562q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-562q-39 0 -66.5 27.5t-27.5 66.5zM101 582q0 -28 19.5 -47.5t46.5 -19.5q28 0 47.5 19.5t19.5 47.5q0 27 -19.5 46.5t-47.5 19.5 q-27 0 -46.5 -19.5t-19.5 -46.5zM104 117q0 -5 4.5 -9.5t9.5 -4.5h98q6 0 10 4.5t4 9.5v345q0 14 -14 14h-98q-5 0 -9.5 -4t-4.5 -10v-345zM283 117q0 -5 4.5 -9.5t9.5 -4.5h98q6 0 10 4.5t4 9.5v187q0 28 8 47q15 31 55 31q32 0 42 -19q7 -11 7 -35v-211q0 -5 4 -9.5 t10 -4.5h100q6 0 10 4.5t4 9.5v233q0 72 -42 104q-40 31 -103 31q-50 0 -85 -23q-4 -3 -13 -12v12q0 14 -14 14h-95q-5 0 -9.5 -4t-4.5 -10v-345z" />
166
+ <glyph unicode="&#xf08d;" d="M1 461q4 38 21 80.5t47 82.5t65.5 68.5t71.5 43t68.5 14t56.5 -18.5q25 -18 34.5 -49.5t5.5 -70.5l141 -105q52 29 101.5 33.5t84.5 -21.5q25 -19 37.5 -50.5t11.5 -70.5t-14.5 -83.5t-39.5 -88.5l201 -193q5 -5 6 -12t-4 -12q-5 -8 -15 -8q-3 0 -9 2l-242 138 q-35 -37 -73.5 -63t-75.5 -38t-71 -9.5t-60 22.5q-35 26 -45 74.5t4 106.5l-141 106q-36 -15 -69 -15t-58 18q-24 18 -34 49.5t-6 69.5zM80 417.5q1 -7.5 8 -12.5q8 -7 22 -7q15 0 31.5 8t33.5 22t33.5 31.5t31.5 37.5q5 6 4 13.5t-8 12.5q-6 5 -13.5 4t-12.5 -8 q-37 -49 -65.5 -67.5t-34.5 -16.5q-6 5 -13.5 4t-12.5 -8q-5 -6 -4 -13.5zM219 368l170 -127q6 -4 11 -4q10 0 15 8q5 6 4 13.5t-7 12.5l-163 121q-15 -14 -30 -24zM393 141q-10 -16 4 -27q13 -10 33 -10q19 0 41 10t44.5 27t44.5 39t41 47q5 7 4 14.5t-8 12.5 q-6 5 -13.5 3.5t-12.5 -7.5q-24 -32 -48 -54.5t-45 -35.5t-36.5 -17t-22.5 2q-6 5 -13.5 3.5t-12.5 -7.5z" />
167
+ <glyph unicode="&#xf08e;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h284q-1 -7 -2 -13.5t-1 -14.5v-43q0 -11 3 -23h-284q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v166q20 -15 44 -24t50 -10v-132q0 -31 -12 -58t-32.5 -47.5 t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM338 255q0 12 8 20l376 377h-131q-12 0 -20 8t-8 20v42q-1 11 7.5 19.5t20.5 8.5h281q11 0 19.5 -8.5t8.5 -19.5v-42v-239q0 -12 -8.5 -20.5t-19.5 -7.5h-42q-12 0 -20 8t-8 20v131l-377 -376 q-8 -8 -20 -8t-20 8l-39 39q-8 8 -8 20z" />
168
+ <glyph unicode="&#xf090;" horiz-adv-x="825" d="M0 285v180q0 16 11 26.5t27 10.5h209v143q0 20 18 28q19 7 33 -7l270 -270q8 -9 8 -21.5t-8 -20.5l-270 -270q-9 -9 -21 -9q-4 0 -12 2q-18 8 -18 28v142h-209q-16 0 -27 11t-11 27zM450 0v94h225q23 0 39.5 16.5t16.5 39.5v450q0 23 -16.5 39.5t-39.5 16.5h-225v94h225 q31 0 58 -12t47.5 -32t32.5 -47.5t12 -58.5v-450q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-225z" />
169
+ <glyph unicode="&#xf091;" horiz-adv-x="825" d="M0 509v91q0 16 11 26.5t27 10.5h158q-1 6 -1 13v11v2q0 26 2 43t7.5 26.5t15.5 13.5t27 4h331q16 0 26.5 -4t16 -13.5t7.5 -26.5t2 -43v-13q0 -6 -1 -13h158q16 0 27 -10.5t11 -26.5v-91q0 -31 -22 -64t-59.5 -62.5t-88 -52t-108.5 -31.5q-25 -5 -44.5 -20.5t-19.5 -34.5 q0 -17 8.5 -25t19 -15t19.5 -15.5t11 -25.5q2 -11 -1 -23q-2 -7 11.5 -11.5t33 -9t40 -11t31.5 -16.5q6 -5 9.5 -19.5t4.5 -31.5q1 -16 -3 -28.5t-14 -12.5h-481q-10 0 -14 12.5t-3 28.5q1 17 4.5 31.5t9.5 19.5q11 10 31 16.5t39.5 11t33.5 9t12 11.5t-2 12v11 q1 17 10.5 25.5t20.5 15.5t19.5 15t8.5 25q0 19 -19.5 34.5t-45.5 20.5q-57 10 -107.5 32.5t-88 51.5t-59.5 62t-22 64zM75 509q0 -10 11.5 -26.5t33 -34.5t52 -35t68.5 -29q-12 39 -21.5 85.5t-16.5 92.5h-127v-53zM585 384q38 12 68.5 29t52 35t33 34.5t11.5 26.5v53h-128 q-6 -46 -15.5 -92.5t-21.5 -85.5z" />
170
+ <glyph unicode="&#xf092;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t37 7.5h562q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-562q-39 0 -66.5 27.5t-27.5 66.5zM94 321q0 -44 11 -82.5t41.5 -67t85.5 -45t143 -16.5t142.5 16.5t85.5 45t42 67t11 82.5 q0 73 -46 127q4 16 5 36t-1.5 39t-7.5 36t-12 29h-14q-42 -2 -74 -22t-63 -37l-7 1q-8 0 -18.5 1t-22 1.5t-20.5 0.5q-18 0 -35 -1t-33 -3q-31 17 -63 37t-74 22h-14q-8 -12 -12.5 -29t-7 -36t-1.5 -39t5 -36q-46 -54 -46 -127zM183 289q15 60 84 67q13 2 27 1.5t30 -1.5 q7 0 25.5 -1t25.5 -1t25.5 1t25.5 1q16 1 30 1.5t26 -1.5q70 -7 85 -67q8 -33 -3 -61.5t-24 -41.5q-20 -20 -66 -32t-99 -12t-99 12t-66 32q-13 13 -24 41.5t-3 61.5zM242 265q0 -23 11 -39t27 -16t27 16t11 39t-11 38.5t-27 15.5t-27 -15.5t-11 -38.5zM432 265 q0 -23 11 -39t27 -16t27 16t11 39t-11 38.5t-27 15.5t-27 -15.5t-11 -38.5z" />
171
+ <glyph unicode="&#xf093;" d="M0 19v300q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-169h600v169q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-300q0 -19 -19 -19h-862q-19 0 -19 19zM169 473.5q-3 7.5 8 18.5l246 247q11 11 27 11t27 -11l247 -247q11 -11 7.5 -18.5t-18.5 -7.5 h-150v-244q0 -16 -11 -27t-27 -11h-150q-16 0 -26.5 11t-10.5 27v244h-150q-16 0 -19 7.5z" />
172
+ <glyph unicode="&#xf094;" horiz-adv-x="786" d="M1 251q-1 17 0.5 33.5t3.5 36.5q2 17 3.5 35t4.5 32q7 32 15 62.5t22 57.5q10 20 22 39.5t26 38.5q5 7 10.5 12t11.5 10l22 22q11 11 24 21t28 18t32 16q16 8 33 14.5t35 13.5q34 14 76 25l1 1q22 6 41.5 8.5t38.5 2.5q29 0 55 -4.5t52 -9.5q20 -4 41.5 -7.5t45.5 -3.5h1 q14 0 30.5 2.5t32.5 2.5q12 0 22 -3t16 -12q11 -15 12.5 -35t-0.5 -37t-4 -34.5t1 -35.5q2 -11 5.5 -19t7.5 -18q4 -9 5.5 -19.5t3.5 -20.5q9 -51 7.5 -95.5t-11.5 -83t-27.5 -72.5t-39.5 -65q-18 -24 -38.5 -47.5t-45 -44.5t-54 -38t-65.5 -29q-37 -13 -77.5 -16.5 t-77.5 -5.5h-15q-51 0 -95 8t-94 8h-2q-17 0 -37.5 -5t-40.5 -6h-1q-18 0 -32 8.5t-21 20.5q-10 17 -8.5 35.5t6.5 33.5t5 32.5t-2.5 37t-6 39.5t-4.5 40z" />
173
+ <glyph unicode="&#xf095;" horiz-adv-x="1000" />
174
+ </font>
175
+ </defs></svg>
app/view/admin/font/fontawesome-webfont.svgz ADDED
Binary file
app/view/admin/font/fontawesome-webfont.ttf ADDED
Binary file
app/view/admin/font/fontawesome-webfont.woff ADDED
Binary file
app/view/admin/img/admin-bar-sprite.png ADDED
Binary file
{img → app/view/admin/img}/admin-menu.png RENAMED
File without changes
{img → app/view/admin/img}/ajax-loader.gif RENAMED
File without changes
app/view/admin/img/color-picker-default.png ADDED
Binary file
{img → app/view/admin/img}/color-picker.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_background.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_hex.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_hsb_b.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_hsb_h.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_hsb_s.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_indic.gif RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_overlay.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_rgb_b.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_rgb_g.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_rgb_r.png RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_select.gif RENAMED
File without changes
{img → app/view/admin/img}/colorpicker_submit.png RENAMED
File without changes
{img → app/view/admin/img}/custom_b.png RENAMED
File without changes
{img → app/view/admin/img}/custom_background.png RENAMED
File without changes
{img → app/view/admin/img}/custom_bl.png RENAMED
File without changes
{img → app/view/admin/img}/custom_br.png RENAMED
File without changes
{img → app/view/admin/img}/custom_hex.png RENAMED
File without changes
{img → app/view/admin/img}/custom_hsb_b.png RENAMED
File without changes
{img → app/view/admin/img}/custom_hsb_h.png RENAMED
File without changes
{img → app/view/admin/img}/custom_hsb_s.png RENAMED
File without changes
{img → app/view/admin/img}/custom_indic.gif RENAMED
File without changes
{img → app/view/admin/img}/custom_l.png RENAMED
File without changes
{img → app/view/admin/img}/custom_r.png RENAMED
File without changes
{img → app/view/admin/img}/custom_rgb_b.png RENAMED
File without changes
{img → app/view/admin/img}/custom_rgb_g.png RENAMED
File without changes
{img → app/view/admin/img}/custom_rgb_r.png RENAMED
File without changes
{img → app/view/admin/img}/custom_submit.png RENAMED
File without changes
{img → app/view/admin/img}/custom_t.png RENAMED
File without changes
{img → app/view/admin/img}/custom_tl.png RENAMED
File without changes
{img → app/view/admin/img}/custom_tr.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_b.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_bl.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_br.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_l.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_r.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_t.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_tl.png RENAMED
File without changes
{img → app/view/admin/img}/datepicker_tr.png RENAMED
File without changes
{img → app/view/admin/img}/field.png RENAMED
File without changes
{img → app/view/admin/img}/icon-close.png RENAMED
File without changes
{img → app/view/admin/img}/indicator.gif RENAMED
File without changes
app/view/admin/img/logo.png ADDED
Binary file
{img → app/view/admin/img}/slider.png RENAMED
File without changes
app/view/{import.php → admin/import.php} RENAMED
File without changes
{js → app/view/admin/js}/add_new_event.js RENAMED
@@ -1,5 +1,58 @@
1
  // Global Variables
2
- var ai1ec_geocoder, ai1ec_default_location, ai1ec_myOptions, ai1ec_map, ai1ec_marker;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  /**
5
  * Given a location, update the address field with a reformatted version,
@@ -14,14 +67,14 @@ var ai1ec_update_address = function( result ) {
14
  ai1ec_marker.setPosition( result.geometry.location );
15
  jQuery( '#ai1ec_address' ).val( result.formatted_address );
16
 
17
- var street_number = '',
18
- street_name = '',
19
- city = '',
20
- state = '',
21
- postal_code = 0,
22
- country = 0,
23
- province = '';
24
-
25
  for( var i = 0; i < result.address_components.length; i++ ) {
26
  switch( result.address_components[i].types[0] ) {
27
  case 'street_number':
@@ -209,17 +262,17 @@ var ai1ec_apply_js_on_repeat_block = function() {
209
  };
210
 
211
  var ai1ec_show_repeat_tabs = function( data, post_ajax_func ) {
212
- jQuery.blockUI( {
213
  message: '<div class="ai1ec-repeat-box-loading"></div>',
214
- css: {
215
  width: '358px',
216
  border: '0',
217
  background: 'transparent',
218
  cursor: 'normal'
219
  }
220
  });
221
- jQuery.post(
222
- ajaxurl,
223
  data,
224
  function( response ) {
225
  if( response.error ) {
@@ -229,9 +282,9 @@ var ai1ec_show_repeat_tabs = function( data, post_ajax_func ) {
229
  jQuery.unblockUI();
230
  } else {
231
  // display the form
232
- jQuery.blockUI( {
233
  message: response.message,
234
- css: {
235
  width: '358px',
236
  border: '0',
237
  background: 'transparent',
@@ -261,7 +314,6 @@ var isUrl = function( s ) {
261
  return regexp.test(s);
262
  };
263
 
264
-
265
  // ====================
266
  // = jQuery DOM Ready =
267
  // ====================
@@ -276,13 +328,13 @@ jQuery( function( $ ){
276
  var $parent = $( this ).parent().parent();
277
  // disable the update button
278
  $button.attr( 'disabled', true );
279
-
280
  // create the data to send
281
  var data = {
282
  action: 'ai1ec_disable_notification',
283
  note: false
284
  };
285
-
286
  $.post( ajaxurl, data, function( response ) {
287
  if( response.error ) {
288
  // tell the user that there is an error
@@ -323,7 +375,7 @@ jQuery( function( $ ){
323
  now: now
324
  }
325
  $.timespan( data );
326
-
327
  var exdate = $( "#ai1ec_exdate" ).val();
328
  var dp_date = null;
329
  var _clear_dp = false;
@@ -338,7 +390,7 @@ jQuery( function( $ ){
338
  _span_html += _year + '-' + _month + '-' + _day + ',';
339
  _month = _month.charAt(0) == '0' ? ( '0' + ( parseInt( _month.charAt( 1 ) ) - 1 ) )
340
  : ( parseInt( _month ) - 1 )
341
-
342
  dp_date.push( new Date( _year, _month, _day ) );
343
  });
344
  _span_html = _span_html.slice( 0, _span_html.length - 1 );
@@ -370,11 +422,11 @@ jQuery( function( $ ){
370
  }
371
  }
372
  });
373
-
374
  if( _clear_dp ) {
375
  $( '#widgetCalendar' ).DatePickerClear();
376
  }
377
-
378
  var state = false;
379
  $( '#widgetField > a, #widgetField > span, #ai1ec_exclude_date_label' ).bind( 'click', function() {
380
  $('#widgetCalendar').stop().animate( { height: state ? 0 : $( '#widgetCalendar div.datepicker' ).get( 0 ).offsetHeight }, 500 );
@@ -407,54 +459,68 @@ jQuery( function( $ ){
407
  ai1ec_map = new google.maps.Map( $( '#ai1ec_map_canvas' ).get(0), ai1ec_myOptions );
408
  ai1ec_marker = new google.maps.Marker({ map: ai1ec_map });
409
 
410
- $( '#ai1ec_address' )
411
- /**
412
- * Initialize geo_autocomplete plugin
413
- */
414
- .geo_autocomplete(
415
- new google.maps.Geocoder,
416
- {
417
- selectFirst: false,
418
- minChars: 3,
419
- cacheLength: 50,
420
- width: 300,
421
- scroll: true,
422
- scrollHeight: 330,
423
- region: ai1ec_add_new_event.region
424
- }
425
- ).result(
426
- function( _event, _data ) {
427
- if( _data ) {
428
- ai1ec_update_address( _data );
429
  }
430
- }
431
- )
432
- /**
433
- * Each time user changes address field, reformat field and update map
434
- */
435
- .change(
436
- function() {
437
- // Position map based on provided address value
438
- if( $( this ).val().length > 0 ) {
439
- var address = $( this ).val();
440
-
441
- ai1ec_geocoder.geocode(
442
- {
443
- 'address': address,
444
- 'region': ai1ec_add_new_event.region
445
- },
446
- function( results, status ) {
447
- if( status == google.maps.GeocoderStatus.OK ) {
448
- ai1ec_update_address( results[0] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
  }
450
- }
451
- );
452
  }
453
- }
454
- )
455
- // Now trigger the event on load to initialize map
456
- .change();
457
-
 
 
 
 
 
 
 
458
  // Toggle the visibility of google map on checkbox click
459
  $( '#ai1ec_google_map' ).click( function() {
460
  if( $( this ).is( ':checked' ) ) {
@@ -469,6 +535,41 @@ jQuery( function( $ ){
469
  }
470
  });
471
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  ai1ec_selector( '#ai1ec_weekly_date_select' );
473
  ai1ec_selector( '#ai1ec_montly_date_select' );
474
  ai1ec_selector( '#ai1ec_yearly_date_select' );
@@ -491,9 +592,9 @@ jQuery( function( $ ){
491
  if( ! $( this ).hasClass( 'ai1ec_active' ) ) {
492
  var $active_tab = $( '.ai1ec_repeat_tabs > li > a.ai1ec_active' );
493
  var $active_content = $( $active_tab.attr( 'href' ) );
494
-
495
  var $becoming_active = $( $( this ).attr( 'href' ) );
496
-
497
  $active_tab.removeClass( 'ai1ec_active' );
498
  $active_content.hide();
499
 
@@ -538,7 +639,7 @@ jQuery( function( $ ){
538
  rule += 'BYMONTHDAY=' + month_days + ';';
539
  } else if ( monthtype == 'byday' ) {
540
  byday_num = $( '#ai1ec_monthly_byday_num' ).val();
541
- byday_weekday = $( '#ai1ec_monthly_byday_weekday' ).val();
542
  rule += 'BYDAY=' + byday_num + byday_weekday + ';';
543
  }
544
  break;
@@ -586,9 +687,9 @@ jQuery( function( $ ){
586
  rrule: rule
587
  };
588
  $( this ).attr( 'disabled', true );
589
- $.post(
590
- ajaxurl,
591
- data,
592
  function( response ) {
593
  if( response.error ) {
594
  if( $( '#ai1ec_is_box_repeat' ).val() == '1' ) {
@@ -609,53 +710,53 @@ jQuery( function( $ ){
609
  });
610
 
611
  // handles click on rrule text
612
- ai1ec_click_on_ics_rule_text(
613
- '#ai1ec_repeat_text > a',
614
- '#ai1ec_repeat',
615
- '#ai1ec_repeat_label',
616
- {
617
- action: 'ai1ec_get_repeat_box',
618
  repeat: 1,
619
- post_id: $( '#post_ID' ).val()
620
- },
621
  'ai1ec_apply_js_on_repeat_block'
622
  );
623
 
624
  // handles click on exrule text
625
- ai1ec_click_on_ics_rule_text(
626
- '#ai1ec_exclude_text > a',
627
- '#ai1ec_exclude',
628
- '#ai1ec_exclude_label',
629
- {
630
- action: 'ai1ec_get_repeat_box',
631
  repeat: 0,
632
- post_id: $( '#post_ID' ).val()
633
- },
634
  'ai1ec_apply_js_on_repeat_block'
635
  );
636
 
637
  // handles click on repeat checkbox
638
- ai1ec_click_on_checkbox(
639
- '#ai1ec_repeat',
640
- '#ai1ec_repeat_text > a',
641
- '#ai1ec_repeat_label',
642
- {
643
- action: 'ai1ec_get_repeat_box',
644
  repeat: 1,
645
- post_id: $( '#post_ID' ).val()
646
  },
647
  'ai1ec_apply_js_on_repeat_block'
648
  );
649
 
650
  // handles click on exclude checkbox
651
- ai1ec_click_on_checkbox(
652
- '#ai1ec_exclude',
653
- '#ai1ec_exclude_text > a',
654
- '#ai1ec_exclude_label',
655
- {
656
- action: 'ai1ec_get_repeat_box',
657
  repeat: 0,
658
- post_id: $( '#post_ID' ).val()
659
  },
660
  'ai1ec_apply_js_on_repeat_block'
661
  );
@@ -732,8 +833,8 @@ jQuery( function( $ ){
732
  feed_tags: $( '#ai1ec_feed_tags' ).val()
733
  };
734
  // make an ajax call to save the new feed
735
- $.post(
736
- ajaxurl,
737
  data,
738
  function( response ) {
739
  // restore add button
1
  // Global Variables
2
+ var ai1ec_geocoder, ai1ec_default_location, ai1ec_myOptions, ai1ec_map, ai1ec_marker, ai1ec_marker_draggable;
3
+
4
+ /**
5
+ *
6
+ * converts commas to dots as in some regions (Europe for example) floating point numbers are defined with a comma instead of a dot
7
+ *
8
+ */
9
+ var ai1ec_convert_commas_to_dots_for_coordinates = function() {
10
+ if ( jQuery( '#ai1ec_input_coordinates:checked' ).length > 0 ) {
11
+ jQuery( '#ai1ec_table_coordinates input.coordinates' ).each( function() {
12
+ this.value = AI1EC_UTILS.convert_comma_to_dot( this.value );
13
+ });
14
+ }
15
+ }
16
+ /**
17
+ * Shows the error message after the field
18
+ *
19
+ * @param Object the dom element after which we put the error
20
+ *
21
+ * @param the error message
22
+ *
23
+ */
24
+ var ai1ec_show_error_message_after_element = function( el, error_message ) {
25
+ // Create the element to append in case of error
26
+ var error = jQuery( '<div />',
27
+ {
28
+ text : error_message,
29
+ class : "ai1ec-error"
30
+ }
31
+ );
32
+ // Insert error message
33
+ jQuery( el ).after( error );
34
+ }
35
+ /**
36
+ *
37
+ * prevent default actions and stop immediate propagation if the publish button was clicked and
38
+ * gives focus to the passed element
39
+ *
40
+ * @param Object the event object
41
+ *
42
+ * @param Object the element to focus
43
+ *
44
+ */
45
+ var ai1ec_prevent_actions_and_focus_on_errors = function( e, el ) {
46
+ // If the validation was triggered by clicking publish
47
+ if ( e.target.id === 'publish' ) {
48
+ // Prevent other events from firing
49
+ e.stopImmediatePropagation();
50
+ // Prevent the submit
51
+ e.preventDefault();
52
+ }
53
+ // Focus on the first field that has an error
54
+ jQuery( el ).focus();
55
+ }
56
 
57
  /**
58
  * Given a location, update the address field with a reformatted version,
67
  ai1ec_marker.setPosition( result.geometry.location );
68
  jQuery( '#ai1ec_address' ).val( result.formatted_address );
69
 
70
+ var street_number = '',
71
+ street_name = '',
72
+ city = '',
73
+ state = '',
74
+ postal_code = 0,
75
+ country = 0,
76
+ province = '';
77
+
78
  for( var i = 0; i < result.address_components.length; i++ ) {
79
  switch( result.address_components[i].types[0] ) {
80
  case 'street_number':
262
  };
263
 
264
  var ai1ec_show_repeat_tabs = function( data, post_ajax_func ) {
265
+ jQuery.blockUI( {
266
  message: '<div class="ai1ec-repeat-box-loading"></div>',
267
+ css: {
268
  width: '358px',
269
  border: '0',
270
  background: 'transparent',
271
  cursor: 'normal'
272
  }
273
  });
274
+ jQuery.post(
275
+ ajaxurl,
276
  data,
277
  function( response ) {
278
  if( response.error ) {
282
  jQuery.unblockUI();
283
  } else {
284
  // display the form
285
+ jQuery.blockUI( {
286
  message: response.message,
287
+ css: {
288
  width: '358px',
289
  border: '0',
290
  background: 'transparent',
314
  return regexp.test(s);
315
  };
316
 
 
317
  // ====================
318
  // = jQuery DOM Ready =
319
  // ====================
328
  var $parent = $( this ).parent().parent();
329
  // disable the update button
330
  $button.attr( 'disabled', true );
331
+
332
  // create the data to send
333
  var data = {
334
  action: 'ai1ec_disable_notification',
335
  note: false
336
  };
337
+
338
  $.post( ajaxurl, data, function( response ) {
339
  if( response.error ) {
340
  // tell the user that there is an error
375
  now: now
376
  }
377
  $.timespan( data );
378
+
379
  var exdate = $( "#ai1ec_exdate" ).val();
380
  var dp_date = null;
381
  var _clear_dp = false;
390
  _span_html += _year + '-' + _month + '-' + _day + ',';
391
  _month = _month.charAt(0) == '0' ? ( '0' + ( parseInt( _month.charAt( 1 ) ) - 1 ) )
392
  : ( parseInt( _month ) - 1 )
393
+
394
  dp_date.push( new Date( _year, _month, _day ) );
395
  });
396
  _span_html = _span_html.slice( 0, _span_html.length - 1 );
422
  }
423
  }
424
  });
425
+
426
  if( _clear_dp ) {
427
  $( '#widgetCalendar' ).DatePickerClear();
428
  }
429
+
430
  var state = false;
431
  $( '#widgetField > a, #widgetField > span, #ai1ec_exclude_date_label' ).bind( 'click', function() {
432
  $('#widgetCalendar').stop().animate( { height: state ? 0 : $( '#widgetCalendar div.datepicker' ).get( 0 ).offsetHeight }, 500 );
459
  ai1ec_map = new google.maps.Map( $( '#ai1ec_map_canvas' ).get(0), ai1ec_myOptions );
460
  ai1ec_marker = new google.maps.Marker({ map: ai1ec_map });
461
 
462
+ if( ! ai1ec_add_new_event.disable_autocompletion ) {
463
+ // This is the only way to stop the autocomplete from firing when the
464
+ // coordinates checkbox is checked. The new jQuery UI autocomplete
465
+ // supports the method .autocomplete( "disable" ) but not this version.
466
+ $( '#ai1ec_address' )
467
+ .bind( "keypress keyup keydown change", function( e ) {
468
+ if( $( '#ai1ec_input_coordinates:checked' ).length ) {
469
+ e.stopImmediatePropagation();
 
 
 
 
 
 
 
 
 
 
 
470
  }
471
+ })
472
+ // Initialize geo_autocomplete plugin
473
+ .geo_autocomplete(
474
+ new google.maps.Geocoder,
475
+ {
476
+ selectFirst: false,
477
+ minChars: 3,
478
+ cacheLength: 50,
479
+ width: 300,
480
+ scroll: true,
481
+ scrollHeight: 330,
482
+ region: ai1ec_add_new_event.region
483
+ }
484
+ )
485
+ .result(
486
+ function( _event, _data ) {
487
+ if( _data ) {
488
+ ai1ec_update_address( _data );
489
+ }
490
+ }
491
+ )
492
+ // Each time user changes address field, reformat field and update map.
493
+ .change(
494
+ function() {
495
+ // Position map based on provided address value
496
+ if( $( this ).val().length > 0 ) {
497
+ var address = $( this ).val();
498
+
499
+ ai1ec_geocoder.geocode(
500
+ {
501
+ 'address': address,
502
+ 'region': ai1ec_add_new_event.region
503
+ },
504
+ function( results, status ) {
505
+ if( status == google.maps.GeocoderStatus.OK ) {
506
+ ai1ec_update_address( results[0] );
507
+ }
508
  }
509
+ );
510
+ }
511
  }
512
+ );
513
+ }
514
+ // If the coordinates checkbox is not checked
515
+ if( $( '#ai1ec_input_coordinates:checked' ).length === 0 ) {
516
+ // Hide the table (i hide things in js for progressive enhancement reasons)
517
+ $( '#ai1ec_table_coordinates' ).css( { visibility : 'hidden' } );
518
+ // Trigger the change event on the address to show the mep
519
+ $( '#ai1ec_address' ).change();
520
+ } else {
521
+ // If the checkbox is checked, show the map using the coordinates
522
+ ai1ec_update_map_from_coordinates();
523
+ }
524
  // Toggle the visibility of google map on checkbox click
525
  $( '#ai1ec_google_map' ).click( function() {
526
  if( $( this ).is( ':checked' ) ) {
535
  }
536
  });
537
 
538
+ // Hide / Show the coordinates table when clicking the checkbox
539
+ $( '#ai1ec_input_coordinates' ).change( function() {
540
+ // If the checkbox is checked
541
+ if( this.checked === true ) {
542
+ $( '#ai1ec_table_coordinates' ).css( { visibility : 'visible' } );
543
+ } else {
544
+ // Hide the table
545
+ $( '#ai1ec_table_coordinates' ).css( { visibility : 'hidden' } );
546
+ // Erase the input fields
547
+ $( '#ai1ec_table_coordinates input' ).val( '' );
548
+ // Clean up error messages
549
+ $( 'div.ai1ec-error' ).remove();
550
+ }
551
+ });
552
+ // Validate the coordinates when clicking Publish
553
+ $( '#publish' ).click( function( e ) {
554
+ if ( ai1ec_check_lat_long_fields_filled_when_publishing_event( e ) === true ) {
555
+ // Convert commas to dots
556
+ ai1ec_convert_commas_to_dots_for_coordinates();
557
+ // Check that fields are ok and there are no errors
558
+ ai1ec_check_lat_long_ok_for_search( e );
559
+ }
560
+ });
561
+
562
+ $( 'input.coordinates' ).blur ( function( e ) {
563
+ // Convert commas to dots
564
+ ai1ec_convert_commas_to_dots_for_coordinates();
565
+ // Check if the coordinates are valid.
566
+ var valid = ai1ec_check_lat_long_ok_for_search( e );
567
+ // If they are valid, update the map.
568
+ if( valid === true ) {
569
+ ai1ec_update_map_from_coordinates();
570
+ }
571
+ });
572
+
573
  ai1ec_selector( '#ai1ec_weekly_date_select' );
574
  ai1ec_selector( '#ai1ec_montly_date_select' );
575
  ai1ec_selector( '#ai1ec_yearly_date_select' );
592
  if( ! $( this ).hasClass( 'ai1ec_active' ) ) {
593
  var $active_tab = $( '.ai1ec_repeat_tabs > li > a.ai1ec_active' );
594
  var $active_content = $( $active_tab.attr( 'href' ) );
595
+
596
  var $becoming_active = $( $( this ).attr( 'href' ) );
597
+
598
  $active_tab.removeClass( 'ai1ec_active' );
599
  $active_content.hide();
600
 
639
  rule += 'BYMONTHDAY=' + month_days + ';';
640
  } else if ( monthtype == 'byday' ) {
641
  byday_num = $( '#ai1ec_monthly_byday_num' ).val();
642
+ byday_weekday = $( '#ai1ec_monthly_byday_weekday' ).val();
643
  rule += 'BYDAY=' + byday_num + byday_weekday + ';';
644
  }
645
  break;
687
  rrule: rule
688
  };
689
  $( this ).attr( 'disabled', true );
690
+ $.post(
691
+ ajaxurl,
692
+ data,
693
  function( response ) {
694
  if( response.error ) {
695
  if( $( '#ai1ec_is_box_repeat' ).val() == '1' ) {
710
  });
711
 
712
  // handles click on rrule text
713
+ ai1ec_click_on_ics_rule_text(
714
+ '#ai1ec_repeat_text > a',
715
+ '#ai1ec_repeat',
716
+ '#ai1ec_repeat_label',
717
+ {
718
+ action: 'ai1ec_get_repeat_box',
719
  repeat: 1,
720
+ post_id: $( '#post_ID' ).val()
721
+ },
722
  'ai1ec_apply_js_on_repeat_block'
723
  );
724
 
725
  // handles click on exrule text
726
+ ai1ec_click_on_ics_rule_text(
727
+ '#ai1ec_exclude_text > a',
728
+ '#ai1ec_exclude',
729
+ '#ai1ec_exclude_label',
730
+ {
731
+ action: 'ai1ec_get_repeat_box',
732
  repeat: 0,
733
+ post_id: $( '#post_ID' ).val()
734
+ },
735
  'ai1ec_apply_js_on_repeat_block'
736
  );
737
 
738
  // handles click on repeat checkbox
739
+ ai1ec_click_on_checkbox(
740
+ '#ai1ec_repeat',
741
+ '#ai1ec_repeat_text > a',
742
+ '#ai1ec_repeat_label',
743
+ {
744
+ action: 'ai1ec_get_repeat_box',
745
  repeat: 1,
746
+ post_id: $( '#post_ID' ).val()
747
  },
748
  'ai1ec_apply_js_on_repeat_block'
749
  );
750
 
751
  // handles click on exclude checkbox
752
+ ai1ec_click_on_checkbox(
753
+ '#ai1ec_exclude',
754
+ '#ai1ec_exclude_text > a',
755
+ '#ai1ec_exclude_label',
756
+ {
757
+ action: 'ai1ec_get_repeat_box',
758
  repeat: 0,
759
+ post_id: $( '#post_ID' ).val()
760
  },
761
  'ai1ec_apply_js_on_repeat_block'
762
  );
833
  feed_tags: $( '#ai1ec_feed_tags' ).val()
834
  };
835
  // make an ajax call to save the new feed
836
+ $.post(
837
+ ajaxurl,
838
  data,
839
  function( response ) {
840
  // restore add button
{js → app/view/admin/js}/colorpicker.js RENAMED
@@ -504,7 +504,8 @@ jQuery( function( $ ) {
504
  '<li style="color: #0ba;" class="color-17"></li>' + // 17
505
  '<li style="color: #26d;" class="color-18"></li>' + // 18
506
  '<li style="color: #777;" class="color-19"></li>' + // 19
507
- '<li style="color: #aaa;" class="color-20"></li>' // 20
 
508
  );
509
  var more_color = $( '<li class="select-more-colors">More colors</li>' );
510
  $( more_color ).ColorPicker({
@@ -523,11 +524,17 @@ jQuery( function( $ ) {
523
  }
524
  });
525
  // Add click event for each font style
526
- li_els.click( function() {
527
- $( '#tag-color-background' ).css( 'background-color', $(this).css( 'color' ) );
528
- $( '#tag-color-value' ).val( rgb2hex( $(this).css( 'color' ) ) );
529
-
530
- ul_el.remove();
 
 
 
 
 
 
531
  });
532
 
533
  // append li elements to the ul holder
@@ -540,8 +547,8 @@ jQuery( function( $ ) {
540
  position: 'absolute',
541
  top: top + 'px',
542
  left: left + 'px',
543
- width: '75px',
544
- height: '85px',
545
  'z-index': 1,
546
  background: '#fff',
547
  border: '1px solid #ccc'
@@ -550,6 +557,12 @@ jQuery( function( $ ) {
550
  $( document ).bind( 'mousedown', {ls: ul_el}, hide_color_selector );
551
  });
552
 
 
 
 
 
 
 
553
  var rgb2hex = function( rgb ) {
554
  rgb = rgb.match( /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/ );
555
  return "#" + hex( rgb[1] ) + hex( rgb[2] ) + hex( rgb[3] );
504
  '<li style="color: #0ba;" class="color-17"></li>' + // 17
505
  '<li style="color: #26d;" class="color-18"></li>' + // 18
506
  '<li style="color: #777;" class="color-19"></li>' + // 19
507
+ '<li style="color: #aaa;" class="color-20"></li>' + // 20
508
+ '<li style="color: #aab;" class="color-21"></li>' // 21
509
  );
510
  var more_color = $( '<li class="select-more-colors">More colors</li>' );
511
  $( more_color ).ColorPicker({
524
  }
525
  });
526
  // Add click event for each font style
527
+ li_els.click( function() {
528
+ if( rgb2hex( $(this).css( 'color' ) ) != "#aaaabb" ){
529
+ $( '#tag-color-background' ).css( 'background-color', $(this).css( 'color' ) );
530
+ $( '#tag-color-value' ).val( rgb2hex( $(this).css( 'color' ) ) );
531
+ ul_el.remove();
532
+ }
533
+ else{
534
+ $( '#tag-color-background' ).css( 'background-color', "" );
535
+ $( '#tag-color-value' ).val( "" );
536
+ ul_el.remove();
537
+ }
538
  });
539
 
540
  // append li elements to the ul holder
547
  position: 'absolute',
548
  top: top + 'px',
549
  left: left + 'px',
550
+ width: '105px',
551
+ height: '70px',
552
  'z-index': 1,
553
  background: '#fff',
554
  border: '1px solid #ccc'
557
  $( document ).bind( 'mousedown', {ls: ul_el}, hide_color_selector );
558
  });
559
 
560
+ // remove category color click
561
+ $( "#tag-color-value-remove" ).click(function(){
562
+ $( "#tag-color-background" ).css( "background-color","" );
563
+ $( "#tag-color-value" ).val("")
564
+ });
565
+
566
  var rgb2hex = function( rgb ) {
567
  rgb = rgb.match( /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/ );
568
  return "#" + hex( rgb[1] ) + hex( rgb[2] ) + hex( rgb[3] );
{js → app/view/admin/js}/datepicker.js RENAMED
File without changes
{js → app/view/admin/js}/element-selector.js RENAMED
File without changes
{js → app/view/admin/js}/geo_autocomplete.js RENAMED
File without changes
{js → app/view/admin/js}/jquery-tools-1.2.5.min.js RENAMED
File without changes
{js → app/view/admin/js}/jquery.autocomplete_geomod.js RENAMED
File without changes
{js → app/view/admin/js}/jquery.blockUI.js RENAMED
File without changes
{js → app/view/admin/js}/jquery.calendrical.js RENAMED
File without changes
{js → app/view/admin/js}/jquery.inputdate.js RENAMED
File without changes
{js → app/view/admin/js}/jquery.timespan.js RENAMED
File without changes
app/view/admin/js/platform-all.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery( function( $ ) {
2
+ // Disable the "Front page" option in WP General Settings.
3
+ if( $( 'body.options-reading-php' ).length ) {
4
+ function disable_front_page_option() {
5
+ $( '#page_on_front' ).attr( 'disabled', 'disabled' );
6
+ }
7
+ disable_front_page_option();
8
+ $( '#front-static-pages input:radio' ).change(disable_front_page_option);
9
+ $( '#page_on_front' ).after( '<span class="description">' + ai1ec_platform_all.page_on_front_description + '</span>' );
10
+ }
11
+ });
app/view/admin/js/platform.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery( function( $ ) {
2
+ // If in strict mode, hide all administrative functions other than event, user
3
+ // and media management.
4
+ if ( ai1ec_platform.strict_mode ) {
5
+ $( '#dashboard-widgets .postbox' )
6
+ .not( '#ai1ec-calendar-tasks, #dashboard_right_now' )
7
+ .remove();
8
+ $( '#adminmenu > li' )
9
+ .not( '.wp-menu-separator, #menu-dashboard, #menu-posts-ai1ec_event, #menu-media, #menu-appearance, #menu-users, #menu-settings' )
10
+ .remove();
11
+ $( '#menu-appearance > .wp-submenu li, #menu-settings > .wp-submenu li' )
12
+ .not( ':has(a[href*="all-in-one-event-calendar"])' )
13
+ .remove();
14
+ }
15
+ });
{js → app/view/admin/js}/settings.js RENAMED
File without changes
{js → app/view/admin/js}/widget.js RENAMED
File without changes
app/view/admin/less/bootstrap.less ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v2.0.2
3
+ *
4
+ * Copyright 2012 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
+ */
10
+
11
+ // Fonts
12
+ @import url("http://fonts.googleapis.com/css?family=Droid+Sans:400,700");
13
+ @import "font-awesome.less";
14
+
15
+ .thenly {
16
+ // CSS Reset
17
+ @import "reset.less";
18
+
19
+ // Core variables and mixins
20
+ @import "variables.less"; // Modify this for custom colors, font-sizes, etc
21
+
22
+ @import "mixins.less";
23
+
24
+ // Grid system and page structure
25
+ //@import "scaffolding.less";
26
+ @import "grid.less";
27
+ //@import "layouts.less";
28
+
29
+ // Base CSS
30
+ @import "type.less";
31
+ //@import "code.less";
32
+ //@import "forms.less";
33
+ //@import "tables.less";
34
+
35
+ // Components: common
36
+ //@import "sprites.less";
37
+ //@import "dropdowns.less";
38
+ //@import "wells.less";
39
+ //@import "component-animations.less";
40
+ //@import "close.less";
41
+
42
+ // Components: Buttons & Alerts
43
+ @import "buttons.less";
44
+ //@import "button-groups.less";
45
+ //@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
46
+
47
+ // Components: Nav
48
+ //@import "navs.less";
49
+ //@import "navbar.less";
50
+ //@import "breadcrumbs.less";
51
+ //@import "pagination.less";
52
+ //@import "pager.less";
53
+
54
+ // Components: Popovers
55
+ //@import "modals.less";
56
+ //@import "tooltip.less";
57
+ //@import "popovers.less";
58
+
59
+ // Components: Misc
60
+ //@import "thumbnails.less";
61
+ //@import "labels.less";
62
+ //@import "badges.less";
63
+ //@import "progress-bars.less";
64
+ //@import "accordion.less";
65
+ //@import "carousel.less";
66
+ @import "hero-unit.less";
67
+
68
+ // Utility classes
69
+ @import "utilities.less"; // Has to be last to override when necessary
70
+
71
+ // Adjustments.
72
+ .hero-unit {
73
+ padding: 30px;
74
+ margin-bottom: 15px;
75
+ }
76
+ .hero-unit h1 {
77
+ color: @headingsColor;
78
+ }
79
+ hr {
80
+ margin: 14px 0;
81
+ }
82
+ }
app/view/admin/less/build-css.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ LESSC="lessc --yui-compress --include-path=."
4
+
5
+ if which -s lessc; then
6
+ $LESSC bootstrap.less > ../css/bootstrap.min.css
7
+ else
8
+ echo 'Error: lessc not found. Install Node.js then: npm install -g less';
9
+ exit 1;
10
+ fi
app/view/admin/less/button-groups.less ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // BUTTON GROUPS
2
+ // -------------
3
+
4
+
5
+ // Make the div behave like a button
6
+ .btn-group {
7
+ position: relative;
8
+ .clearfix(); // clears the floated buttons
9
+ .ie7-restore-left-whitespace();
10
+ }
11
+
12
+ // Space out series of button groups
13
+ .btn-group + .btn-group {
14
+ margin-left: 5px;
15
+ }
16
+
17
+ // Optional: Group multiple button groups together for a toolbar
18
+ .btn-toolbar {
19
+ margin-top: @baseLineHeight / 2;
20
+ margin-bottom: @baseLineHeight / 2;
21
+ .btn-group {
22
+ display: inline-block;
23
+ .ie7-inline-block();
24
+ }
25
+ }
26
+
27
+ // Float them, remove border radius, then re-add to first and last elements
28
+ .btn-group .btn {
29
+ position: relative;
30
+ float: left;
31
+ margin-left: -1px;
32
+ .border-radius(0);
33
+ }
34
+ // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
35
+ .btn-group .btn:first-child {
36
+ margin-left: 0;
37
+ -webkit-border-top-left-radius: 4px;
38
+ -moz-border-radius-topleft: 4px;
39
+ border-top-left-radius: 4px;
40
+ -webkit-border-bottom-left-radius: 4px;
41
+ -moz-border-radius-bottomleft: 4px;
42
+ border-bottom-left-radius: 4px;
43
+ }
44
+ .btn-group .btn:last-child,
45
+ .btn-group .dropdown-toggle {
46
+ -webkit-border-top-right-radius: 4px;
47
+ -moz-border-radius-topright: 4px;
48
+ border-top-right-radius: 4px;
49
+ -webkit-border-bottom-right-radius: 4px;
50
+ -moz-border-radius-bottomright: 4px;
51
+ border-bottom-right-radius: 4px;
52
+ }
53
+ // Reset corners for large buttons
54
+ .btn-group .btn.large:first-child {
55
+ margin-left: 0;
56
+ -webkit-border-top-left-radius: 6px;
57
+ -moz-border-radius-topleft: 6px;
58
+ border-top-left-radius: 6px;
59
+ -webkit-border-bottom-left-radius: 6px;
60
+ -moz-border-radius-bottomleft: 6px;
61
+ border-bottom-left-radius: 6px;
62
+ }
63
+ .btn-group .btn.large:last-child,
64
+ .btn-group .large.dropdown-toggle {
65
+ -webkit-border-top-right-radius: 6px;
66
+ -moz-border-radius-topright: 6px;
67
+ border-top-right-radius: 6px;
68
+ -webkit-border-bottom-right-radius: 6px;
69
+ -moz-border-radius-bottomright: 6px;
70
+ border-bottom-right-radius: 6px;
71
+ }
72
+
73
+ // On hover/focus/active, bring the proper btn to front
74
+ .btn-group .btn:hover,
75
+ .btn-group .btn:focus,
76
+ .btn-group .btn:active,
77
+ .btn-group .btn.active {
78
+ z-index: 2;
79
+ }
80
+
81
+ // On active and open, don't show outline
82
+ .btn-group .dropdown-toggle:active,
83
+ .btn-group.open .dropdown-toggle {
84
+ outline: 0;
85
+ }
86
+
87
+
88
+
89
+ // Split button dropdowns
90
+ // ----------------------
91
+
92
+ // Give the line between buttons some depth
93
+ .btn-group .dropdown-toggle {
94
+ padding-left: 8px;
95
+ padding-right: 8px;
96
+ @shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
97
+ .box-shadow(@shadow);
98
+ *padding-top: 3px;
99
+ *padding-bottom: 3px;
100
+ }
101
+ .btn-group .btn-mini.dropdown-toggle {
102
+ padding-left: 5px;
103
+ padding-right: 5px;
104
+ *padding-top: 1px;
105
+ *padding-bottom: 1px;
106
+ }
107
+ .btn-group .btn-small.dropdown-toggle {
108
+ *padding-top: 4px;
109
+ *padding-bottom: 4px;
110
+ }
111
+ .btn-group .btn-large.dropdown-toggle {
112
+ padding-left: 12px;
113
+ padding-right: 12px;
114
+ }
115
+
116
+ .btn-group.open {
117
+ // IE7's z-index only goes to the nearest positioned ancestor, which would
118
+ // make the menu appear below buttons that appeared later on the page
119
+ *z-index: @zindexDropdown;
120
+
121
+ // Reposition menu on open and round all corners
122
+ .dropdown-menu {
123
+ display: block;
124
+ margin-top: 1px;
125
+ .border-radius(5px);
126
+ }
127
+
128
+ .dropdown-toggle {
129
+ background-image: none;
130
+ @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
131
+ .box-shadow(@shadow);
132
+ }
133
+ }
134
+
135
+ // Reposition the caret
136
+ .btn .caret {
137
+ margin-top: 7px;
138
+ margin-left: 0;
139
+ }
140
+ .btn:hover .caret,
141
+ .open.btn-group .caret {
142
+ .opacity(100);
143
+ }
144
+ // Carets in other button sizes
145
+ .btn-mini .caret {
146
+ margin-top: 5px;
147
+ }
148
+ .btn-small .caret {
149
+ margin-top: 6px;
150
+ }
151
+ .btn-large .caret {
152
+ margin-top: 6px;
153
+ border-left: 5px solid transparent;
154
+ border-right: 5px solid transparent;
155
+ border-top: 5px solid @black;
156
+ }
157
+
158
+
159
+ // Account for other colors
160
+ .btn-primary,
161
+ .btn-warning,
162
+ .btn-danger,
163
+ .btn-info,
164
+ .btn-success,
165
+ .btn-inverse {
166
+ .caret {
167
+ border-top-color: @white;
168
+ border-bottom-color: @white;
169
+ .opacity(75);
170
+ }
171
+ }
172
+
app/view/admin/less/buttons.less ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // BUTTON STYLES
2
+ // -------------
3
+
4
+
5
+ // Base styles
6
+ // --------------------------------------------------
7
+
8
+ // Core
9
+ .btn {
10
+ display: inline-block;
11
+ .ie7-inline-block();
12
+ padding: 4px 10px 4px;
13
+ margin-bottom: 0; // For input.btn
14
+ font-size: @baseFontSize;
15
+ line-height: @baseLineHeight;
16
+ color: @grayDark;
17
+ text-align: center;
18
+ text-shadow: 0 1px 1px rgba(255,255,255,.75);
19
+ vertical-align: middle;
20
+ .buttonBackground(@btnBackground, @btnBackgroundHighlight);
21
+ border: 1px solid @btnBorder;
22
+ border-bottom-color: darken(@btnBorder, 10%);
23
+ .border-radius(4px);
24
+ @shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
25
+ .box-shadow(@shadow);
26
+ cursor: pointer;
27
+
28
+ // Give IE7 some love
29
+ .ie7-restore-left-whitespace();
30
+ }
31
+
32
+ // Hover state
33
+ .btn:hover {
34
+ color: @grayDark;
35
+ text-decoration: none;
36
+ background-color: darken(@white, 10%);
37
+ background-position: 0 -15px;
38
+
39
+ // transition is only when going to hover, otherwise the background
40
+ // behind the gradient (there for IE<=9 fallback) gets mismatched
41
+ .transition(background-position .1s linear);
42
+ }
43
+
44
+ // Focus state for keyboard and accessibility
45
+ .btn:focus {
46
+ .tab-focus();
47
+ }
48
+
49
+ // Active state
50
+ .btn.active,
51
+ .btn:active {
52
+ background-image: none;
53
+ @shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
54
+ .box-shadow(@shadow);
55
+ background-color: darken(@white, 10%);
56
+ background-color: darken(@white, 15%) e("\9");
57
+ outline: 0;
58
+ }
59
+
60
+ // Disabled state
61
+ .btn.disabled,
62
+ .btn[disabled] {
63
+ cursor: default;
64
+ background-image: none;
65
+ background-color: darken(@white, 10%);
66
+ .opacity(65);
67
+ .box-shadow(none);
68
+ }
69
+
70
+
71
+ // Button Sizes
72
+ // --------------------------------------------------
73
+
74
+ // Large
75
+ .btn-large {
76
+ padding: 9px 14px;
77
+ font-size: @baseFontSize + 2px;
78
+ line-height: normal;
79
+ .border-radius(5px);
80
+ }
81
+ .btn-large [class^="icon-"] {
82
+ margin-top: 1px;
83
+ }
84
+
85
+ // Small
86
+ .btn-small {
87
+ padding: 5px 9px;
88
+ font-size: @baseFontSize - 2px;
89
+ line-height: @baseLineHeight - 2px;
90
+ }
91
+ .btn-small [class^="icon-"] {
92
+ margin-top: -1px;
93
+ }
94
+
95
+ // Mini
96
+ .btn-mini {
97
+ padding: 2px 6px;
98
+ font-size: @baseFontSize - 2px;
99
+ line-height: @baseLineHeight - 4px;
100
+ }
101
+
102
+
103
+ // Alternate buttons
104
+ // --------------------------------------------------
105
+
106
+ // Set text color
107
+ // -------------------------
108
+ .btn-primary,
109
+ .btn-primary:hover,
110
+ .btn-warning,
111
+ .btn-warning:hover,
112
+ .btn-danger,
113
+ .btn-danger:hover,
114
+ .btn-success,
115
+ .btn-success:hover,
116
+ .btn-info,
117
+ .btn-info:hover,
118
+ .btn-inverse,
119
+ .btn-inverse:hover {
120
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
121
+ color: @white;
122
+ }
123
+ // Provide *some* extra contrast for those who can get it
124
+ .btn-primary.active,
125
+ .btn-warning.active,
126
+ .btn-danger.active,
127
+ .btn-success.active,
128
+ .btn-info.active,
129
+ .btn-inverse.active {
130
+ color: rgba(255,255,255,.75);
131
+ }
132
+
133
+ // Set the backgrounds
134
+ // -------------------------
135
+ .btn-primary {
136
+ .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
137
+ }
138
+ // Warning appears are orange
139
+ .btn-warning {
140
+ .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
141
+ }
142
+ // Danger and error appear as red
143
+ .btn-danger {
144
+ .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
145
+ }
146
+ // Success appears as green
147
+ .btn-success {
148
+ .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
149
+ }
150
+ // Info appears as a neutral blue
151
+ .btn-info {
152
+ .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
153
+ }
154
+ // Inverse appears as dark gray
155
+ .btn-inverse {
156
+ .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
157
+ }
158
+
159
+
160
+ // Cross-browser Jank
161
+ // --------------------------------------------------
162
+
163
+ button.btn,
164
+ input[type="submit"].btn {
165
+
166
+ // Firefox 3.6 only I believe
167
+ &::-moz-focus-inner {
168
+ padding: 0;
169
+ border: 0;
170
+ }
171
+
172
+ // IE7 has some default padding on button controls
173
+ *padding-top: 2px;
174
+ *padding-bottom: 2px;
175
+ &.btn-large {
176
+ *padding-top: 7px;
177
+ *padding-bottom: 7px;
178
+ }
179
+ &.btn-small {
180
+ *padding-top: 3px;
181
+ *padding-bottom: 3px;
182
+ }
183
+ &.btn-mini {
184
+ *padding-top: 1px;
185
+ *padding-bottom: 1px;
186
+ }
187
+ }
app/view/admin/less/dropdowns.less ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // DROPDOWN MENUS
2
+ // --------------
3
+
4
+ // Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
5
+ .dropdown {
6
+ position: relative;
7
+ }
8
+ .dropdown-toggle {
9
+ // The caret makes the toggle a bit too tall in IE7
10
+ *margin-bottom: -3px;
11
+ }
12
+ .dropdown-toggle:active,
13
+ .open .dropdown-toggle {
14
+ outline: 0;
15
+ }
16
+
17
+ // Dropdown arrow/caret
18
+ // --------------------
19
+ .caret {
20
+ display: inline-block;
21
+ width: 0;
22
+ height: 0;
23
+ vertical-align: top;
24
+ border-left: 4px solid transparent;
25
+ border-right: 4px solid transparent;
26
+ border-top: 4px solid @black;
27
+ .opacity(30);
28
+ content: "";
29
+ }
30
+
31
+ // Place the caret
32
+ .dropdown .caret {
33
+ margin-top: 8px;
34
+ margin-left: 2px;
35
+ }
36
+ .dropdown:hover .caret,
37
+ .open.dropdown .caret {
38
+ .opacity(100);
39
+ }
40
+
41
+ // The dropdown menu (ul)
42
+ // ----------------------
43
+ .dropdown-menu {
44
+ position: absolute;
45
+ top: 100%;
46
+ left: 0;
47
+ z-index: @zindexDropdown;
48
+ float: left;
49
+ display: none; // none by default, but block on "open" of the menu
50
+ min-width: 160px;
51
+ padding: 4px 0;
52
+ margin: 0; // override default ul
53
+ list-style: none;
54
+ background-color: @dropdownBackground;
55
+ border-color: #ccc;
56
+ border-color: rgba(0,0,0,.2);
57
+ border-style: solid;
58
+ border-width: 1px;
59
+ .border-radius(0 0 5px 5px);
60
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
61
+ -webkit-background-clip: padding-box;
62
+ -moz-background-clip: padding;
63
+ background-clip: padding-box;
64
+ *border-right-width: 2px;
65
+ *border-bottom-width: 2px;
66
+
67
+ // Aligns the dropdown menu to right
68
+ &.pull-right {
69
+ right: 0;
70
+ left: auto;
71
+ }
72
+
73
+ // Dividers (basically an hr) within the dropdown
74
+ .divider {
75
+ .nav-divider();
76
+ }
77
+
78
+ // Links within the dropdown menu
79
+ a {
80
+ display: block;
81
+ padding: 3px 15px;
82
+ clear: both;
83
+ font-weight: normal;
84
+ line-height: @baseLineHeight;
85
+ color: @dropdownLinkColor;
86
+ white-space: nowrap;
87
+ }
88
+ }
89
+
90
+ // Hover state
91
+ // -----------
92
+ .dropdown-menu li > a:hover,
93
+ .dropdown-menu .active > a,
94
+ .dropdown-menu .active > a:hover {
95
+ color: @dropdownLinkColorHover;
96
+ text-decoration: none;
97
+ background-color: @dropdownLinkBackgroundHover;
98
+ }
99
+
100
+ // Open state for the dropdown
101
+ // ---------------------------
102
+ .dropdown.open {
103
+ // IE7's z-index only goes to the nearest positioned ancestor, which would
104
+ // make the menu appear below buttons that appeared later on the page
105
+ *z-index: @zindexDropdown;
106
+
107
+ .dropdown-toggle {
108
+ color: @white;
109
+ background: #ccc;
110
+ background: rgba(0,0,0,.3);
111
+ }
112
+ .dropdown-menu {
113
+ display: block;
114
+ }
115
+ }
116
+
117
+ // Right aligned dropdowns
118
+ .pull-right .dropdown-menu {
119
+ left: auto;
120
+ right: 0;
121
+ }
122
+
123
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
124
+ // ------------------------------------------------------
125
+ // Just add .dropup after the standard .dropdown class and you're set, bro.
126
+ // TODO: abstract this so that the navbar fixed styles are not placed here?
127
+ .dropup,
128
+ .navbar-fixed-bottom .dropdown {
129
+ // Reverse the caret
130
+ .caret {
131
+ border-top: 0;
132
+ border-bottom: 4px solid @black;
133
+ content: "\2191";
134
+ }
135
+ // Different positioning for bottom up menu
136
+ .dropdown-menu {
137
+ top: auto;
138
+ bottom: 100%;
139
+ margin-bottom: 1px;
140
+ }
141
+ }
142
+
143
+ // Typeahead
144
+ // ---------
145
+ .typeahead {
146
+ margin-top: 2px; // give it some space to breathe
147
+ .border-radius(4px);
148
+ }
app/view/admin/less/font-awesome.less ADDED
@@ -0,0 +1,264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Font Awesome
2
+ the iconic font designed for use with Twitter Bootstrap
3
+ -------------------------------------------------------
4
+ The full suite of pictographic icons, examples, and documentation
5
+ can be found at: http://fortawesome.github.com/Font-Awesome/
6
+
7
+ License
8
+ -------------------------------------------------------
9
+ The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
10
+ http://creativecommons.org/licenses/by/3.0/ A mention of
11
+ 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
12
+ source code is considered acceptable attribution (most common on the web).
13
+ If human readable source code is not available to the end user, a mention in
14
+ an 'About' or 'Credits' screen is considered acceptable (most common in desktop
15
+ or mobile software).
16
+
17
+ Contact
18
+ -------------------------------------------------------
19
+ Email: dave@davegandy.com
20
+ Twitter: http://twitter.com/fortaweso_me
21
+ Work: http://lemonwi.se co-founder
22
+
23
+ */
24
+
25
+ @font-face {
26
+ font-family: 'FontAwesome';
27
+ src: url('../font/fontawesome-webfont.eot');
28
+ src: url('../font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
29
+ url('../font/fontawesome-webfont.woff') format('woff'),
30
+ url('../font/fontawesome-webfont.ttf') format('truetype'),
31
+ url('../font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),
32
+ url('../font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
33
+ font-weight: normal;
34
+ font-style: normal;
35
+ }
36
+
37
+ /* sprites.less reset */
38
+ [class^="icon-"],
39
+ [class*=" icon-"] {
40
+ display: inline;
41
+ width: auto;
42
+ height: auto;
43
+ line-height: inherit;
44
+ vertical-align: baseline;
45
+ background-image: none;
46
+ background-position: 0% 0%;
47
+ background-repeat: repeat;
48
+ }
49
+ li[class^="icon-"],
50
+ li[class*=" icon-"] {
51
+ display: block;
52
+ }
53
+
54
+ /* Font Awesome styles
55
+ ------------------------------------------------------- */
56
+ [class^="icon-"]:before,
57
+ [class*=" icon-"]:before {
58
+ font-family: FontAwesome;
59
+ font-weight: normal;
60
+ font-style: normal;
61
+ display: inline-block;
62
+ text-decoration: inherit;
63
+ }
64
+
65
+ a [class^="icon-"],
66
+ a [class*=" icon-"] {
67
+ display: inline-block;
68
+ text-decoration: inherit;
69
+ }
70
+
71
+ /* makes the font 33% larger relative to the icon container */
72
+ .icon-large:before {
73
+ vertical-align: top;
74
+ font-size: 4/3em;
75
+ }
76
+
77
+ .btn {
78
+ [class^="icon-"],
79
+ [class*=" icon-"] {
80
+ /* keeps button heights with and without icons the same */
81
+ line-height: .9em;
82
+ }
83
+ }
84
+
85
+ li {
86
+ [class^="icon-"],
87
+ [class*=" icon-"] {
88
+ display: inline-block;
89
+ width: 1.25em;
90
+ text-align: center;
91
+ }
92
+ .icon-large[class^="icon-"],
93
+ .icon-large[class*=" icon-"] {
94
+ /* 1.5 increased font size for icon-large * 1.25 width */
95
+ width: 1.5*1.25em;
96
+ }
97
+ }
98
+
99
+ li[class^="icon-"],
100
+ li[class*=" icon-"] {
101
+ margin-left: 0;
102
+ list-style-type: none;
103
+
104
+ &:before {
105
+ text-indent: -2em;
106
+ text-align: center;
107
+ }
108
+ &.icon-large:before {
109
+ text-indent: -4/3em;
110
+ }
111
+ }
112
+
113
+ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
114
+ readers do not read off random characters that represent icons */
115
+ .icon-glass:before { content: "\f000"; }
116
+ .icon-music:before { content: "\f001"; }
117
+ .icon-search:before { content: "\f002"; }
118
+ .icon-envelope:before { content: "\f003"; }
119
+ .icon-heart:before { content: "\f004"; }
120
+ .icon-star:before { content: "\f005"; }
121
+ .icon-star-empty:before { content: "\f006"; }
122
+ .icon-user:before { content: "\f007"; }
123
+ .icon-film:before { content: "\f008"; }
124
+ .icon-th-large:before { content: "\f009"; }
125
+ .icon-th:before { content: "\f00a"; }
126
+ .icon-th-list:before { content: "\f00b"; }
127
+ .icon-ok:before { content: "\f00c"; }
128
+ .icon-remove:before { content: "\f00d"; }
129
+ .icon-zoom-in:before { content: "\f00e"; }
130
+
131
+ .icon-zoom-out:before { content: "\f010"; }
132
+ .icon-off:before { content: "\f011"; }
133
+ .icon-signal:before { content: "\f012"; }
134
+ .icon-cog:before { content: "\f013"; }
135
+ .icon-trash:before { content: "\f014"; }
136
+ .icon-home:before { content: "\f015"; }
137
+ .icon-file:before { content: "\f016"; }
138
+ .icon-time:before { content: "\f017"; }
139
+ .icon-road:before { content: "\f018"; }
140
+ .icon-download-alt:before { content: "\f019"; }
141
+ .icon-download:before { content: "\f01a"; }
142
+ .icon-upload:before { content: "\f01b"; }
143
+ .icon-inbox:before { content: "\f01c"; }
144
+ .icon-play-circle:before { content: "\f01d"; }
145
+ .icon-repeat:before { content: "\f01e"; }
146
+
147
+ /* \f020 is not a valid unicode character. all shifted one down */
148
+ .icon-refresh:before { content: "\f021"; }
149
+ .icon-list-alt:before { content: "\f022"; }
150
+ .icon-lock:before { content: "\f023"; }
151
+ .icon-flag:before { content: "\f024"; }
152
+ .icon-headphones:before { content: "\f025"; }
153
+ .icon-volume-off:before { content: "\f026"; }
154
+ .icon-volume-down:before { content: "\f027"; }
155
+ .icon-volume-up:before { content: "\f028"; }
156
+ .icon-qrcode:before { content: "\f029"; }
157
+ .icon-barcode:before { content: "\f02a"; }
158
+ .icon-tag:before { content: "\f02b"; }
159
+ .icon-tags:before { content: "\f02c"; }
160
+ .icon-book:before { content: "\f02d"; }
161
+ .icon-bookmark:before { content: "\f02e"; }
162
+ .icon-print:before { content: "\f02f"; }
163
+
164
+ .icon-camera:before { content: "\f030"; }
165
+ .icon-font:before { content: "\f031"; }
166
+ .icon-bold:before { content: "\f032"; }
167
+ .icon-italic:before { content: "\f033"; }
168
+ .icon-text-height:before { content: "\f034"; }
169
+ .icon-text-width:before { content: "\f035"; }
170
+ .icon-align-left:before { content: "\f036"; }
171
+ .icon-align-center:before { content: "\f037"; }
172
+ .icon-align-right:before { content: "\f038"; }
173
+ .icon-align-justify:before { content: "\f039"; }
174
+ .icon-list:before { content: "\f03a"; }
175
+ .icon-indent-left:before { content: "\f03b"; }
176
+ .icon-indent-right:before { content: "\f03c"; }
177
+ .icon-facetime-video:before { content: "\f03d"; }
178
+ .icon-picture:before { content: "\f03e"; }
179
+
180
+ .icon-pencil:before { content: "\f040"; }
181
+ .icon-map-marker:before { content: "\f041"; }
182
+ .icon-adjust:before { content: "\f042"; }
183
+ .icon-tint:before { content: "\f043"; }
184
+ .icon-edit:before { content: "\f044"; }
185
+ .icon-share:before { content: "\f045"; }
186
+ .icon-check:before { content: "\f046"; }
187
+ .icon-move:before { content: "\f047"; }
188
+ .icon-step-backward:before { content: "\f048"; }
189
+ .icon-fast-backward:before { content: "\f049"; }
190
+ .icon-backward:before { content: "\f04a"; }
191
+ .icon-play:before { content: "\f04b"; }
192
+ .icon-pause:before { content: "\f04c"; }
193
+ .icon-stop:before { content: "\f04d"; }
194
+ .icon-forward:before { content: "\f04e"; }
195
+
196
+ .icon-fast-forward:before { content: "\f050"; }
197
+ .icon-step-forward:before { content: "\f051"; }
198
+ .icon-eject:before { content: "\f052"; }
199
+ .icon-chevron-left:before { content: "\f053"; }
200
+ .icon-chevron-right:before { content: "\f054"; }
201
+ .icon-plus-sign:before { content: "\f055"; }
202
+ .icon-minus-sign:before { content: "\f056"; }
203
+ .icon-remove-sign:before { content: "\f057"; }
204
+ .icon-ok-sign:before { content: "\f058"; }
205
+ .icon-question-sign:before { content: "\f059"; }
206
+ .icon-info-sign:before { content: "\f05a"; }
207
+ .icon-screenshot:before { content: "\f05b"; }
208
+ .icon-remove-circle:before { content: "\f05c"; }
209
+ .icon-ok-circle:before { content: "\f05d"; }
210
+ .icon-ban-circle:before { content: "\f05e"; }
211
+
212
+ .icon-arrow-left:before { content: "\f060"; }
213
+ .icon-arrow-right:before { content: "\f061"; }
214
+ .icon-arrow-up:before { content: "\f062"; }
215
+ .icon-arrow-down:before { content: "\f063"; }
216
+ .icon-share-alt:before { content: "\f064"; }
217
+ .icon-resize-full:before { content: "\f065"; }
218
+ .icon-resize-small:before { content: "\f066"; }
219
+ .icon-plus:before { content: "\f067"; }
220
+ .icon-minus:before { content: "\f068"; }
221
+ .icon-asterisk:before { content: "\f069"; }
222
+ .icon-exclamation-sign:before { content: "\f06a"; }
223
+ .icon-gift:before { content: "\f06b"; }
224
+ .icon-leaf:before { content: "\f06c"; }
225
+ .icon-fire:before { content: "\f06d"; }
226
+ .icon-eye-open:before { content: "\f06e"; }
227
+
228
+ .icon-eye-close:before { content: "\f070"; }
229
+ .icon-warning-sign:before { content: "\f071"; }
230
+ .icon-plane:before { content: "\f072"; }
231
+ .icon-calendar:before { content: "\f073"; }
232
+ .icon-random:before { content: "\f074"; }
233
+ .icon-comment:before { content: "\f075"; }
234
+ .icon-magnet:before { content: "\f076"; }
235
+ .icon-chevron-up:before { content: "\f077"; }
236
+ .icon-chevron-down:before { content: "\f078"; }
237
+ .icon-retweet:before { content: "\f079"; }
238
+ .icon-shopping-cart:before { content: "\f07a"; }
239
+ .icon-folder-close:before { content: "\f07b"; }
240
+ .icon-folder-open:before { content: "\f07c"; }
241
+ .icon-resize-vertical:before { content: "\f07d"; }
242
+ .icon-resize-horizontal:before { content: "\f07e"; }
243
+
244
+ .icon-bar-chart:before { content: "\f080"; }
245
+ .icon-twitter-sign:before { content: "\f081"; }
246
+ .icon-facebook-sign:before { content: "\f082"; }
247
+ .icon-camera-retro:before { content: "\f083"; }
248
+ .icon-key:before { content: "\f084"; }
249
+ .icon-cogs:before { content: "\f085"; }
250
+ .icon-comments:before { content: "\f086"; }
251
+ .icon-thumbs-up:before { content: "\f087"; }
252
+ .icon-thumbs-down:before { content: "\f088"; }
253
+ .icon-star-half:before { content: "\f089"; }
254
+ .icon-heart-empty:before { content: "\f08a"; }
255
+ .icon-signout:before { content: "\f08b"; }
256
+ .icon-linkedin-sign:before { content: "\f08c"; }
257
+ .icon-pushpin:before { content: "\f08d"; }
258
+ .icon-external-link:before { content: "\f08e"; }
259
+
260
+ .icon-signin:before { content: "\f090"; }
261
+ .icon-trophy:before { content: "\f091"; }
262
+ .icon-github-sign:before { content: "\f092"; }
263
+ .icon-upload-alt:before { content: "\f093"; }
264
+ .icon-lemon:before { content: "\f094"; }
app/view/admin/less/grid.less ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ // Fixed (940px)
2
+ #grid > .core(@gridColumnWidth, @gridGutterWidth);
3
+
4
+ // Fluid (940px)
5
+ #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
app/view/admin/less/hero-unit.less ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // HERO UNIT
2
+ // ---------
3
+
4
+ .hero-unit {
5
+ padding: 60px;
6
+ margin-bottom: 30px;
7
+ background-color: @heroUnitBackground;
8
+ .border-radius(6px);
9
+ h1 {
10
+ margin-bottom: 0;
11
+ font-size: 60px;
12
+ line-height: 1;
13
+ color: @heroUnitHeadingColor;
14
+ letter-spacing: -1px;
15
+ }
16
+ p {
17
+ font-size: 18px;
18
+ font-weight: 200;
19
+ line-height: @baseLineHeight * 1.5;
20
+ color: @heroUnitLeadColor;
21
+ }
22
+ }
app/view/admin/less/mixins.less ADDED
@@ -0,0 +1,614 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Mixins.less
2
+ // Snippets of reusable CSS to develop faster and keep code readable
3
+ // -----------------------------------------------------------------
4
+
5
+
6
+ // UTILITY MIXINS
7
+ // --------------------------------------------------
8
+
9
+ // Clearfix
10
+ // --------
11
+ // For clearing floats like a boss h5bp.com/q
12
+ .clearfix {
13
+ *zoom: 1;
14
+ &:before,
15
+ &:after {
16
+ display: table;
17
+ content: "";
18
+ }
19
+ &:after {
20
+ clear: both;
21
+ }
22
+ }
23
+
24
+ // Webkit-style focus
25
+ // ------------------
26
+ .tab-focus() {
27
+ // Default
28
+ outline: thin dotted #333;
29
+ // Webkit
30
+ outline: 5px auto -webkit-focus-ring-color;
31
+ outline-offset: -2px;
32
+ }
33
+
34
+ // Center-align a block level element
35
+ // ----------------------------------
36
+ .center-block() {
37
+ display: block;
38
+ margin-left: auto;
39
+ margin-right: auto;
40
+ }
41
+
42
+ // IE7 inline-block
43
+ // ----------------
44
+ .ie7-inline-block() {
45
+ *display: inline; /* IE7 inline-block hack */
46
+ *zoom: 1;
47
+ }
48
+
49
+ // IE7 likes to collapse whitespace on either side of the inline-block elements.
50
+ // Ems because we're attempting to match the width of a space character. Left
51
+ // version is for form buttons, which typically come after other elements, and
52
+ // right version is for icons, which come before. Applying both is ok, but it will
53
+ // mean that space between those elements will be .6em (~2 space characters) in IE7,
54
+ // instead of the 1 space in other browsers.
55
+ .ie7-restore-left-whitespace() {
56
+ *margin-left: .3em;
57
+
58
+ &:first-child {
59
+ *margin-left: 0;
60
+ }
61
+ }
62
+
63
+ .ie7-restore-right-whitespace() {
64
+ *margin-right: .3em;
65
+
66
+ &:last-child {
67
+ *margin-left: 0;
68
+ }
69
+ }
70
+
71
+ // Sizing shortcuts
72
+ // -------------------------
73
+ .size(@height: 5px, @width: 5px) {
74
+ width: @width;
75
+ height: @height;
76
+ }
77
+ .square(@size: 5px) {
78
+ .size(@size, @size);
79
+ }
80
+
81
+ // Placeholder text
82
+ // -------------------------
83
+ .placeholder(@color: @placeholderText) {
84
+ :-moz-placeholder {
85
+ color: @color;
86
+ }
87
+ ::-webkit-input-placeholder {
88
+ color: @color;
89
+ }
90
+ }
91
+
92
+ // Text overflow
93
+ // -------------------------
94
+ // Requires inline-block or block for proper styling
95
+ .text-overflow() {
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+
101
+ // New image replacement
102
+ // -------------------------
103
+ // Source: http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
104
+ .hide-text {
105
+ overflow: hidden;
106
+ text-indent: 100%;
107
+ white-space: nowrap;
108
+ }
109
+
110
+
111
+ // FONTS
112
+ // --------------------------------------------------
113
+
114
+ #font {
115
+ #family {
116
+ .serif() {
117
+ font-family: Georgia, "Times New Roman", Times, serif;
118
+ }
119
+ .sans-serif() {
120
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
121
+ }
122
+ .monospace() {
123
+ font-family: Menlo, Monaco, "Courier New", monospace;
124
+ }
125
+ }
126
+ .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
127
+ font-size: @size;
128
+ font-weight: @weight;
129
+ line-height: @lineHeight;
130
+ }
131
+ .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
132
+ #font > #family > .serif;
133
+ #font > .shorthand(@size, @weight, @lineHeight);
134
+ }
135
+ .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
136
+ #font > #family > .sans-serif;
137
+ #font > .shorthand(@size, @weight, @lineHeight);
138
+ }
139
+ .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
140
+ #font > #family > .monospace;
141
+ #font > .shorthand(@size, @weight, @lineHeight);
142
+ }
143
+ }
144
+
145
+
146
+ // FORMS
147
+ // --------------------------------------------------
148
+
149
+ // Block level inputs
150
+ .input-block-level {
151
+ display: block;
152
+ width: 100%;
153
+ min-height: 28px; /* Make inputs at least the height of their button counterpart */
154
+ /* Makes inputs behave like true block-level elements */
155
+ .box-sizing(border-box);
156
+ }
157
+
158
+
159
+ // Mixin for form field states
160
+ .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
161
+ // Set the text color
162
+ > label,
163
+ .help-block,
164
+ .help-inline {
165
+ color: @textColor;
166
+ }
167
+ // Style inputs accordingly
168
+ input,
169
+ select,
170
+ textarea {
171
+ color: @textColor;
172
+ border-color: @borderColor;
173
+ &:focus {
174
+ border-color: darken(@borderColor, 10%);
175
+ .box-shadow(0 0 6px lighten(@borderColor, 20%));
176
+ }
177
+ }
178
+ // Give a small background color for input-prepend/-append
179
+ .input-prepend .add-on,
180
+ .input-append .add-on {
181
+ color: @textColor;
182
+ background-color: @backgroundColor;
183
+ border-color: @textColor;
184
+ }
185
+ }
186
+
187
+
188
+
189
+ // CSS3 PROPERTIES
190
+ // --------------------------------------------------
191
+
192
+ // Border Radius
193
+ .border-radius(@radius: 5px) {
194
+ -webkit-border-radius: @radius;
195
+ -moz-border-radius: @radius;
196
+ border-radius: @radius;
197
+ }
198
+
199
+ // Drop shadows
200
+ .box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) {
201
+ -webkit-box-shadow: @shadow;
202
+ -moz-box-shadow: @shadow;
203
+ box-shadow: @shadow;
204
+ }
205
+
206
+ // Transitions
207
+ .transition(@transition) {
208
+ -webkit-transition: @transition;
209
+ -moz-transition: @transition;
210
+ -ms-transition: @transition;
211
+ -o-transition: @transition;
212
+ transition: @transition;
213
+ }
214
+
215
+ // Transformations
216
+ .rotate(@degrees) {
217
+ -webkit-transform: rotate(@degrees);
218
+ -moz-transform: rotate(@degrees);
219
+ -ms-transform: rotate(@degrees);
220
+ -o-transform: rotate(@degrees);
221
+ transform: rotate(@degrees);
222
+ }
223
+ .scale(@ratio) {
224
+ -webkit-transform: scale(@ratio);
225
+ -moz-transform: scale(@ratio);
226
+ -ms-transform: scale(@ratio);
227
+ -o-transform: scale(@ratio);
228
+ transform: scale(@ratio);
229
+ }
230
+ .translate(@x: 0, @y: 0) {
231
+ -webkit-transform: translate(@x, @y);
232
+ -moz-transform: translate(@x, @y);
233
+ -ms-transform: translate(@x, @y);
234
+ -o-transform: translate(@x, @y);
235
+ transform: translate(@x, @y);
236
+ }
237
+ .skew(@x: 0, @y: 0) {
238
+ -webkit-transform: skew(@x, @y);
239
+ -moz-transform: skew(@x, @y);
240
+ -ms-transform: skew(@x, @y);
241
+ -o-transform: skew(@x, @y);
242
+ transform: skew(@x, @y);
243
+ }
244
+ .translate3d(@x: 0, @y: 0, @z: 0) {
245
+ -webkit-transform: translate(@x, @y, @z);
246
+ -moz-transform: translate(@x, @y, @z);
247
+ -ms-transform: translate(@x, @y, @z);
248
+ -o-transform: translate(@x, @y, @z);
249
+ transform: translate(@x, @y, @z);
250
+ }
251
+
252
+ // Background clipping
253
+ // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
254
+ .background-clip(@clip) {
255
+ -webkit-background-clip: @clip;
256
+ -moz-background-clip: @clip;
257
+ background-clip: @clip;
258
+ }
259
+
260
+ // Background sizing
261
+ .background-size(@size){
262
+ -webkit-background-size: @size;
263
+ -moz-background-size: @size;
264
+ -o-background-size: @size;
265
+ background-size: @size;
266
+ }
267
+
268
+
269
+ // Box sizing
270
+ .box-sizing(@boxmodel) {
271
+ -webkit-box-sizing: @boxmodel;
272
+ -moz-box-sizing: @boxmodel;
273
+ -ms-box-sizing: @boxmodel;
274
+ box-sizing: @boxmodel;
275
+ }
276
+
277
+ // User select
278
+ // For selecting text on the page
279
+ .user-select(@select) {
280
+ -webkit-user-select: @select;
281
+ -moz-user-select: @select;
282
+ -o-user-select: @select;
283
+ user-select: @select;
284
+ }
285
+
286
+ // Resize anything
287
+ .resizable(@direction: both) {
288
+ resize: @direction; // Options: horizontal, vertical, both
289
+ overflow: auto; // Safari fix
290
+ }
291
+
292
+ // CSS3 Content Columns
293
+ .content-columns(@columnCount, @columnGap: @gridColumnGutter) {
294
+ -webkit-column-count: @columnCount;
295
+ -moz-column-count: @columnCount;
296
+ column-count: @columnCount;
297
+ -webkit-column-gap: @columnGap;
298
+ -moz-column-gap: @columnGap;
299
+ column-gap: @columnGap;
300
+ }
301
+
302
+ // Opacity
303
+ .opacity(@opacity: 100) {
304
+ opacity: @opacity / 100;
305
+ filter: ~"alpha(opacity=@{opacity})";
306
+ }
307
+
308
+
309
+
310
+ // BACKGROUNDS
311
+ // --------------------------------------------------
312
+
313
+ // Add an alphatransparency value to any background or border color (via Elyse Holladay)
314
+ #translucent {
315
+ .background(@color: @white, @alpha: 1) {
316
+ background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
317
+ }
318
+ .border(@color: @white, @alpha: 1) {
319
+ border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
320
+ .background-clip(padding-box);
321
+ }
322
+ }
323
+
324
+ // Gradient Bar Colors for buttons and alerts
325
+ .gradientBar(@primaryColor, @secondaryColor) {
326
+ #gradient > .vertical(@primaryColor, @secondaryColor);
327
+ border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
328
+ border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
329
+ }
330
+
331
+ // Gradients
332
+ #gradient {
333
+ .horizontal(@startColor: #555, @endColor: #333) {
334
+ background-color: @endColor;
335
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
336
+ background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
337
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
338
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
339
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
340
+ background-image: linear-gradient(left, @startColor, @endColor); // Le standard
341
+ background-repeat: repeat-x;
342
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
343
+ }
344
+ .vertical(@startColor: #555, @endColor: #333) {
345
+ background-color: mix(@startColor, @endColor, 60%);
346
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
347
+ background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
348
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
349
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
350
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
351
+ background-image: linear-gradient(top, @startColor, @endColor); // The standard
352
+ background-repeat: repeat-x;
353
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
354
+ }
355
+ .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
356
+ background-color: @endColor;
357
+ background-repeat: repeat-x;
358
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
359
+ background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10
360
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
361
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
362
+ background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
363
+ }
364
+ .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
365
+ background-color: mix(@midColor, @endColor, 80%);
366
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
367
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
368
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
369
+ background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
370
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
371
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
372
+ background-repeat: no-repeat;
373
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
374
+ }
375
+ .radial(@innerColor: #555, @outerColor: #333) {
376
+ background-color: @outerColor;
377
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
378
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
379
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
380
+ background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
381
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
382
+ background-repeat: no-repeat;
383
+ }
384
+ .striped(@color, @angle: -45deg) {
385
+ background-color: @color;
386
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
387
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
388
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
389
+ background-image: -ms-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
390
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
391
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
392
+ }
393
+ }
394
+ // Reset filters for IE
395
+ .reset-filter() {
396
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
397
+ }
398
+
399
+
400
+
401
+ // COMPONENT MIXINS
402
+ // --------------------------------------------------
403
+
404
+ // Horizontal dividers
405
+ // -------------------------
406
+ // Dividers (basically an hr) within dropdowns and nav lists
407
+ .nav-divider() {
408
+ height: 1px;
409
+ margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
410
+ overflow: hidden;
411
+ background-color: #e5e5e5;
412
+ border-bottom: 1px solid @white;
413
+
414
+ // IE7 needs a set width since we gave a height. Restricting just
415
+ // to IE7 to keep the 1px left/right space in other browsers.
416
+ // It is unclear where IE is getting the extra space that we need
417
+ // to negative-margin away, but so it goes.
418
+ *width: 100%;
419
+ *margin: -5px 0 5px;
420
+ }
421
+
422
+ // Button backgrounds
423
+ // ------------------
424
+ .buttonBackground(@startColor, @endColor) {
425
+ // gradientBar will set the background to a pleasing blend of these, to support IE<=9
426
+ .gradientBar(@startColor, @endColor);
427
+ .reset-filter();
428
+
429
+ // in these cases the gradient won't cover the background, so we override
430
+ &:hover, &:active, &.active, &.disabled, &[disabled] {
431
+ background-color: @endColor;
432
+ }
433
+
434
+ // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
435
+ &:active,
436
+ &.active {
437
+ background-color: darken(@endColor, 10%) e("\9");
438
+ }
439
+ }
440
+
441
+ // Navbar vertical align
442
+ // -------------------------
443
+ // Vertically center elements in the navbar.
444
+ // Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
445
+ .navbarVerticalAlign(@elementHeight) {
446
+ margin-top: (@navbarHeight - @elementHeight) / 2;
447
+ }
448
+
449
+ // Popover arrows
450
+ // -------------------------
451
+ // For tipsies and popovers
452
+ #popoverArrow {
453
+ .top(@arrowWidth: 5px, @color: @black) {
454
+ bottom: 0;
455
+ left: 50%;
456
+ margin-left: -@arrowWidth;
457
+ border-left: @arrowWidth solid transparent;
458
+ border-right: @arrowWidth solid transparent;
459
+ border-top: @arrowWidth solid @color;
460
+ }
461
+ .left(@arrowWidth: 5px, @color: @black) {
462
+ top: 50%;
463
+ right: 0;
464
+ margin-top: -@arrowWidth;
465
+ border-top: @arrowWidth solid transparent;
466
+ border-bottom: @arrowWidth solid transparent;
467
+ border-left: @arrowWidth solid @color;
468
+ }
469
+ .bottom(@arrowWidth: 5px, @color: @black) {
470
+ top: 0;
471
+ left: 50%;
472
+ margin-left: -@arrowWidth;
473
+ border-left: @arrowWidth solid transparent;
474
+ border-right: @arrowWidth solid transparent;
475
+ border-bottom: @arrowWidth solid @color;
476
+ }
477
+ .right(@arrowWidth: 5px, @color: @black) {
478
+ top: 50%;
479
+ left: 0;
480
+ margin-top: -@arrowWidth;
481
+ border-top: @arrowWidth solid transparent;
482
+ border-bottom: @arrowWidth solid transparent;
483
+ border-right: @arrowWidth solid @color;
484
+ }
485
+ }
486
+
487
+ // Grid System
488
+ // -----------
489
+
490
+ // Centered container element
491
+ .container-fixed() {
492
+ margin-left: auto;
493
+ margin-right: auto;
494
+ .clearfix();
495
+ }
496
+
497
+ // Table columns
498
+ .tableColumns(@columnSpan: 1) {
499
+ float: none; // undo default grid column styles
500
+ width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
501
+ margin-left: 0; // undo default grid column styles
502
+ }
503
+
504
+ // Make a Grid
505
+ // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
506
+ .makeRow() {
507
+ margin-left: @gridGutterWidth * -1;
508
+ .clearfix();
509
+ }
510
+ .makeColumn(@columns: 1) {
511
+ float: left;
512
+ margin-left: @gridGutterWidth;
513
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
514
+ }
515
+
516
+ // The Grid
517
+ #grid {
518
+
519
+ .core (@gridColumnWidth, @gridGutterWidth) {
520
+
521
+ .spanX (@index) when (@index > 0) {
522
+ (~".span@{index}") { .span(@index); }
523
+ .spanX(@index - 1);
524
+ }
525
+ .spanX (0) {}
526
+
527
+ .offsetX (@index) when (@index > 0) {
528
+ (~".offset@{index}") { .offset(@index); }
529
+ .offsetX(@index - 1);
530
+ }
531
+ .offsetX (0) {}
532
+
533
+ .offset (@columns) {
534
+ margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)) + (@gridGutterWidth * 2);
535
+ }
536
+
537
+ .span (@columns) {
538
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
539
+ }
540
+
541
+ .row {
542
+ margin-left: @gridGutterWidth * -1;
543
+ .clearfix();
544
+ }
545
+
546
+ [class*="span"] {
547
+ float: left;
548
+ margin-left: @gridGutterWidth;
549
+ }
550
+
551
+ // Set the container width, and override it for fixed navbars in media queries
552
+ .container,
553
+ .navbar-fixed-top .container,
554
+ .navbar-fixed-bottom .container { .span(@gridColumns); }
555
+
556
+ // generate .spanX and .offsetX
557
+ .spanX (@gridColumns);
558
+ .offsetX (@gridColumns);
559
+
560
+ }
561
+
562
+ .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
563
+
564
+ .spanX (@index) when (@index > 0) {
565
+ (~"> .span@{index}") { .span(@index); }
566
+ .spanX(@index - 1);
567
+ }
568
+ .spanX (0) {}
569
+
570
+ .span (@columns) {
571
+ width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
572
+ }
573
+
574
+ .row-fluid {
575
+ width: 100%;
576
+ .clearfix();
577
+ > [class*="span"] {
578
+ float: left;
579
+ margin-left: @fluidGridGutterWidth;
580
+ }
581
+ > [class*="span"]:first-child {
582
+ margin-left: 0;
583
+ }
584
+
585
+ // generate .spanX
586
+ .spanX (@gridColumns);
587
+ }
588
+
589
+ }
590
+
591
+ .input(@gridColumnWidth, @gridGutterWidth) {
592
+
593
+ .spanX (@index) when (@index > 0) {
594
+ (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
595
+ .spanX(@index - 1);
596
+ }
597
+ .spanX (0) {}
598
+
599
+ .span(@columns) {
600
+ width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
601
+ }
602
+
603
+ input,
604
+ textarea,
605
+ .uneditable-input {
606
+ margin-left: 0; // override margin-left from core grid system
607
+ }
608
+
609
+ // generate .spanX
610
+ .spanX (@gridColumns);
611
+
612
+ }
613
+
614
+ }
app/view/admin/less/navs.less ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // NAVIGATIONS
2
+ // -----------
3
+
4
+
5
+
6
+ // BASE CLASS
7
+ // ----------
8
+
9
+ .nav {
10
+ margin-left: 0;
11
+ margin-bottom: @baseLineHeight;
12
+ list-style: none;
13
+ }
14
+
15
+ // Make links block level
16
+ .nav > li > a {
17
+ display: block;
18
+ }
19
+ .nav > li > a:hover {
20
+ text-decoration: none;
21
+ background-color: @grayLighter;
22
+ }
23
+
24
+ // Nav headers (for dropdowns and lists)
25
+ .nav .nav-header {
26
+ display: block;
27
+ padding: 3px 15px;
28
+ font-size: 11px;
29
+ font-weight: bold;
30
+ line-height: @baseLineHeight;
31
+ color: @grayLight;
32
+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
33
+ text-transform: uppercase;
34
+ }
35
+ // Space them out when they follow another list item (link)
36
+ .nav li + .nav-header {
37
+ margin-top: 9px;
38
+ }
39
+
40
+
41
+ // NAV LIST
42
+ // --------
43
+
44
+ .nav-list {
45
+ padding-left: 15px;
46
+ padding-right: 15px;
47
+ margin-bottom: 0;
48
+ }
49
+ .nav-list > li > a,
50
+ .nav-list .nav-header {
51
+ margin-left: -15px;
52
+ margin-right: -15px;
53
+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
54
+ }
55
+ .nav-list > li > a {
56
+ padding: 3px 15px;
57
+ }
58
+ .nav-list > .active > a,
59
+ .nav-list > .active > a:hover {
60
+ color: @white;
61
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
62
+ background-color: @linkColor;
63
+ }
64
+ .nav-list [class^="icon-"] {
65
+ margin-right: 2px;
66
+ }
67
+ // Dividers (basically an hr) within the dropdown
68
+ .nav-list .divider {
69
+ .nav-divider();
70
+ }
71
+
72
+
73
+
74
+ // TABS AND PILLS
75
+ // -------------
76
+
77
+ // Common styles
78
+ .nav-tabs,
79
+ .nav-pills {
80
+ .clearfix();
81
+ }
82
+ .nav-tabs > li,
83
+ .nav-pills > li {
84
+ float: left;
85
+ }
86
+ .nav-tabs > li > a,
87
+ .nav-pills > li > a {
88
+ padding-right: 12px;
89
+ padding-left: 12px;
90
+ margin-right: 2px;
91
+ line-height: 14px; // keeps the overall height an even number
92
+ }
93
+
94
+ // TABS
95
+ // ----
96
+
97
+ // Give the tabs something to sit on
98
+ .nav-tabs {
99
+ border-bottom: 1px solid #ddd;
100
+ }
101
+
102
+ // Make the list-items overlay the bottom border
103
+ .nav-tabs > li {
104
+ margin-bottom: -1px;
105
+ }
106
+
107
+ // Actual tabs (as links)
108
+ .nav-tabs > li > a {
109
+ padding-top: 8px;
110
+ padding-bottom: 8px;
111
+ line-height: @baseLineHeight;
112
+ border: 1px solid transparent;
113
+ .border-radius(4px 4px 0 0);
114
+ &:hover {
115
+ border-color: @grayLighter @grayLighter #ddd;
116
+ }
117
+ }
118
+ // Active state, and it's :hover to override normal :hover
119
+ .nav-tabs > .active > a,
120
+ .nav-tabs > .active > a:hover {
121
+ color: @gray;
122
+ background-color: @white;
123
+ border: 1px solid #ddd;
124
+ border-bottom-color: transparent;
125
+ cursor: default;
126
+ }
127
+
128
+ // PILLS
129
+ // -----
130
+
131
+ // Links rendered as pills
132
+ .nav-pills > li > a {
133
+ padding-top: 8px;
134
+ padding-bottom: 8px;
135
+ margin-top: 2px;
136
+ margin-bottom: 2px;
137
+ .border-radius(5px);
138
+ }
139
+
140
+ // Active state
141
+ .nav-pills > .active > a,
142
+ .nav-pills > .active > a:hover {
143
+ color: @white;
144
+ background-color: @linkColor;
145
+ }
146
+
147
+
148
+
149
+ // STACKED NAV
150
+ // -----------
151
+
152
+ // Stacked tabs and pills
153
+ .nav-stacked > li {
154
+ float: none;
155
+ }
156
+ .nav-stacked > li > a {
157
+ margin-right: 0; // no need for the gap between nav items
158
+ }
159
+
160
+ // Tabs
161
+ .nav-tabs.nav-stacked {
162
+ border-bottom: 0;
163
+ }
164
+ .nav-tabs.nav-stacked > li > a {
165
+ border: 1px solid #ddd;
166
+ .border-radius(0);
167
+ }
168
+ .nav-tabs.nav-stacked > li:first-child > a {
169
+ .border-radius(4px 4px 0 0);
170
+ }
171
+ .nav-tabs.nav-stacked > li:last-child > a {
172
+ .border-radius(0 0 4px 4px);
173
+ }
174
+ .nav-tabs.nav-stacked > li > a:hover {
175
+ border-color: #ddd;
176
+ z-index: 2;
177
+ }
178
+
179
+ // Pills
180
+ .nav-pills.nav-stacked > li > a {
181
+ margin-bottom: 3px;
182
+ }
183
+ .nav-pills.nav-stacked > li:last-child > a {
184
+ margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
185
+ }
186
+
187
+
188
+
189
+ // DROPDOWNS
190
+ // ---------
191
+
192
+ // Position the menu
193
+ .nav-tabs .dropdown-menu,
194
+ .nav-pills .dropdown-menu {
195
+ margin-top: 1px;
196
+ border-width: 1px;
197
+ }
198
+ .nav-pills .dropdown-menu {
199
+ .border-radius(4px);
200
+ }
201
+
202
+ // Default dropdown links
203
+ // -------------------------
204
+ // Make carets use linkColor to start
205
+ .nav-tabs .dropdown-toggle .caret,
206
+ .nav-pills .dropdown-toggle .caret {
207
+ border-top-color: @linkColor;
208
+ border-bottom-color: @linkColor;
209
+ margin-top: 6px;
210
+ }
211
+ .nav-tabs .dropdown-toggle:hover .caret,
212
+ .nav-pills .dropdown-toggle:hover .caret {
213
+ border-top-color: @linkColorHover;
214
+ border-bottom-color: @linkColorHover;
215
+ }
216
+
217
+ // Active dropdown links
218
+ // -------------------------
219
+ .nav-tabs .active .dropdown-toggle .caret,
220
+ .nav-pills .active .dropdown-toggle .caret {
221
+ border-top-color: @grayDark;
222
+ border-bottom-color: @grayDark;
223
+ }
224
+
225
+ // Active:hover dropdown links
226
+ // -------------------------
227
+ .nav > .dropdown.active > a:hover {
228
+ color: @black;
229
+ cursor: pointer;
230
+ }
231
+
232
+ // Open dropdowns
233
+ // -------------------------
234
+ .nav-tabs .open .dropdown-toggle,
235
+ .nav-pills .open .dropdown-toggle,
236
+ .nav > .open.active > a:hover {
237
+ color: @white;
238
+ background-color: @grayLight;
239
+ border-color: @grayLight;
240
+ }
241
+ .nav .open .caret,
242
+ .nav .open.active .caret,
243
+ .nav .open a:hover .caret {
244
+ border-top-color: @white;
245
+ border-bottom-color: @white;
246
+ .opacity(100);
247
+ }
248
+
249
+ // Dropdowns in stacked tabs
250
+ .tabs-stacked .open > a:hover {
251
+ border-color: @grayLight;
252
+ }
253
+
254
+
255
+
256
+ // TABBABLE
257
+ // --------
258
+
259
+
260
+ // COMMON STYLES
261
+ // -------------
262
+
263
+ // Clear any floats
264
+ .tabbable {
265
+ .clearfix();
266
+ }
267
+ .tab-content {
268
+ display: table; // prevent content from running below tabs
269
+ width: 100%;
270
+ }
271
+
272
+ // Remove border on bottom, left, right
273
+ .tabs-below .nav-tabs,
274
+ .tabs-right .nav-tabs,
275
+ .tabs-left .nav-tabs {
276
+ border-bottom: 0;
277
+ }
278
+
279
+ // Show/hide tabbable areas
280
+ .tab-content > .tab-pane,
281
+ .pill-content > .pill-pane {
282
+ display: none;
283
+ }
284
+ .tab-content > .active,
285
+ .pill-content > .active {
286
+ display: block;
287
+ }
288
+
289
+
290
+ // BOTTOM
291
+ // ------
292
+
293
+ .tabs-below .nav-tabs {
294
+ border-top: 1px solid #ddd;
295
+ }
296
+ .tabs-below .nav-tabs > li {
297
+ margin-top: -1px;
298
+ margin-bottom: 0;
299
+ }
300
+ .tabs-below .nav-tabs > li > a {
301
+ .border-radius(0 0 4px 4px);
302
+ &:hover {
303
+ border-bottom-color: transparent;
304
+ border-top-color: #ddd;
305
+ }
306
+ }
307
+ .tabs-below .nav-tabs .active > a,
308
+ .tabs-below .nav-tabs .active > a:hover {
309
+ border-color: transparent #ddd #ddd #ddd;
310
+ }
311
+
312
+ // LEFT & RIGHT
313
+ // ------------
314
+
315
+ // Common styles
316
+ .tabs-left .nav-tabs > li,
317
+ .tabs-right .nav-tabs > li {
318
+ float: none;
319
+ }
320
+ .tabs-left .nav-tabs > li > a,
321
+ .tabs-right .nav-tabs > li > a {
322
+ min-width: 74px;
323
+ margin-right: 0;
324
+ margin-bottom: 3px;
325
+ }
326
+
327
+ // Tabs on the left
328
+ .tabs-left .nav-tabs {
329
+ float: left;
330
+ margin-right: 19px;
331
+ border-right: 1px solid #ddd;
332
+ }
333
+ .tabs-left .nav-tabs > li > a {
334
+ margin-right: -1px;
335
+ .border-radius(4px 0 0 4px);
336
+ }
337
+ .tabs-left .nav-tabs > li > a:hover {
338
+ border-color: @grayLighter #ddd @grayLighter @grayLighter;
339
+ }
340
+ .tabs-left .nav-tabs .active > a,
341
+ .tabs-left .nav-tabs .active > a:hover {
342
+ border-color: #ddd transparent #ddd #ddd;
343
+ *border-right-color: @white;
344
+ }
345
+
346
+ // Tabs on the right
347
+ .tabs-right .nav-tabs {
348
+ float: right;
349
+ margin-left: 19px;
350
+ border-left: 1px solid #ddd;
351
+ }
352
+ .tabs-right .nav-tabs > li > a {
353
+ margin-left: -1px;
354
+ .border-radius(0 4px 4px 0);
355
+ }
356
+ .tabs-right .nav-tabs > li > a:hover {
357
+ border-color: @grayLighter @grayLighter @grayLighter #ddd;
358
+ }
359
+ .tabs-right .nav-tabs .active > a,
360
+ .tabs-right .nav-tabs .active > a:hover {
361
+ border-color: #ddd #ddd #ddd transparent;
362
+ *border-left-color: @white;
363
+ }
app/view/admin/less/reset.less ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Reset.less
2
+ // Adapted from Normalize.css http://github.com/necolas/normalize.css
3
+ // ------------------------------------------------------------------------
4
+
5
+ // Display in IE6-9 and FF3
6
+ // -------------------------
7
+
8
+ article,
9
+ aside,
10
+ details,
11
+ figcaption,
12
+ figure,
13
+ footer,
14
+ header,
15
+ hgroup,
16
+ nav,
17
+ section {
18
+ display: block;
19
+ }
20
+
21
+ // Display block in IE6-9 and FF3
22
+ // -------------------------
23
+
24
+ audio,
25
+ canvas,
26
+ video {
27
+ display: inline-block;
28
+ *display: inline;
29
+ *zoom: 1;
30
+ }
31
+
32
+ // Prevents modern browsers from displaying 'audio' without controls
33
+ // -------------------------
34
+
35
+ audio:not([controls]) {
36
+ display: none;
37
+ }
38
+
39
+ // Base settings
40
+ // -------------------------
41
+
42
+ html {
43
+ font-size: 100%;
44
+ -webkit-text-size-adjust: 100%;
45
+ -ms-text-size-adjust: 100%;
46
+ }
47
+ // Focus states
48
+ a:focus {
49
+ .tab-focus();
50
+ }
51
+ // Hover & Active
52
+ a:hover,
53
+ a:active {
54
+ outline: 0;
55
+ }
56
+
57
+ // Prevents sub and sup affecting line-height in all browsers
58
+ // -------------------------
59
+
60
+ sub,
61
+ sup {
62
+ position: relative;
63
+ font-size: 75%;
64
+ line-height: 0;
65
+ vertical-align: baseline;
66
+ }
67
+ sup {
68
+ top: -0.5em;
69
+ }
70
+ sub {
71
+ bottom: -0.25em;
72
+ }
73
+
74
+ // Img border in a's and image quality
75
+ // -------------------------
76
+
77
+ img {
78
+ height: auto;
79
+ border: 0;
80
+ -ms-interpolation-mode: bicubic;
81
+ vertical-align: middle;
82
+ }
83
+
84
+ // Forms
85
+ // -------------------------
86
+
87
+ // Font size in all browsers, margin changes, misc consistency
88
+ button,
89
+ input,
90
+ select,
91
+ textarea {
92
+ margin: 0;
93
+ font-size: 100%;
94
+ vertical-align: middle;
95
+ }
96
+ button,
97
+ input {
98
+ *overflow: visible; // Inner spacing ie IE6/7
99
+ line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
100
+ }
101
+ button::-moz-focus-inner,
102
+ input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
103
+ padding: 0;
104
+ border: 0;
105
+ }
106
+ button,
107
+ input[type="button"],
108
+ input[type="reset"],
109
+ input[type="submit"] {
110
+ cursor: pointer; // Cursors on all buttons applied consistently
111
+ -webkit-appearance: button; // Style clickable inputs in iOS
112
+ }
113
+ input[type="search"] { // Appearance in Safari/Chrome
114
+ -webkit-appearance: textfield;
115
+ -webkit-box-sizing: content-box;
116
+ -moz-box-sizing: content-box;
117
+ box-sizing: content-box;
118
+ }
119
+ input[type="search"]::-webkit-search-decoration,
120
+ input[type="search"]::-webkit-search-cancel-button {
121
+ -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
122
+ }
123
+ textarea {
124
+ overflow: auto; // Remove vertical scrollbar in IE6-9
125
+ vertical-align: top; // Readability and alignment cross-browser
126
+ }
app/view/admin/less/scaffolding.less ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Scaffolding
2
+ // Basic and global styles for generating a grid system, structural layout, and page templates
3
+ // -------------------------------------------------------------------------------------------
4
+
5
+
6
+ // Body reset
7
+ // ----------
8
+
9
+ body {
10
+ margin: 0;
11
+ font-family: @baseFontFamily;
12
+ font-size: @baseFontSize;
13
+ line-height: @baseLineHeight;
14
+ color: @textColor;
15
+ background-color: @bodyBackground;
16
+ }
17
+
18
+
19
+ // Links
20
+ // -----
21
+
22
+ a {
23
+ color: @linkColor;
24
+ text-decoration: none;
25
+ }
26
+ a:hover {
27
+ color: @linkColorHover;
28
+ text-decoration: underline;
29
+ }
app/view/admin/less/type.less ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Typography.less
2
+ // Headings, body text, lists, code, and more for a versatile and durable typography system
3
+ // ----------------------------------------------------------------------------------------
4
+
5
+
6
+ // BODY TEXT
7
+ // ---------
8
+
9
+ p {
10
+ margin: 0 0 @baseLineHeight / 2;
11
+ font-family: @baseFontFamily;
12
+ font-size: @baseFontSize;
13
+ line-height: @baseLineHeight;
14
+ small {
15
+ font-size: @baseFontSize - 2;
16
+ color: @grayLight;
17
+ }
18
+ }
19
+ .lead {
20
+ margin-bottom: @baseLineHeight;
21
+ font-size: 20px;
22
+ font-weight: 200;
23
+ line-height: @baseLineHeight * 1.5;
24
+ }
25
+
26
+ // HEADINGS
27
+ // --------
28
+
29
+ h1, h2, h3, h4, h5, h6 {
30
+ margin: 0;
31
+ font-family: @headingsFontFamily;
32
+ font-weight: @headingsFontWeight;
33
+ color: @headingsColor;
34
+ text-rendering: optimizelegibility; // Fix the character spacing for headings
35
+ small {
36
+ font-weight: normal;
37
+ color: @grayLight;
38
+ }
39
+ }
40
+ h1 {
41
+ font-size: 30px;
42
+ line-height: @baseLineHeight * 2;
43
+ small {
44
+ font-size: 18px;
45
+ }
46
+ }
47
+ h2 {
48
+ font-size: 24px;
49
+ line-height: @baseLineHeight * 2;
50
+ small {
51
+ font-size: 18px;
52
+ }
53
+ }
54
+ h3 {
55
+ line-height: @baseLineHeight * 1.5;
56
+ font-size: 18px;
57
+ small {
58
+ font-size: 14px;
59
+ }
60
+ }
61
+ h4, h5, h6 {
62
+ line-height: @baseLineHeight;
63
+ }
64
+ h4 {
65
+ font-size: 14px;
66
+ small {
67
+ font-size: 12px;
68
+ }
69
+ }
70
+ h5 {
71
+ font-size: 12px;
72
+ }
73
+ h6 {
74
+ font-size: 11px;
75
+ color: @grayLight;
76
+ text-transform: uppercase;
77
+ }
78
+
79
+ // Page header
80
+ .page-header {
81
+ padding-bottom: @baseLineHeight - 1;
82
+ margin: @baseLineHeight 0;
83
+ border-bottom: 1px solid @grayLighter;
84
+ }
85
+ .page-header h1 {
86
+ line-height: 1;
87
+ }
88
+
89
+
90
+
91
+ // LISTS
92
+ // -----
93
+
94
+ // Unordered and Ordered lists
95
+ ul, ol {
96
+ padding: 0;
97
+ margin: 0 0 @baseLineHeight / 2 25px;
98
+ }
99
+ ul ul,
100
+ ul ol,
101
+ ol ol,
102
+ ol ul {
103
+ margin-bottom: 0;
104
+ }
105
+ ul {
106
+ list-style: disc;
107
+ }
108
+ ol {
109
+ list-style: decimal;
110
+ }
111
+ li {
112
+ line-height: @baseLineHeight;
113
+ }
114
+ ul.unstyled,
115
+ ol.unstyled {
116
+ margin-left: 0;
117
+ list-style: none;
118
+ }
119
+
120
+ // Description Lists
121
+ dl {
122
+ margin-bottom: @baseLineHeight;
123
+ }
124
+ dt,
125
+ dd {
126
+ line-height: @baseLineHeight;
127
+ }
128
+ dt {
129
+ font-weight: bold;
130
+ line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug
131
+ }
132
+ dd {
133
+ margin-left: @baseLineHeight / 2;
134
+ }
135
+ // Horizontal layout (like forms)
136
+ .dl-horizontal {
137
+ dt {
138
+ float: left;
139
+ clear: left;
140
+ width: 120px;
141
+ text-align: right;
142
+ }
143
+ dd {
144
+ margin-left: 130px;
145
+ }
146
+ }
147
+
148
+ // MISC
149
+ // ----
150
+
151
+ // Horizontal rules
152
+ hr {
153
+ margin: @baseLineHeight 0;
154
+ border: 0;
155
+ border-top: 1px solid @hrBorder;
156
+ border-bottom: 1px solid @white;
157
+ }
158
+
159
+ // Emphasis
160
+ strong {
161
+ font-weight: bold;
162
+ }
163
+ em {
164
+ font-style: italic;
165
+ }
166
+ .muted {
167
+ color: @grayLight;
168
+ }
169
+
170
+ // Abbreviations and acronyms
171
+ abbr[title] {
172
+ border-bottom: 1px dotted #ddd;
173
+ cursor: help;
174
+ }
175
+ abbr.initialism {
176
+ font-size: 90%;
177
+ text-transform: uppercase;
178
+ }
179
+
180
+ // Blockquotes
181
+ blockquote {
182
+ padding: 0 0 0 15px;
183
+ margin: 0 0 @baseLineHeight;
184
+ border-left: 5px solid @grayLighter;
185
+ p {
186
+ margin-bottom: 0;
187
+ #font > .shorthand(16px,300,@baseLineHeight * 1.25);
188
+ }
189
+ small {
190
+ display: block;
191
+ line-height: @baseLineHeight;
192
+ color: @grayLight;
193
+ &:before {
194
+ content: '\2014 \00A0';
195
+ }
196
+ }
197
+
198
+ // Float right with text-align: right
199
+ &.pull-right {
200
+ float: right;
201
+ padding-left: 0;
202
+ padding-right: 15px;
203
+ border-left: 0;
204
+ border-right: 5px solid @grayLighter;
205
+ p,
206
+ small {
207
+ text-align: right;
208
+ }
209
+ }
210
+ }
211
+
212
+ // Quotes
213
+ q:before,
214
+ q:after,
215
+ blockquote:before,
216
+ blockquote:after {
217
+ content: "";
218
+ }
219
+
220
+ // Addresses
221
+ address {
222
+ display: block;
223
+ margin-bottom: @baseLineHeight;
224
+ line-height: @baseLineHeight;
225
+ font-style: normal;
226
+ }
227
+
228
+ // Misc
229
+ small {
230
+ font-size: 100%;
231
+ }
232
+ cite {
233
+ font-style: normal;
234
+ }
app/view/admin/less/utilities.less ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // UTILITY CLASSES
2
+ // ---------------
3
+
4
+ // Quick floats
5
+ .pull-right {
6
+ float: right;
7
+ }
8
+ .pull-left {
9
+ float: left;
10
+ }
11
+
12
+ // Toggling content
13
+ .hide {
14
+ display: none;
15
+ }
16
+ .show {
17
+ display: block;
18
+ }
19
+
20
+ // Visibility
21
+ .invisible {
22
+ visibility: hidden;
23
+ }
app/view/admin/less/variables.less ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Variables.less
2
+ // Variables to customize the look and feel of Bootstrap
3
+ // -----------------------------------------------------
4
+
5
+
6
+
7
+ // GLOBAL VALUES
8
+ // --------------------------------------------------
9
+
10
+
11
+ // Grays
12
+ // -------------------------
13
+ @black: #000;
14
+ @grayDarker: #222;
15
+ @grayDark: #333;
16
+ @gray: #555;
17
+ @grayLight: #999;
18
+ @grayLighter: #eee;
19
+ @white: #fff;
20
+
21
+
22
+ // Accent colors
23
+ // -------------------------
24
+ @blue: #269DD9;
25
+ @blueDark: #0974AA;
26
+ @teal: #3A77A6;
27
+ @tealDark: #135486;
28
+ @turquoise: #47c3ce;
29
+ @green: #60AC39;
30
+ @greenDark: saturate(darken(@green, 10%), 10%);
31
+ @red: #F05C4C;
32
+ @yellow: #fdcc46;
33
+ @orange: #E08652;
34
+ @pink: #f54365;
35
+ @purple: #532b81;
36
+
37
+
38
+ // Scaffolding
39
+ // -------------------------
40
+ @bodyBackground: @white;
41
+ @textColor: @grayDark;
42
+
43
+
44
+ // Links
45
+ // -------------------------
46
+ @linkColor: @greenDark;
47
+ @linkColorHover: darken(@linkColor, 15%);
48
+
49
+
50
+ // Typography
51
+ // -------------------------
52
+ @baseFontSize: 13px;
53
+ @baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
54
+ @baseLineHeight: 18px;
55
+ @altFontFamily: Georgia, "Times New Roman", Times, serif;
56
+
57
+ @headingsFontFamily: 'Droid Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
58
+ @headingsFontWeight: bold;
59
+ @headingsColor: @tealDark;
60
+
61
+
62
+ // Tables
63
+ // -------------------------
64
+ @tableBackground: transparent; // overall background-color
65
+ @tableBackgroundAccent: #f9f9f9; // for striping
66
+ @tableBackgroundHover: #f5f5f5; // for hover
67
+ @tableBorder: #ddd; // table and cell border
68
+
69
+
70
+ // Buttons
71
+ // -------------------------
72
+ @btnBackground: @white;
73
+ @btnBackgroundHighlight: darken(@white, 10%);
74
+ @btnBorder: darken(@white, 20%);
75
+
76
+ @btnPrimaryBackground: lighten(@green, 5%);
77
+ @btnPrimaryBackgroundHighlight: darken(spin(@btnPrimaryBackground, 15%), 10%);
78
+
79
+ @btnInfoBackground: #5bc0de;
80
+ @btnInfoBackgroundHighlight: #2f96b4;
81
+
82
+ @btnSuccessBackground: #62c462;
83
+ @btnSuccessBackgroundHighlight: #51a351;
84
+
85
+ @btnWarningBackground: lighten(@orange, 15%);
86
+ @btnWarningBackgroundHighlight: @orange;
87
+
88
+ @btnDangerBackground: #ee5f5b;
89
+ @btnDangerBackgroundHighlight: #bd362f;
90
+
91
+ @btnInverseBackground: @gray;
92
+ @btnInverseBackgroundHighlight: @grayDarker;
93
+
94
+
95
+ // Forms
96
+ // -------------------------
97
+ @inputBackground: @white;
98
+ @inputBorder: #ccc;
99
+ @inputDisabledBackground: @grayLighter;
100
+
101
+
102
+ // Dropdowns
103
+ // -------------------------
104
+ @dropdownBackground: @white;
105
+ @dropdownBorder: rgba(0,0,0,.2);
106
+ @dropdownLinkColor: @grayDark;
107
+ @dropdownLinkColorHover: @white;
108
+ @dropdownLinkBackgroundHover: @linkColor;
109
+
110
+
111
+
112
+
113
+ // COMPONENT VARIABLES
114
+ // --------------------------------------------------
115
+
116
+ // Z-index master list
117
+ // -------------------------
118
+ // Used for a bird's eye view of components dependent on the z-axis
119
+ // Try to avoid customizing these :)
120
+ @zindexDropdown: 1000;
121
+ @zindexPopover: 1010;
122
+ @zindexTooltip: 1020;
123
+ @zindexFixedNavbar: 1030;
124
+ @zindexModalBackdrop: 1040;
125
+ @zindexModal: 1050;
126
+
127
+
128
+ // Sprite icons path
129
+ // -------------------------
130
+ @iconSpritePath: "../img/glyphicons-halflings.png";
131
+ @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
132
+
133
+
134
+ // Input placeholder text color
135
+ // -------------------------
136
+ @placeholderText: @grayLight;
137
+
138
+
139
+ // Hr border color
140
+ // -------------------------
141
+ @hrBorder: @grayLighter;
142
+
143
+
144
+ // Navbar
145
+ // -------------------------
146
+ @navbarHeight: 40px;
147
+ @navbarBackground: @grayDarker;
148
+ @navbarBackgroundHighlight: @grayDark;
149
+
150
+ @navbarText: @grayLight;
151
+ @navbarLinkColor: @grayLight;
152
+ @navbarLinkColorHover: @white;
153
+ @navbarLinkColorActive: @navbarLinkColorHover;
154
+ @navbarLinkBackgroundHover: transparent;
155
+ @navbarLinkBackgroundActive: @navbarBackground;
156
+
157
+ @navbarSearchBackground: lighten(@navbarBackground, 25%);
158
+ @navbarSearchBackgroundFocus: @white;
159
+ @navbarSearchBorder: darken(@navbarSearchBackground, 30%);
160
+ @navbarSearchPlaceholderColor: #ccc;
161
+
162
+
163
+ // Hero unit
164
+ // -------------------------
165
+ @heroUnitBackground: @grayLighter;
166
+ @heroUnitHeadingColor: inherit;
167
+ @heroUnitLeadColor: inherit;
168
+
169
+
170
+ // Form states and alerts
171
+ // -------------------------
172
+ @warningText: #c09853;
173
+ @warningBackground: #fcf8e3;
174
+ @warningBorder: darken(spin(@warningBackground, -10), 3%);
175
+
176
+ @errorText: #b94a48;
177
+ @errorBackground: #f2dede;
178
+ @errorBorder: darken(spin(@errorBackground, -10), 3%);
179
+
180
+ @successText: #468847;
181
+ @successBackground: #dff0d8;
182
+ @successBorder: darken(spin(@successBackground, -10), 5%);
183
+
184
+ @infoText: #3a87ad;
185
+ @infoBackground: #d9edf7;
186
+ @infoBorder: darken(spin(@infoBackground, -10), 7%);
187
+
188
+
189
+
190
+
191
+ // GRID
192
+ // --------------------------------------------------
193
+
194
+ // Default 940px grid
195
+ // -------------------------
196
+ @gridColumns: 12;
197
+ @gridColumnWidth: 60px;
198
+ @gridGutterWidth: 20px;
199
+ @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
200
+
201
+
202
+ // Fluid grid
203
+ // -------------------------
204
+ @fluidGridColumnWidth: 6.382978723%;
205
+ @fluidGridGutterWidth: 2.127659574%;
app/view/{on_the_select.php → admin/on_the_select.php} RENAMED
File without changes
app/view/{row_daily.php → admin/row_daily.php} RENAMED
File without changes
app/view/{row_monthly.php → admin/row_monthly.php} RENAMED
File without changes
app/view/{row_weekly.php → admin/row_weekly.php} RENAMED
File without changes
app/view/{row_yearly.php → admin/row_yearly.php} RENAMED
File without changes
app/view/{save_successful.php → admin/save_successful.php} RENAMED
File without changes
app/view/{settings.php → admin/settings.php} RENAMED
@@ -2,7 +2,7 @@
2
 
3
  <?php screen_icon(); ?>
4
 
5
- <h2><?php _e( 'All-in-one Event Calendar', AI1EC_PLUGIN_NAME ) ?></h2>
6
 
7
  <div id="poststuff">
8
 
2
 
3
  <?php screen_icon(); ?>
4
 
5
+ <h2><?php echo $title; ?></h2>
6
 
7
  <div id="poststuff">
8
 
app/view/{subscription_button.php → admin/subscription_button.php} RENAMED
File without changes
app/view/agenda-widget-form.php DELETED
@@ -1,69 +0,0 @@
1
- <p>
2
- <label for="<?php echo $title['id'] ?>"><?php _e( 'Title:', AI1EC_PLUGIN_NAME ) ?></label>
3
- <input class="widefat" id="<?php echo $title['id'] ?>" name="<?php echo $title['name'] ?>" type="text" value="<?php echo $title['value'] ?>" />
4
- </p>
5
- <p>
6
- <label for="<?php echo $events_per_page['id'] ?>"><?php _e( 'Number of events to show:', AI1EC_PLUGIN_NAME ) ?></label>
7
- <input id="<?php echo $events_per_page['id'] ?>" name="<?php echo $events_per_page['name'] ?>" type="text" size="3" value="<?php echo $events_per_page['value'] ?>" />
8
- </p>
9
- <p class="ai1ec-limit-by-container">
10
- Limit to:
11
- <br />
12
- <!-- Limit by Category -->
13
- <input id="<?php echo $limit_by_cat['id'] ?>" class="ai1ec-limit-by-cat" name="<?php echo $limit_by_cat['name'] ?>" type="checkbox" value="1" <?php if( $limit_by_cat['value'] ) echo 'checked="checked"' ?> />
14
- <label for="<?php echo $limit_by_cat['id'] ?>"><?php _e( 'Events with these <strong>Categories</strong>', AI1EC_PLUGIN_NAME ) ?></label>
15
- </p>
16
- <div class="ai1ec-limit-by-options-container" <?php if( ! $limit_by_cat['value'] ) { ?> style="display: none;" <?php } ?>>
17
- <!-- Limit by Category Select box -->
18
- <select id="<?php echo $event_cat_ids['id'] ?>" class="ai1ec-widget-cat-ids" name="<?php echo $event_cat_ids['name'] ?>[]" size="5" multiple="multiple">
19
- <?php foreach( $event_cat_ids['options'] as $event_cat ): ?>
20
- <option value="<?php echo $event_cat->term_id; ?>"<?php if( in_array( $event_cat->term_id, $event_cat_ids['value'] ) ) { ?> selected="selected"<?php } ?>><?php echo $event_cat->name; ?></option>
21
- <?php endforeach ?>
22
- <?php if( count( $event_cat_ids['options'] ) == 0 ) : ?>
23
- <option disabled="disabled"><?php _e( 'No categories found.', AI1EC_PLUGIN_NAME ) ?></option>
24
- <?php endif ?>
25
- </select>
26
- </div>
27
- <p class="ai1ec-limit-by-container">
28
- <!-- Limit by Tag -->
29
- <input id="<?php echo $limit_by_tag['id'] ?>" class="ai1ec-limit-by-tag" name="<?php echo $limit_by_tag['name'] ?>" type="checkbox" value="1" <?php if( $limit_by_tag['value'] ) echo 'checked="checked"' ?> />
30
- <label for="<?php echo $limit_by_tag['id'] ?>"><?php _e( '<strong>Or</strong> events with these <strong>Tags</strong>', AI1EC_PLUGIN_NAME ) ?></label>
31
- </p>
32
- <div class="ai1ec-limit-by-options-container" <?php if( ! $limit_by_tag['value'] ) { ?> style="display: none;" <?php } ?>>
33
- <!-- Limit by Tag Select box -->
34
- <select id="<?php echo $event_tag_ids['id'] ?>" class="ai1ec-widget-tag-ids" name="<?php echo $event_tag_ids['name'] ?>[]" size="5" multiple="multiple">
35
- <?php foreach( $event_tag_ids['options'] as $event_tag ): ?>
36
- <option value="<?php echo $event_tag->term_id; ?>"<?php if( in_array( $event_tag->term_id, $event_tag_ids['value'] ) ) { ?> selected="selected"<?php } ?>><?php echo $event_tag->name; ?></option>
37
- <?php endforeach ?>
38
- <?php if( count( $event_tag_ids['options'] ) == 0 ) : ?>
39
- <option disabled="disabled"><?php _e( 'No tags found.', AI1EC_PLUGIN_NAME ) ?></option>
40
- <?php endif ?>
41
- </select>
42
- </div>
43
- <p class="ai1ec-limit-by-container">
44
- <!-- Limit by Event -->
45
- <input id="<?php echo $limit_by_post['id'] ?>" class="ai1ec-limit-by-event" name="<?php echo $limit_by_post['name'] ?>" type="checkbox" value="1" <?php if( $limit_by_post['value'] ) echo 'checked="checked"' ?> />
46
- <label for="<?php echo $limit_by_post['id'] ?>"><?php _e( '<strong>Or</strong> any of these <strong>Events</strong>', AI1EC_PLUGIN_NAME ) ?></label>
47
- </p>
48
- <div class="ai1ec-limit-by-options-container" <?php if( ! $limit_by_post['value'] ) { ?> style="display: none;" <?php } ?>>
49
- <!-- Limit by Event Select box -->
50
- <select id="<?php echo $event_post_ids['id'] ?>" class="ai1ec-widget-event-ids" name="<?php echo $event_post_ids['name'] ?>[]" size="5" multiple="multiple">
51
- <?php foreach( $event_post_ids['options'] as $event_post ): ?>
52
- <option value="<?php echo $event_post->ID; ?>"<?php if( in_array( $event_post->ID, $event_post_ids['value'] ) ) { ?> selected="selected"<?php } ?>><?php echo $event_post->post_title; ?></option>
53
- <?php endforeach ?>
54
- <?php if( count( $event_post_ids['options'] ) == 0 ) : ?>
55
- <option disabled="disabled"><?php _e( 'No events found.', AI1EC_PLUGIN_NAME ) ?></option>
56
- <?php endif ?>
57
- </select>
58
- </div>
59
- <br />
60
- <p>
61
- <input id="<?php echo $show_calendar_button['id'] ?>" name="<?php echo $show_calendar_button['name'] ?>" type="checkbox" value="1" <?php if( $show_calendar_button['value'] ) echo 'checked="checked"' ?> />
62
- <label for="<?php echo $show_calendar_button['id'] ?>"><?php _e( 'Show <strong>View Calendar</strong> button', AI1EC_PLUGIN_NAME ) ?></label>
63
- <br />
64
- <input id="<?php echo $show_subscribe_buttons['id'] ?>" name="<?php echo $show_subscribe_buttons['name'] ?>" type="checkbox" value="1" <?php if( $show_subscribe_buttons['value'] ) echo 'checked="checked"' ?> />
65
- <label for="<?php echo $show_subscribe_buttons['id'] ?>"><?php _e( 'Show <strong>Subscribe</strong> buttons', AI1EC_PLUGIN_NAME ) ?></label>
66
- <br />
67
- <input id="<?php echo $hide_on_calendar_page['id'] ?>" name="<?php echo $hide_on_calendar_page['name'] ?>" type="checkbox" value="1" <?php if( $hide_on_calendar_page['value'] ) echo 'checked="checked"' ?> />
68
- <label for="<?php echo $hide_on_calendar_page['id'] ?>"><?php _e( 'Hide this widget on calendar page', AI1EC_PLUGIN_NAME ) ?></label>
69
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/agenda-widget.php DELETED
@@ -1,81 +0,0 @@
1
- <?php echo $args['before_widget'] ?>
2
-
3
- <?php if( $title ): ?>
4
- <?php echo $before_title . $title . $after_title ?>
5
- <?php endif ?>
6
-
7
- <div class="ai1ec-agenda-widget-view">
8
-
9
- <?php if( ! $dates ): ?>
10
- <p class="ai1ec-no-results">
11
- <?php _e( 'There are no upcoming events.', AI1EC_PLUGIN_NAME ) ?>
12
- </p>
13
- <?php else: ?>
14
- <ol>
15
- <?php foreach( $dates as $timestamp => $date_info ): ?>
16
- <li class="ai1ec-date <?php if( isset( $date_info['today'] ) && $date_info['today'] ) echo 'ai1ec-today' ?>">
17
- <h3 class="ai1ec-date-title">
18
- <div class="ai1ec-month"><?php echo date_i18n( 'M', $timestamp, true ) ?></div>
19
- <div class="ai1ec-day"><?php echo date_i18n( 'j', $timestamp, true ) ?></div>
20
- <div class="ai1ec-weekday"><?php echo date_i18n( 'D', $timestamp, true ) ?></div>
21
- </h3>
22
- <ol class="ai1ec-date-events">
23
- <?php foreach( $date_info['events'] as $category ): ?>
24
- <?php foreach( $category as $event ): ?>
25
- <li class="ai1ec-event
26
- ai1ec-event-id-<?php echo $event->post_id ?>
27
- ai1ec-event-instance-id-<?php echo $event->instance_id ?>
28
- <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
29
-
30
- <?php // Insert post ID for use by JavaScript filtering later ?>
31
- <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id ?>" />
32
-
33
- <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>">
34
- <?php if( $event->category_colors ): ?>
35
- <span class="ai1ec-category-colors"><?php echo $event->category_colors ?></span>
36
- <?php endif ?>
37
- <?php if( ! $event->allday ): ?>
38
- <span class="ai1ec-event-time">
39
- <?php echo esc_html( $event->start_time ) ?></span>
40
- </span>
41
- <?php endif ?>
42
- <span class="ai1ec-event-title">
43
- <?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ) ?>
44
- </span>
45
- </a>
46
-
47
- </li>
48
- <?php endforeach ?>
49
- <?php endforeach ?>
50
- </ol>
51
- </li>
52
- <?php endforeach ?>
53
- </ol>
54
- <?php endif ?>
55
-
56
-
57
- <?php if( $show_calendar_button ): ?>
58
- <a class="ai1ec-button ai1ec-calendar-link" href="<?php echo $calendar_url ?>">
59
- <?php _e( 'View Calendar »', AI1EC_PLUGIN_NAME ) ?>
60
- </a>
61
- <?php endif ?>
62
-
63
- <?php if( $show_subscribe_buttons ): ?>
64
- <div class="ai1ec-subscribe-buttons">
65
- <a class="ai1ec-button ai1ec-subscribe"
66
- href="<?php echo $subscribe_url ?>"
67
- title="<?php _e( 'Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ) ?>" />
68
- <?php _e( '✔ Subscribe', AI1EC_PLUGIN_NAME ) ?>
69
- </a>
70
- <a class="ai1ec-button ai1ec-subscribe-google" target="_blank"
71
- href="http://www.google.com/calendar/render?cid=<?php echo urlencode( str_replace( 'webcal://', 'http://', $subscribe_url ) ) ?>"
72
- title="<?php _e( 'Subscribe to this calendar in your Google Calendar', AI1EC_PLUGIN_NAME ) ?>" />
73
- <img src="<?php echo AI1EC_IMAGE_URL ?>/google-calendar.png" />
74
- <?php _e( 'Add to Google', AI1EC_PLUGIN_NAME ) ?>
75
- </a>
76
- </div>
77
- <?php endif ?>
78
-
79
- </div>
80
-
81
- <?php echo $args['after_widget'] ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/box_event_location.php DELETED
@@ -1,42 +0,0 @@
1
- <h4 class="ai1ec-section-title"><?php _e( 'Event location details', AI1EC_PLUGIN_NAME ); ?></h4>
2
- <table class="ai1ec-form ai1ec-location-form">
3
- <tbody>
4
- <tr>
5
- <td class="ai1ec-first">
6
- <label for="ai1ec_venue">
7
- <?php _e( 'Venue name:', AI1EC_PLUGIN_NAME ); ?>
8
- </label>
9
- </td>
10
- <td>
11
- <input type="text" name="ai1ec_venue" id="ai1ec_venue" value="<?php echo $venue; ?>" />
12
- </td>
13
- </tr>
14
- <tr>
15
- <td>
16
- <label for="ai1ec_address">
17
- <?php _e( 'Address:', AI1EC_PLUGIN_NAME ); ?>
18
- </label>
19
- </td>
20
- <td>
21
- <input type="text" name="ai1ec_address" id="ai1ec_address" value="<?php echo $address; ?>" />
22
- </td>
23
- </tr>
24
- <tr>
25
- <td>
26
- <label for="ai1ec_google_map">
27
- <?php _e( 'Show Google Map:', AI1EC_PLUGIN_NAME ); ?>
28
- </label>
29
- </td>
30
- <td>
31
- <input type="checkbox" value="1" name="ai1ec_google_map" id="ai1ec_google_map" <?php echo $google_map; ?> />
32
- </td>
33
- </tr>
34
- </tbody>
35
- </table>
36
- <div class="ai1ec_box_map <?php if( $show_map ) echo 'ai1ec_box_map_visible' ?>">
37
- <div id="ai1ec_map_canvas"></div>
38
- </div>
39
- <input type="hidden" name="ai1ec_city" id="ai1ec_city" value="<?php echo $city; ?>" />
40
- <input type="hidden" name="ai1ec_province" id="ai1ec_province" value="<?php echo $province; ?>" />
41
- <input type="hidden" name="ai1ec_postal_code" id="ai1ec_postal_code" value="<?php echo $postal_code; ?>" />
42
- <input type="hidden" name="ai1ec_country" id="ai1ec_country" value="<?php echo $country; ?>" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/box_the_seed_studio.php DELETED
@@ -1,56 +0,0 @@
1
- <div class="ai1ec-plugin-branding">
2
-
3
- <div class="ai1ec-plugin-logo">
4
- <img src="http://yellowseedimages.s3.amazonaws.com/logo-plugin.png" alt="<?php esc_attr_e( 'The Seed Studio', AI1EC_PLUGIN_NAME ) ?>" class="pluginlogo" />
5
- </div>
6
-
7
- <p><?php _e( 'The Seed Studio provides web development and support services for clients and web developers.', AI1EC_PLUGIN_NAME ) ?></p>
8
-
9
- <div class="ai1ec-follow-fan">
10
- <div class="ai1ec-facebook-like-top">
11
- <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
12
- <fb:like href="http://www.facebook.com/pages/The-Seed-Agency/66657743707" layout="button_count" show_faces="true" width="110" font="lucida grande"></fb:like>
13
- </div>
14
- <a href="http://twitter.com/theseednet" class="twitter-follow-button"><?php _e( 'Follow @theseednet', AI1EC_PLUGIN_NAME ) ?></a>
15
- <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
16
- <div class="clear"></div>
17
- </div>
18
-
19
- <div class="ai1ec-support-button">
20
- <a href="http://theseednetwork.com/get-supported/" target="_blank"><?php _e( 'Get Support<span> from one of our experienced pros</span>', AI1EC_PLUGIN_NAME ) ?></a>
21
- </div>
22
-
23
- <h2><?php _e( 'Support', AI1EC_PLUGIN_NAME ) ?></h2>
24
- <p>
25
- <a href="http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/all-in-one-event-calendar-documentation/" target="_blank"><?php _e( 'View plugin documentation', AI1EC_PLUGIN_NAME ) ?></a>
26
- </p>
27
- <p>
28
- <?php _e( 'You can also hire The Seed for support on a contract or per-hour basis for this plugin, for your website or for any of your Internet marketing needs (we can really help!).', AI1EC_PLUGIN_NAME ) ?>
29
- </p>
30
- <p>
31
- <?php _e( 'Plugin users: The Seed gives support priority to clients. For free support from other WordPress users, visit the plugin\'s forum.', AI1EC_PLUGIN_NAME ) ?>
32
- </p>
33
-
34
- <h2><?php _e( 'Vote and Share', AI1EC_PLUGIN_NAME ) ?></h2>
35
- <p>
36
- <?php _e( 'This plugin is offered free to the Wordpress Community under the GPL3 license. All we ask is that you:', AI1EC_PLUGIN_NAME ) ?>
37
- <ol>
38
- <li><?php _e( '<a href="http://wordpress.org/extend/plugins/all-in-one-event-calendar/" target="_blank">Give it a five-star rating on wordpress.org</a> (if you think it deserves it!)', AI1EC_PLUGIN_NAME ) ?></li>
39
- <li><a href="http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/" target="_blank"><?php _e( 'Link to the plugin page on our website', AI1EC_PLUGIN_NAME ) ?></a></li>
40
- <li><a href="http://www.facebook.com/theseednet" target="_blank"><?php _e( 'Become a Fan on Facebook', AI1EC_PLUGIN_NAME ) ?></a></li>
41
- <li><a href="https://twitter.com/intent/user?screen_name=theseednet" target="_blank"><?php _e( 'Follow us on Twitter', AI1EC_PLUGIN_NAME ) ?></a></li>
42
- </ol>
43
- </p>
44
-
45
- <?php if( count( $news ) >= 1 ) : ?>
46
- <h2><?php _e( 'Latest from the Seed Network', AI1EC_PLUGIN_NAME ) ?></h2>
47
- <p>
48
- <ul id="ai1ec-rss-news">
49
- <?php foreach( $news as $n ) : ?>
50
- <li><a href="<?php echo $n->get_link() ?>" target="_blank"><?php echo $n->get_title() ?></a></li>
51
- <?php endforeach ?>
52
- </ul>
53
- </p>
54
- <?php endif ?>
55
- </div>
56
- <br class="clear" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/calendar.php DELETED
@@ -1,128 +0,0 @@
1
- <!-- START All-in-One Event Calendar Plugin - Version 1.5 -->
2
- <table class="ai1ec-calendar-toolbar">
3
- <tbody>
4
- <tr>
5
-
6
- <td>
7
- <ul class="ai1ec-view-tabs">
8
- <li>
9
- <a id="ai1ec-view-month" class="ai1ec-load-view ai1ec-button"
10
- href="#action=ai1ec_month&amp;ai1ec_post_ids=<?php echo $selected_post_ids ?>">
11
- <img src="<?php echo AI1EC_IMAGE_URL ?>/month-view.png" alt="<?php _e( 'Month', AI1EC_PLUGIN_NAME ) ?>" />
12
- <?php _e( 'Month', AI1EC_PLUGIN_NAME ) ?>
13
- </a>
14
- </li>
15
- <li>
16
- <a id="ai1ec-view-oneday" class="ai1ec-load-view ai1ec-button"
17
- href="#action=ai1ec_oneday&amp;ai1ec_post_ids=<?php echo $selected_post_ids ?>">
18
- <img src="<?php echo AI1EC_IMAGE_URL ?>/oneday-view.png" alt="<?php _e( 'Day', AI1EC_PLUGIN_NAME ) ?>" />
19
- <?php _e( 'Day', AI1EC_PLUGIN_NAME ) ?>
20
- </a>
21
- </li>
22
- <li>
23
- <a id="ai1ec-view-week" class="ai1ec-load-view ai1ec-button"
24
- href="#action=ai1ec_week&amp;ai1ec_post_ids=<?php echo $selected_post_ids ?>">
25
- <img src="<?php echo AI1EC_IMAGE_URL ?>/week-view.png" alt="<?php _e( 'Week', AI1EC_PLUGIN_NAME ) ?>" />
26
- <?php _e( 'Week', AI1EC_PLUGIN_NAME ) ?>
27
- </a>
28
- </li>
29
- <li>
30
- <a id="ai1ec-view-agenda" class="ai1ec-load-view ai1ec-button"
31
- href="#action=ai1ec_agenda&amp;ai1ec_post_ids=<?php echo $selected_post_ids ?>">
32
- <img src="<?php echo AI1EC_IMAGE_URL ?>/agenda-view.png" alt="<?php _e( 'Month', AI1EC_PLUGIN_NAME ) ?>" />
33
- <?php _e( 'Agenda', AI1EC_PLUGIN_NAME ) ?>
34
- </a>
35
- </li>
36
- </ul>
37
- </td>
38
-
39
- <?php if( $create_event_url ): ?>
40
- <td>
41
- <a class="ai1ec-button" href="<?php echo $create_event_url ?>">
42
- <?php _e( '+ Post Your Event', AI1EC_PLUGIN_NAME ) ?>
43
- </a>
44
- </td>
45
- <?php endif ?>
46
-
47
- <?php if( $categories || $tags ): ?>
48
- <td>
49
- <div class="ai1ec-filters-container">
50
- <label class="ai1ec-label">
51
- <a class="ai1ec-clear-filters" title="<?php _e( 'Clear Filters', AI1EC_PLUGIN_NAME ) ?>"><?php _e( '✘', AI1EC_PLUGIN_NAME ) ?></a>
52
- <?php _e( 'Filter:', AI1EC_PLUGIN_NAME ) ?>
53
- </label>
54
-
55
- <?php if( $categories ): ?>
56
- <span class="ai1ec-filter-selector-container">
57
- <a class="ai1ec-button ai1ec-dropdown"><?php _e( 'Categories ▾', AI1EC_PLUGIN_NAME ) ?></a>
58
- <input class="ai1ec-selected-terms"
59
- id="ai1ec-selected-categories"
60
- type="hidden"
61
- value="<?php echo $selected_cat_ids ?>" />
62
- <div class="ai1ec-filter-selector ai1ec-category-filter-selector">
63
- <ul>
64
- <?php foreach( $categories as $cat ): ?>
65
- <li class="ai1ec-category"
66
- <?php if( $cat->description ) echo 'title="' . esc_attr( $cat->description ) . '"' ?>>
67
- <?php echo $cat->color ?>
68
- <?php echo esc_html( $cat->name ) ?>
69
- <input class="ai1ec-term-ids" name="ai1ec-categories" type="hidden" value="<?php echo $cat->term_id ?>" />
70
- </li>
71
- <?php endforeach ?>
72
- </ul>
73
- </div>
74
- </span>
75
- <?php endif // $categories ?>
76
-
77
- <?php if( $tags ): ?>
78
- <span class="ai1ec-filter-selector-container">
79
- <a class="ai1ec-button ai1ec-dropdown"><?php _e( 'Tags ▾', AI1EC_PLUGIN_NAME ) ?></a>
80
- <input class="ai1ec-selected-terms"
81
- id="ai1ec-selected-tags"
82
- type="hidden"
83
- value="<?php echo $selected_tag_ids ?>" />
84
- <div class="ai1ec-filter-selector ai1ec-tag-filter-selector">
85
- <ul>
86
- <?php foreach( $tags as $tag ): ?>
87
- <li class="ai1ec-tag"
88
- <?php if( $tag->description ) echo 'title="' . esc_attr( $tag->description ) . '"' ?>
89
- style="<?php echo $tag->count > 1 ? 'font-weight: bold;' : 'font-size: 10px !important;' ?>">
90
- <?php echo esc_html( $tag->name ) . " ($tag->count)" ?>
91
- <input class="ai1ec-term-ids" name="ai1ec-tags" type="hidden" value="<?php echo $tag->term_id ?>" />
92
- </li>
93
- <?php endforeach ?>
94
- </ul>
95
- <input class="ai1ec-selected-terms" id="ai1ec-selected-tags" type="hidden" />
96
- </div>
97
- </span>
98
- <?php endif // $tags ?>
99
- </div>
100
- </td>
101
- <?php endif // $categories || $tags ?>
102
-
103
- </tr>
104
- </tbody>
105
- </table>
106
-
107
- <div id="ai1ec-calendar-view-container">
108
- <div id="ai1ec-calendar-view-loading" class="ai1ec-loading"></div>
109
- <div id="ai1ec-calendar-view">
110
- <?php echo $view ?>
111
- </div>
112
- </div>
113
-
114
- <?php if( $show_subscribe_buttons ): ?>
115
- <a class="ai1ec-button ai1ec-subscribe"
116
- href="<?php echo AI1EC_EXPORT_URL ?>"
117
- title="<?php _e( 'Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ) ?>" />
118
- <?php _e( '✔ Subscribe', AI1EC_PLUGIN_NAME ) ?>
119
- <span class="ai1ec-subscribe-filtered"><?php _e( 'to this filtered calendar', AI1EC_PLUGIN_NAME ) ?></span>
120
- </a>
121
- <a class="ai1ec-button ai1ec-subscribe-google" target="_blank"
122
- href="http://www.google.com/calendar/render?cid=<?php echo urlencode( str_replace( 'webcal://', 'http://', AI1EC_EXPORT_URL ) ) ?>"
123
- title="<?php _e( 'Subscribe to this calendar in your Google Calendar', AI1EC_PLUGIN_NAME ) ?>" />
124
- <img src="<?php echo AI1EC_IMAGE_URL ?>/google-calendar.png" />
125
- <?php _e( 'Subscribe in Google Calendar', AI1EC_PLUGIN_NAME ) ?>
126
- </a>
127
- <?php endif ?>
128
- <!-- END All-in-One Event Calendar Plugin -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/event-excerpt.php DELETED
@@ -1,6 +0,0 @@
1
- <div class="ai1ec-excerpt">
2
- <div class="ai1ec-time"><label class="ai1ec-label"><?php _e( 'When:', AI1EC_PLUGIN_NAME ) ?></label> <?php echo $event->timespan_html ?></div>
3
- <?php if( $location ): ?>
4
- <div class="ai1ec-location"><label class="ai1ec-label"><?php _e( 'Where:', AI1EC_PLUGIN_NAME ) ?></label> <?php echo $location ?></div>
5
- <?php endif ?>
6
- </div>
 
 
 
 
 
 
app/view/event-multi.php DELETED
@@ -1,56 +0,0 @@
1
- <table class="ai1ec-event ai1ec-multi-event ai1ec-event-id-<?php echo $event->post_id ?> <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
2
- <tbody>
3
- <tr>
4
- <th scope="row" class="ai1ec-time"><?php _e( 'When:', AI1EC_PLUGIN_NAME ) ?></th>
5
- <td class="ai1ec-time">
6
- <a class="ai1ec-button ai1ec-calendar-link" href="<?php echo $calendar_url ?>">
7
- <?php _e( 'View in Calendar »', AI1EC_PLUGIN_NAME ) ?>
8
- </a>
9
- <?php echo $event->timespan_html ?>
10
- </td>
11
- </tr>
12
- <?php if( $recurrence ): ?>
13
- <tr>
14
- <th scope="row" class="ai1ec-recurrence"><?php _e( 'Repeats:', AI1EC_PLUGIN_NAME ) ?></th>
15
- <td class="ai1ec-recurrence" colspan="2"><?php echo $recurrence ?></td>
16
- </tr>
17
- <?php endif ?>
18
- <tr>
19
- <?php if( $location ): ?>
20
- <th scope="row" class="ai1ec-location"><?php _e( 'Where:', AI1EC_PLUGIN_NAME ) ?></th>
21
- <td class="ai1ec-location">
22
- <?php if( $event->show_map ): ?>
23
- <a class="ai1ec-button ai1ec-gmap-link" href="<?php the_permalink() ?>#ai1ec-event">
24
- <?php _e( 'View Map »', AI1EC_PLUGIN_NAME ) ?>
25
- </a>
26
- <?php endif ?>
27
- <?php echo $location ?>
28
- </td>
29
- <?php endif ?>
30
- </tr>
31
- <tr>
32
- <?php if( $event->cost ): ?>
33
- <th scope="row" class="ai1ec-cost"><?php _e( 'Cost:', AI1EC_PLUGIN_NAME ) ?></th>
34
- <td class="ai1ec-cost"><?php echo esc_html( $event->cost ) ?></td>
35
- <?php endif ?>
36
- </tr>
37
- <tr>
38
- <?php if( $contact ): ?>
39
- <th scope="row" class="ai1ec-contact"><?php _e( 'Contact:', AI1EC_PLUGIN_NAME ) ?></th>
40
- <td class="ai1ec-contact"><?php echo $contact ?></td>
41
- <?php endif ?>
42
- </tr>
43
- <tr>
44
- <?php if( $categories ): ?>
45
- <th scope="row" class="ai1ec-categories"><?php _e( 'Categories:', AI1EC_PLUGIN_NAME ) ?></th>
46
- <td class="ai1ec-categories"><?php echo $categories ?></td>
47
- <?php endif ?>
48
- </tr>
49
- <tr>
50
- <?php if( $tags ): ?>
51
- <th scope="row" class="ai1ec-tags"><?php _e( 'Tags:', AI1EC_PLUGIN_NAME ) ?></th>
52
- <td class="ai1ec-tags"><?php echo $tags ?></td>
53
- <?php endif ?>
54
- </tr>
55
- </tbody>
56
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/view/oneday.php DELETED
@@ -1,137 +0,0 @@
1
- <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ) ?></h2>
2
- <span class="ai1ec-title-buttons"> <a id="ai1ec-today"
3
- class="ai1ec-load-view ai1ec-button"
4
- href="#action=ai1ec_oneday&amp;ai1ec_post_ids=<?php echo $post_ids ?>"> <?php _e( 'Today', AI1EC_PLUGIN_NAME ) ?>
5
- </a> </span>
6
- <ul class="ai1ec-pagination">
7
- <?php foreach( $pagination_links as $link ) : ?>
8
- <li><a id="<?php echo $link['id'] ?>"
9
- class="ai1ec-load-view ai1ec-button"
10
- href="<?php echo esc_attr( $link['href'] ) ?>&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
11
- <?php echo esc_html( $link['text'] ) ?> </a></li>
12
- <?php endforeach ?>
13
- </ul>
14
- <table class="ai1ec-1day-view-original">
15
- <thead>
16
- <tr>
17
- <?php foreach( $cell_array as $date => $day ): ?>
18
- <th class="ai1ec-weekday <?php if( $day['today'] ) echo 'ai1ec-today' ?>">
19
- <span class="ai1ec-weekday-date"><?php echo date_i18n( 'l', $date, true )?> </span>
20
- </th>
21
- <?php endforeach // weekday ?>
22
- </tr>
23
- <tr>
24
- <?php foreach( $cell_array as $day ) : ?>
25
- <td class="ai1ec-allday-events <?php if( $day['today'] ) echo 'ai1ec-today' ?>">
26
-
27
- <?php if( ! $done_allday_label ) : ?>
28
- <div class="ai1ec-allday-label"><?php _e( 'All-day', AI1EC_PLUGIN_NAME ) ?></div>
29
- <?php $done_allday_label = true ?>
30
- <?php endif ?>
31
-
32
- <?php foreach( $day['allday'] as $event ) : ?>
33
- <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
34
- class="ai1ec-event-container
35
- ai1ec-event-id-<?php echo $event->post_id ?>
36
- ai1ec-event-instance-id-<?php echo $event->instance_id ?>
37
- ai1ec-allday
38
- <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated' ?>
39
- <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated' ?>">
40
-
41
- <?php // Insert post ID for use by JavaScript filtering later ?>
42
- <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id ?>" />
43
-
44
- <div class="ai1ec-event-popup">
45
- <div class="ai1ec-event-summary">
46
- <?php if( $event->category_colors ): ?>
47
- <div class="ai1ec-category-colors"><?php echo $event->category_colors ?></div>
48
- <?php endif ?>
49
- <?php if( $event->post_excerpt ): ?>
50
- <strong><?php _e( 'Summary:', AI1EC_PLUGIN_NAME ) ?></strong>
51
- <p><?php echo esc_html( $event->post_excerpt ) ?></p>
52
- <?php endif ?>
53
- <div class="ai1ec-read-more"><?php esc_html_e( 'click anywhere for details', AI1EC_PLUGIN_NAME ) ?></div>
54
- </div>
55
- <div class="ai1ec-event-popup-bg">
56
- <span class="ai1ec-event-title">
57
- <?php if( function_exists( 'mb_strimwidth' ) ) : ?>
58
- <?php echo esc_html( mb_strimwidth( apply_filters( 'the_title', $event->post->post_title ), 0, 35, '...' ) ) ?></span>
59
- <?php else : ?>
60
- <?php $read_more = strlen( apply_filters( 'the_title', $event->post->post_title ) ) > 35 ? '...' : '' ?>
61
- <?php echo esc_html( substr( apply_filters( 'the_title', $event->post->post_title ), 0, 35 ) . $read_more ); ?>
62
- <?php endif; ?>
63
- </span>
64
- <small><?php esc_html_e( '(all-day)', AI1EC_PLUGIN_NAME ) ?></small>
65
- </div>
66
- </div><!-- .event-popup -->
67
-
68
- <div class="ai1ec-event <?php if( $event->post_id == $active_event ) echo 'ai1ec-active-event' ?>" style="<?php echo $event->color_style ?>">
69
- <span class="ai1ec-event-title"><?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ) ?></span>
70
- </div>
71
-
72
- </a>
73
- <?php endforeach // allday ?>
74
-
75
- </td>
76
- <?php endforeach // weekday ?>
77
- </tr>
78
- </thead>
79
- <tbody>
80
- <tr class="ai1ec-1day">
81
-
82
- <td <?php if( $day['today'] ) echo 'class="ai1ec-today"' ?>>
83
- <div class="ai1ec-grid-container"><?php for( $hour = 0; $hour < 24; $hour++ ) : ?>
84
-
85
- <div class="ai1ec-hour-marker <?php if( $hour >= 8 && $hour < 18 ) echo 'ai1ec-business-hour' ?>" style="top: <?php echo $hour * 60 ?>px;">
86
- <div><?php echo esc_html( date_i18n( $time_format, gmmktime( $hour, 0 ), true ) ) ?></div>
87
- </div>
88
- <?php for( $quarter = 1; $quarter < 4; $quarter++ ) : ?>
89
- <div class="ai1ec-quarter-marker" style="top: <?php echo $hour * 60 + $quarter * 15 ?>px;"></div>
90
- <?php endfor ?> <?php endfor ?>
91
- <div class="ai1ec-now-marker" style="top: <?php echo $now_top ?>px;"></div>
92
- </div>
93
- <div class="ai1ec-day">
94
- <?php foreach( $day['notallday'] as $notallday ): ?>
95
- <?php extract( $notallday ) ?>
96
- <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
97
- class="ai1ec-event-container
98
- ai1ec-event-id-<?php echo $event->post_id ?>
99
- ai1ec-event-instance-id-<?php echo $event->instance_id ?>
100
- <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated' ?>
101
- <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated' ?>"
102
- style="top: <?php echo $top ?>px; height: <?php echo max( $height, 31 ) ?>px; left: <?php echo $indent * 16 + 50 ?>px; margin-right:10px; <?php echo $event->color_style ?> <?php if( $event->faded_color ) echo "border: 2px solid $event->faded_color !important;" ?> background: linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -o-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -moz-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -webkit-gradient( linear, left top, left bottom, color-stop( 0, # ), color-stop( 1, <?php echo $event->faded_color ?> ) ) !important; background: -webkit-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important;">
103
-
104
- <?php if( $event->start_truncated ) : ?>
105
- <div class="ai1ec-start-truncator">◤</div>
106
- <?php endif ?> <?php if( $event->end_truncated ) : ?>
107
- <div class="ai1ec-end-truncator">◢</div>
108
- <?php endif ?> <?php // Insert post ID for use by JavaScript filtering later ?>
109
- <input type="hidden" class="ai1ec-post-id"
110
- value="<?php echo $event->post_id ?>" />
111
-
112
- <div class="ai1ec-event-popup">
113
- <div class="ai1ec-event-summary"><?php if( $event->category_colors ): ?>
114
- <div class="ai1ec-category-colors"><?php echo $event->category_colors ?></div>
115
- <?php endif ?> <?php if( $event->post_excerpt ): ?> <strong><?php _e( 'Summary:', AI1EC_PLUGIN_NAME ) ?></strong>
116
- <p><?php echo esc_html( $event->post_excerpt ) ?></p>
117
- <?php endif ?>
118
- <div class="ai1ec-read-more"><?php esc_html_e( 'click anywhere for details', AI1EC_PLUGIN_NAME ) ?></div>
119
- </div>
120
- <div class="ai1ec-event-popup-bg"><span class="ai1ec-event-time"><?php echo esc_html( $event->short_start_time ) ?></span>
121
- <span class="ai1ec-event-title"><?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ) ?></span>
122
- </span></div>
123
- </div>
124
- <!-- .event-popup -->
125
-
126
- <div
127
- class="ai1ec-event <?php if( $event->post_id == $active_event ) echo 'ai1ec-active-event' ?>">
128
- <span class="ai1ec-event-time"><?php echo esc_html( $event->short_start_time ) ?></span>
129
- <span class="ai1ec-event-title"><?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ) ?></span>
130
- </div>
131
-
132
- </a> <?php endforeach // events ?></div>
133
- </td>
134
-
135
- </tr>
136
- </tbody>
137
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/calendar.css DELETED
@@ -1,1009 +0,0 @@
1
- .ai1ec-container {
2
- font-size: 13pt !important;
3
- clear: both;
4
- }
5
- /* Some plugins mangle styling of standard HTML tags, fix them here */
6
- .ai1ec-container small {
7
- margin: 0 !important;
8
- }
9
- /* Some themes pollute table row backgrounds - this line undoes this: */
10
- .ai1ec-container tr {
11
- background: none !important;
12
- }
13
-
14
- /* Active buttons */
15
- .ai1ec-action-month #ai1ec-view-month,
16
- .ai1ec-action-oneday #ai1ec-view-oneday,
17
- .ai1ec-action-week #ai1ec-view-week,
18
- .ai1ec-action-agenda #ai1ec-view-agenda {
19
- color: #000;
20
- background: #ddd;
21
- background: -o-linear-gradient( #ccc, #eee );
22
- background: -ms-linear-gradient( #ccc, #eee );
23
- background: -moz-linear-gradient( #ccc, #eee );
24
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#ccc), to(#eee) );
25
- background: -webkit-linear-gradient( #ccc, #eee );
26
- }
27
-
28
- /* View container */
29
- #ai1ec-calendar-view-container {
30
- position: relative;
31
- clear: both;
32
- margin-bottom: 0.2em;
33
- }
34
- table.ai1ec-calendar-toolbar {
35
- width: 100% !important;
36
- border: 0 !important;
37
- margin: 0 !important;
38
- }
39
- .ai1ec-calendar-toolbar td {
40
- text-align: center;
41
- vertical-align: middle;
42
- border: 0 !important;
43
- padding: 0 !important;
44
- white-space: nowrap;
45
- background: none !important;
46
- }
47
- .ai1ec-calendar-toolbar td:last-child {
48
- text-align: right;
49
- }
50
- .ai1ec-calendar-toolbar td:first-child {
51
- text-align: left;
52
- }
53
-
54
- /* View tabs */
55
- ul.ai1ec-view-tabs {
56
- margin: 0 0 0.2em !important;
57
- padding: 0 !important;
58
- display: inline-block;
59
- }
60
- .ai1ec-view-tabs li {
61
- list-style: none !important;
62
- float: left;
63
- margin: 0.1em 0 !important;
64
- padding: 0 !important;
65
- }
66
- .ai1ec-view-tabs a {
67
- line-height: 25px !important;
68
- padding: 0.2em 0.5em;
69
- }
70
- .ai1ec-view-tabs a img {
71
- border: 0 !important;
72
- padding: 0 !important;
73
- margin: 0 !important;
74
- float: none !important;
75
- position: static !important;
76
- vertical-align: middle;
77
- background: none !important;
78
- }
79
-
80
- /* View filters */
81
- .ai1ec-filters-container {
82
- display: inline-block;
83
- }
84
- .ai1ec-filters-container .ai1ec-button {
85
- margin: 0;
86
- }
87
- .ai1ec-filter-selector-container {
88
- position: relative;
89
- display: inline-block;
90
- text-align: left;
91
- white-space: normal;
92
- }
93
- .ai1ec-filter-selector {
94
- display: none;
95
- position: absolute;
96
- z-index: 10;
97
- right: 0;
98
- top: 100%;
99
- overflow: auto;
100
- max-width: 20em;
101
- max-height: 30em;
102
- background: #fff;
103
- border: 1px solid #ddd;
104
- box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
105
- -o-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
106
- -ms-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
107
- -moz-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
108
- -webkit-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
109
- padding: 0.1em;
110
- }
111
- .ai1ec-filter-selector ul {
112
- margin: 0 !important;
113
- padding: 0 !important;
114
- }
115
- .ai1ec-filter-selector li {
116
- list-style: none;
117
- }
118
- .ai1ec-filter-selector .ai1ec-category,
119
- .ai1ec-filter-selector .ai1ec-tag {
120
- font-size: 8pt !important;
121
- }
122
- .ai1ec-clear-filters {
123
- display: none;
124
- font-size: 11pt !important;
125
- font-weight: normal;
126
- color: #7A86D9 !important;
127
- cursor: pointer;
128
- text-decoration: none !important;
129
- }
130
- .ai1ec-clear-filters:hover {
131
- color: #000 !important;
132
- }
133
-
134
- /* Titles */
135
- h2.ai1ec-calendar-title {
136
- float: left;
137
- font-size: 1.15em !important;
138
- line-height: 1.3em !important;
139
- margin: 0 0 0.2em !important;
140
- }
141
-
142
- /* Today button and others beside it */
143
- .ai1ec-title-buttons {
144
- margin: 0 0.5em;
145
- }
146
- .ai1ec-title-buttons .ai1ec-button {
147
- font-size: 8pt !important;
148
- margin: 0.3em 0.1em;
149
- }
150
- .ai1ec-today #ai1ec-today {
151
- display: none;
152
- }
153
-
154
- /* View pagination */
155
- ul.ai1ec-pagination {
156
- margin: 0 0 0.3em !important;
157
- padding: 0 !important;
158
- float: right;
159
- }
160
- a.ai1ec-pagination {
161
- margin: 0 0 0.3em !important;
162
- }
163
- .ai1ec-pagination li {
164
- list-style: none !important;
165
- padding: 0 !important;
166
- float: left;
167
- }
168
- .ai1ec-action-month .ai1ec-pagination a {
169
- width: 7em;
170
- }
171
- .ai1ec-action-week .ai1ec-pagination a,
172
- .ai1ec-action-1day .ai1ec-pagination a {
173
- width: 8em;
174
- }
175
- .ai1ec-action-agenda .ai1ec-pagination a {
176
- float: right;
177
- width: 9em;
178
- }
179
- #ai1ec-prev-year, #ai1ec-next-year {
180
- width: 4em;
181
- }
182
-
183
- /* Month, week tables */
184
- table.ai1ec-month-view,
185
- .ai1ec-week-view table {
186
- border-collapse: collapse;
187
- border: 1px solid #ddd !important;
188
- margin: 0 !important;
189
- background: #fff;
190
- table-layout: fixed !important;
191
- clear: both;
192
- width: 100% !important;
193
- }
194
- .ai1ec-week-view .tablescroll_wrapper {
195
- position: relative;
196
- border-bottom: 1px solid #ddd;
197
- }
198
- table.ai1ec-week-view-original {
199
- visibility: hidden;
200
- height: 400px;
201
- }
202
- table.ai1ec-week-view-original.tablescroll_body {
203
- visibility: visible;
204
- height: auto;
205
- }
206
- .ai1ec-week-view table.tablescroll_head,
207
- .ai1ec-week-view table.tablescroll_head th {
208
- border-bottom: none !important;
209
- padding: 2.48px !important;
210
- }
211
- table.ai1ec-week-view-original.tablescroll_body,
212
- table.ai1ec-week-view-original.tablescroll_body tr:first-child td {
213
- border-top: none !important;
214
- }
215
- .ai1ec-month-view td,
216
- .ai1ec-week-view td {
217
- border: 1px solid #ddd !important;
218
- vertical-align: top;
219
- background: none !important;
220
- }
221
- .ai1ec-month-view td.ai1ec-empty {
222
- background: #f8f8f8 !important;
223
- }
224
- .ai1ec-month-view th,
225
- .ai1ec-week-view th {
226
- border: none !important;
227
- background: #f2f2f2 !important;
228
- padding: 0.2em !important;
229
- }
230
- .ai1ec-month-view th,
231
- .ai1ec-week-view th,
232
- .ai1ec-week-view .ai1ec-hour-marker div,
233
- .ai1ec-week-view .ai1ec-allday-label {
234
- font: bold 9pt Tahoma, Geneva, sans-serif !important;
235
- color: #999 !important;
236
- text-shadow: 0 1px 0 #fff;
237
- -o-text-shadow: 0 1px 0 #fff;
238
- -ms-text-shadow: 0 1px 0 #fff;
239
- -moz-text-shadow: 0 1px 0 #fff;
240
- -webkit-text-shadow: 0 1px 0 #fff;
241
- }
242
- .ai1ec-month-view th {
243
- text-align: center !important;
244
- }
245
- .ai1ec-week-view th {
246
- text-align: left !important;
247
- }
248
- .ai1ec-week-view th .ai1ec-weekday-date {
249
- font-size: 10.5pt !important;
250
- font-weight: normal !important;
251
- }
252
- .ai1ec-week-view th .ai1ec-weekday-day {
253
- font-size: 9pt !important;
254
- font-weight: normal !important;
255
- }
256
- .ai1ec-month-view td,
257
- .ai1ec-week-view td {
258
- padding: 0 !important;
259
- text-align: left;
260
- }
261
- .ai1ec-month-view .ai1ec-day,
262
- .ai1ec-week-view .ai1ec-day,
263
- .ai1ec-week-view .ai1ec-allday-events {
264
- position: relative;
265
- }
266
- .ai1ec-month-view .ai1ec-day {
267
- min-height: 5em;
268
- }
269
- .ai1ec-week-view .ai1ec-day {
270
- height: 1440px;
271
- }
272
- .ai1ec-month-view .ai1ec-today,
273
- .ai1ec-week-view .ai1ec-today {
274
- background: #ffd !important;
275
- background: rgba(255,255,128,0.3) !important;
276
- }
277
- .ai1ec-month-view .ai1ec-date {
278
- text-align: right;
279
- font-size: 10pt;
280
- line-height: 12pt;
281
- padding: 0 0.4em;
282
- background: #eaf4ff;
283
- font: 8pt Tahoma, Geneva, sans-serif;
284
- color: #666;
285
- text-shadow: 0 1px 0 #fff;
286
- -o-text-shadow: 0 1px 0 #fff;
287
- -ms-text-shadow: 0 1px 0 #fff;
288
- -moz-text-shadow: 0 1px 0 #fff;
289
- -webkit-text-shadow: 0 1px 0 #fff;
290
- }
291
-
292
- /* 1day tables */
293
- table.ai1ec-1day-view, .ai1ec-1day-view table{
294
- border-collapse: collapse;
295
- border: 1px solid #ddd !important;
296
- margin: 0 !important;
297
- background: #fff;
298
- table-layout: fixed !important;
299
- clear: both;
300
- width: 100% !important;
301
- }
302
- .ai1ec-1day-view .ai1ec-today {
303
- color: #999 !important;
304
- }
305
- .ai1ec-1day-view .ai1ec-today th{
306
- background: #ffd !important;
307
- background: rgba(255,255,128,0.3) !important;
308
- }
309
- .ai1ec-1day-view .tablescroll_wrapper {
310
- position: relative;
311
- border-bottom: 1px solid #ddd;
312
- }
313
- table.ai1ec-1day-view-original {
314
- visibility: hidden;
315
- height: 400px;
316
- }
317
- table.ai1ec-1day-view-original.tablescroll_body {
318
- visibility: visible;
319
- height: auto;
320
- }
321
- .ai1ec-1day-view table.tablescroll_head,
322
- .ai1ec-1day-view table.tablescroll_head th {
323
- border-bottom: none !important;
324
- padding: 2.48px !important;
325
- }
326
- table.ai1ec-1day-view-original.tablescroll_body,
327
- table.ai1ec-1day-view-original.tablescroll_body tr:first-child td {
328
- border-top: none !important;
329
- }
330
- .ai1ec-1day-view td {
331
- border: 1px solid #ddd !important;
332
- vertical-align: top;
333
- background: none !important;
334
- }
335
-
336
- .ai1ec-1day-view th {
337
- border: none !important;
338
- padding: 0.2em !important;
339
- background: #ffd !important;
340
- background: rgba(255,255,128,0.3) !important;
341
- }
342
- .ai1ec-1day-view th,
343
- .ai1ec-1day-view .ai1ec-hour-marker div,
344
- .ai1ec-1day-view .ai1ec-allday-label {
345
- font: bold 10pt Tahoma, Geneva, sans-serif !important;
346
- color: #999 !important;
347
- text-shadow: 0 1px 0 #fff;
348
- -o-text-shadow: 0 1px 0 #fff;
349
- -ms-text-shadow: 0 1px 0 #fff;
350
- -moz-text-shadow: 0 1px 0 #fff;
351
- -webkit-text-shadow: 0 1px 0 #fff;
352
- }
353
- .ai1ec-1day-view th {
354
- text-align: center !important;
355
- }
356
-
357
- .ai1ec-1day-view th .ai1ec-weekday-date {
358
- font-size: 10.5pt !important;
359
- font-weight: normal !important;
360
- }
361
- .ai1ec-1day-view th .ai1ec-weekday-day {
362
- font-size: 10.5pt !important;
363
- font-weight: normal !important;
364
- }
365
-
366
- .ai1ec-1day-view td {
367
- padding: 0 !important;
368
- text-align: left;
369
- }
370
- .ai1ec-1day-view .ai1ec-day,
371
- .ai1ec-1day-view .ai1ec-allday-events {
372
- position: relative;
373
- }
374
- .ai1ec-1day-view .ai1ec-day {
375
- height: 1440px;
376
- }
377
-
378
- /* Week/Day view now marker */
379
- .ai1ec-week-view .ai1ec-grid-container,
380
- .ai1ec-1day-view .ai1ec-grid-container {
381
- position: absolute;
382
- top: auto;
383
- left: 0;
384
- right: 0;
385
- }
386
- .ai1ec-week-view .ai1ec-now-marker,
387
- .ai1ec-week-view .ai1ec-hour-marker,
388
- .ai1ec-week-view .ai1ec-quarter-marker,
389
- .ai1ec-1day-view .ai1ec-now-marker,
390
- .ai1ec-1day-view .ai1ec-hour-marker,
391
- .ai1ec-1day-view .ai1ec-quarter-marker {
392
- position: absolute;
393
- left: 0;
394
- right: 0;
395
- padding-right: 8px;
396
- }
397
- .ai1ec-week-view .ai1ec-hour-marker,
398
- .ai1ec-1day-view .ai1ec-hour-marker {
399
- border-top: 1px solid #e8e8e8;
400
- border-top: 1px solid rgba(0,0,0,0.08);
401
- height: 60px;
402
- background: #f2f2f2 !important;
403
- background: rgba(0,0,0,0.054) !important;
404
- }
405
- .ai1ec-week-view .ai1ec-hour-marker div,
406
- .ai1ec-week-view .ai1ec-allday-label,
407
- .ai1ec-1day-view .ai1ec-hour-marker div,
408
- .ai1ec-1day-view .ai1ec-allday-label {
409
- position: relative;
410
- z-index: 2;
411
- margin-left: 1px;
412
- padding: 0 0.2em;
413
- font-size: 8pt !important;
414
- font-weight: normal !important;
415
- background: #f2f2f2;
416
- float: left;
417
- border-radius: 0.3em;
418
- -moz-border-radius: 0.3em;
419
- -webkit-border-radius: 0.3em;
420
- }
421
- .ai1ec-week-view .ai1ec-allday-label,
422
- .ai1ec-1day-view .ai1ec-allday-label {
423
- margin-top: 1px;
424
- }
425
- .ai1ec-week-view .ai1ec-hour-marker.ai1ec-business-hour,
426
- .ai1ec-1day-view .ai1ec-hour-marker.ai1ec-business-hour {
427
- background: #fff !important;
428
- background: transparent !important;
429
- }
430
- .ai1ec-week-view .ai1ec-quarter-marker,
431
- .ai1ec-1day-view .ai1ec-quarter-marker {
432
- border-top: 1px solid #f4f4f4;
433
- border-top: 1px solid rgba(0,0,0,0.05);
434
- }
435
- .ai1ec-week-view .ai1ec-now-marker,
436
- .ai1ec-1day-view .ai1ec-now-marker{
437
- border-top: 1px solid #f2c539;
438
- border-bottom: 1px solid rgba(0, 0, 0, 0.15);
439
- z-index: 2;
440
- }
441
- /* Event summaries in month/week/day view, including popups */
442
- .ai1ec-month-view a.ai1ec-event-container,
443
- .ai1ec-week-view a.ai1ec-event-container,
444
- .ai1ec-1day-view a.ai1ec-event-container {
445
- font: 9pt Tahoma, Geneva, sans-serif !important;
446
- text-decoration: none !important;
447
- display: block;
448
- border: none !important;
449
- color: #568 !important;
450
- }
451
- .ai1ec-month-view a.ai1ec-event-container,
452
- .ai1ec-week-view .ai1ec-allday-events a.ai1ec-event-container,
453
- .ai1ec-1day-view .ai1ec-allday-events a.ai1ec-event-container {
454
- position: relative;
455
- }
456
- .ai1ec-1day-view .ai1ec-allday-events a.ai1ec-event-container {
457
- margin: 0 15px 0 50px;
458
- }
459
- .ai1ec-week-view .ai1ec-week a.ai1ec-event-container,
460
- .ai1ec-1day-view .ai1ec-1day a.ai1ec-event-container {
461
- position: absolute;
462
- box-sizing: border-box;
463
- -o-box-sizing: border-box;
464
- -moz-box-sizing: border-box;
465
- -webkit-box-sizing: border-box;
466
- right: 0;
467
- border-radius: 0.3em;
468
- -moz-border-radius: 0.3em;
469
- -webkit-border-radius: 0.3em;
470
- box-shadow: 0 3px 6px rgba(0,0,0,0.2);
471
- -moz-box-shadow: 0 3px 6px rgba(0,0,0,0.2);
472
- -webkit-box-shadow: 0 3px 6px rgba(0,0,0,0.2);
473
- border: 2px solid #ced3dd !important;
474
- background: #fff !important;
475
- background: linear-gradient( top, #fff, #ced3dd ) !important;
476
- background: -o-linear-gradient( top, #fff, #ced3dd ) !important;
477
- background: -moz-linear-gradient( top, #fff, #ced3dd ) !important;
478
- background: -webkit-gradient( linear, left top, left bottom, color-stop( 0, #fff ), color-stop( 1, #ced3dd ) ) !important;
479
- background: -webkit-linear-gradient( top, #fff, #ced3dd ) !important;
480
- }
481
- .ai1ec-month-view .ai1ec-event,
482
- .ai1ec-1day-view .ai1ec-event,
483
- .ai1ec-week-view .ai1ec-event {
484
- border-radius: 0.3em;
485
- -o-border-radius: 0.3em;
486
- -moz-border-radius: 0.3em;
487
- -webkit-border-radius: 0.3em;
488
- margin: 1px 0 0;
489
- padding: 0 3px 1px;
490
- white-space: nowrap;
491
- overflow: hidden;
492
- max-height: 100%;
493
- }
494
- .ai1ec-month-view .ai1ec-allday .ai1ec-event,
495
- .ai1ec-1day-view .ai1ec-allday .ai1ec-event,
496
- .ai1ec-week-view .ai1ec-allday .ai1ec-event {
497
- background: #568;
498
- color: #fff !important;
499
- }
500
- .ai1ec-month-view .ai1ec-category-colors,
501
- .ai1ec-1day-view .ai1ec-category-colors,
502
- .ai1ec-week-view .ai1ec-category-colors {
503
- float: right;
504
- font-size: 1.2em;
505
- margin-top: 1px;
506
- }
507
- .ai1ec-month-view .ai1ec-event-popup,
508
- .ai1ec-month-view .ai1ec-event-summary,
509
- .ai1ec-1day-view .ai1ec-event-popup,
510
- .ai1ec-1day-view .ai1ec-event-summary,
511
- .ai1ec-week-view .ai1ec-event-popup,
512
- .ai1ec-week-view .ai1ec-event-summary {
513
- border: 2px solid #d4c4b0;
514
- box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
515
- -o-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
516
- -ms-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
517
- -moz-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
518
- -webkit-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
519
- background: #fff;
520
- }
521
- .ai1ec-month-view .ai1ec-event-popup,
522
- .ai1ec-1day-view .ai1ec-event-popup,
523
- .ai1ec-week-view .ai1ec-event-popup {
524
- position: absolute;
525
- z-index: 5;
526
- display: none;
527
- white-space: nowrap;
528
- color: #000 !important;
529
- top: -4px;
530
- left: -2px;
531
- min-width: 100%;
532
- border-radius: 0 0.3em 0.3em 0;
533
- -o-border-radius: 0 0.3em 0.3em 0;
534
- -moz-border-radius: 0 0.3em 0.3em 0;
535
- -webkit-border-radius: 0 0.3em 0.3em 0;
536
- }
537
- .ai1ec-1day-view .ai1ec-event-popup {
538
- top: -3px;
539
- min-width: 75%;
540
- }
541
- .ai1ec-week-view .ai1ec-week .ai1ec-event-popup {
542
- top: -3px;
543
- }
544
- .ai1ec-month-view .ai1ec-event-popup.ai1ec-shifted-right,
545
- .ai1ec-1day-view.ai1ec-event-popup.ai1ec-shifted-right,
546
- .ai1ec-week-view .ai1ec-event-popup.ai1ec-shifted-right {
547
- border-radius: 0.3em 0 0 0.3em;
548
- -o-border-radius: 0.3em 0 0 0.3em;
549
- -moz-border-radius: 0.3em 0 0 0.3em;
550
- -webkit-border-radius: 0.3em 0 0 0.3em;
551
- }
552
- .ai1ec-month-view .ai1ec-event-popup-bg,
553
- .ai1ec-1day-view .ai1ec-event-popup-bg,
554
- .ai1ec-week-view .ai1ec-event-popup-bg {
555
- position: relative;
556
- left: -2px;
557
- margin-right: -1px;
558
- padding: 2px 2px 2px 5px;
559
- background: #fff;
560
- }
561
- .ai1ec-month-view .ai1ec-shifted-right .ai1ec-event-popup-bg,
562
- .ai1ec-1day-view .ai1ec-shifted-right .ai1ec-event-popup-bg,
563
- .ai1ec-week-view .ai1ec-shifted-right .ai1ec-event-popup-bg {
564
- left: 1px;
565
- padding: 2px 5px 2px 2px;
566
- }
567
- .ai1ec-month-view .ai1ec-event-summary,
568
- .ai1ec-month-view .ai1ec-event-summary p,
569
- .ai1ec-1day-view .ai1ec-event-summary,
570
- .ai1ec-1day-view .ai1ec-event-summary p,
571
- .ai1ec-week-view .ai1ec-event-summary,
572
- .ai1ec-week-view .ai1ec-event-summary p {
573
- font-size: 0.95em !important;
574
- }
575
- .ai1ec-month-view .ai1ec-event-summary p,
576
- .ai1ec-1day-view .ai1ec-event-summary p,
577
- .ai1ec-week-view .ai1ec-event-summary p {
578
- line-height: 1.4em !important;
579
- }
580
- .ai1ec-month-view .ai1ec-event-summary,
581
- .ai1ec-1day-view .ai1ec-event-summary,
582
- .ai1ec-week-view .ai1ec-event-summary {
583
- position: absolute;
584
- overflow: hidden;
585
- top: -2px;
586
- white-space: normal;
587
- right: 100%;
588
- width: 13em;
589
- padding: 2px 4px 3px;
590
- border-radius: 0.3em 0 0.3em 0.3em;
591
- -o-border-radius: 0.3em 0 0.3em 0.3em;
592
- -ms-border-radius: 0.3em 0 0.3em 0.3em;
593
- -moz-border-radius: 0.3em 0 0.3em 0.3em;
594
- -webkit-border-radius: 0.3em 0 0.3em 0.3em;
595
- background: linear-gradient( #fff 1.5em, #fdfadc );
596
- background: -o-linear-gradient( #fff 1.5em, #fdfadc );
597
- background: -ms-linear-gradient( #fff 1.5em, #fdfadc );
598
- background: -moz-linear-gradient( #fff 1.5em, #fdfadc );
599
- background: -webkit-gradient( linear, 0% 1.5em, 0% 100%, from(#fff), to(#fdfadc) );
600
- background: -webkit-linear-gradient( #fff 1.5em, #fdfadc );
601
- color: #6d5e4a;
602
- }
603
- .ai1ec-month-view .ai1ec-shifted-right .ai1ec-event-summary,
604
- .ai1ec-1day-view .ai1ec-shifted-right .ai1ec-event-summary,
605
- .ai1ec-week-view .ai1ec-shifted-right .ai1ec-event-summary {
606
- left: 100%;
607
- border-radius: 0 0.3em 0.3em 0.3em;
608
- -o-border-radius: 0 0.3em 0.3em 0.3em;
609
- -moz-border-radius: 0 0.3em 0.3em 0.3em;
610
- -webkit-border-radius: 0 0.3em 0.3em 0.3em;
611
- }
612
- .ai1ec-month-view .ai1ec-event-summary p,
613
- .ai1ec-1day-view .ai1ec-event-summary p,
614
- .ai1ec-week-view .ai1ec-event-summary p {
615
- margin: 0 0 0.3em !important;
616
- padding: 0 !important;
617
- }
618
- .ai1ec-month-view .ai1ec-event-time,
619
- .ai1ec-1day-view .ai1ec-event-time,
620
- .ai1ec-week-view .ai1ec-event-time {
621
- font-size: 8pt;
622
- font-weight: bold;
623
- }
624
- .ai1ec-1day-view .ai1ec-1day .ai1ec-event-title,
625
- .ai1ec-week-view .ai1ec-week .ai1ec-event-title {
626
- display: block;
627
- white-space: normal;
628
- font-size: 8pt !important;
629
- }
630
- .ai1ec-month-view .ai1ec-read-more,
631
- .ai1ec-1day-view .ai1ec-read-more,
632
- .ai1ec-week-view .ai1ec-read-more {
633
- text-align: center;
634
- font-size: 8pt;
635
- color: #aaa;
636
- color: rgba(0,0,0,0.4);
637
- }
638
- /* Month view date scrolling */
639
- .ai1ec-month-view .ai1ec-obscured {
640
- display: none !important;
641
- }
642
- .ai1ec-month-view a.ai1ec-scroll-up,
643
- .ai1ec-month-view a.ai1ec-scroll-down {
644
- display: block;
645
- position: relative;
646
- background: #fff no-repeat center center;
647
- border: 1px solid #ccc;
648
- border-radius: 0.2em;
649
- -moz-border-radius: 0.2em;
650
- -webkit-border-radius: 0.2em;
651
- width: 15px;
652
- height: 11px;
653
- left: 50%;
654
- margin-left: -8px;
655
- }
656
- .ai1ec-month-view a.ai1ec-scroll-up:hover,
657
- .ai1ec-month-view a.ai1ec-scroll-down:hover {
658
- background-color: #ccc;
659
- }
660
- .ai1ec-month-view a.ai1ec-scroll-up.ai1ec-disabled:hover,
661
- .ai1ec-month-view a.ai1ec-scroll-down.ai1ec-disabled:hover {
662
- background-color: transparent;
663
- }
664
- .ai1ec-month-view a.ai1ec-scroll-up {
665
- background-image: url(../img/scroll-up.png);
666
- margin-top: -13px;
667
- margin-bottom: 2px;
668
- }
669
- .ai1ec-month-view a.ai1ec-scroll-down {
670
- background-image: url(../img/scroll-down.png);
671
- }
672
- .ai1ec-month-view a.ai1ec-scroll-up.ai1ec-disabled,
673
- .ai1ec-month-view a.ai1ec-scroll-down.ai1ec-disabled {
674
- opacity: 0.2;
675
- -moz-opacity: 0.2;
676
- filter: alpha(opacity=2);
677
- background-color: transparent;
678
- border: none;
679
- padding: 1px; /* To compensate for height lost by invisible border */
680
- cursor: default;
681
- }
682
-
683
- /* Truncated events */
684
- .ai1ec-1day-view .ai1ec-start-truncated .ai1ec-event-time,
685
- .ai1ec-week-view .ai1ec-start-truncated .ai1ec-event-time {
686
- display: none;
687
- }
688
- .ai1ec-1day-view-view .ai1ec-1day a.ai1ec-event-container.ai1ec-start-truncated,
689
- .ai1ec-week-view .ai1ec-week a.ai1ec-event-container.ai1ec-start-truncated {
690
- border-top-left-radius: 0;
691
- border-top-right-radius: 0;
692
- -moz-border-radius-topleft: 0;
693
- -moz-border-radius-topright: 0;
694
- -webkit-border-top-left-radius: 0;
695
- -webkit-border-top-right-radius: 0;
696
- }
697
- .ai1ec-1day-view .ai1ec-1day .ai1ec-start-truncator,
698
- .ai1ec-week-view .ai1ec-week .ai1ec-start-truncator {
699
- position: absolute;
700
- top: -2px;
701
- left: -2px;
702
- line-height: 1em;
703
- font-size: 6pt;
704
- }
705
- .ai1ec-1day-view .ai1ec-1day a.ai1ec-event-container.ai1ec-end-truncated,
706
- .ai1ec-week-view .ai1ec-week a.ai1ec-event-container.ai1ec-end-truncated {
707
- border-bottom-left-radius: 0;
708
- border-bottom-right-radius: 0;
709
- -moz-border-radius-bottomleft: 0;
710
- -moz-border-radius-bottomright: 0;
711
- -webkit-border-bottom-left-radius: 0;
712
- -webkit-border-bottom-right-radius: 0;
713
- }
714
- .ai1ec-1day-view .ai1ec-1day .ai1ec-end-truncator,
715
- .ai1ec-week-view .ai1ec-week .ai1ec-end-truncator {
716
- position: absolute;
717
- bottom: -2px;
718
- right: -2px;
719
- line-height: 1em;
720
- font-size: 6pt;
721
- }
722
-
723
- /* Agenda view */
724
- .ai1ec-agenda-view {
725
- clear: both;
726
- overflow: hidden;
727
- margin: 0 !important;
728
- padding: 0 !important;
729
- }
730
- .ai1ec-agenda-view .ai1ec-no-results {
731
- font-size: 10pt !important;
732
- font-style: italic;
733
- }
734
- .ai1ec-agenda-view .ai1ec-date-events {
735
- overflow: hidden;
736
- margin: 0 0.75em 0 0 !important;
737
- padding: 0 !important;
738
- }
739
- .ai1ec-agenda-view > li,
740
- .ai1ec-agenda-view .ai1ec-date-events > li {
741
- list-style: none !important;
742
- }
743
- .ai1ec-agenda-view .ai1ec-date {
744
- overflow: hidden;
745
- margin: 0 !important;
746
- padding: 0 !important;
747
- border-top: 1px solid #f2f2f2;
748
- background: #f2f2f2 !important;
749
- background: -o-linear-gradient( #f2f2f2 1em, rgba(255,255,255,0) ) !important;
750
- background: -ms-linear-gradient( #f2f2f2 1em, rgba(255,255,255,0) ) !important;
751
- background: -moz-linear-gradient( #f2f2f2 1em, rgba(255,255,255,0) ) !important;
752
- background: -webkit-gradient( linear, 0 1em, 0 100%, from(#f2f2f2), to(rgba(255,255,255,0)) ) !important;
753
- background: -webkit-linear-gradient( #f2f2f2 1em, rgba(255,255,255,0) ) !important;
754
- }
755
- .ai1ec-agenda-view .ai1ec-date.ai1ec-today {
756
- border-top: 1px solid #ffd;
757
- background: #ffd !important;
758
- background: -o-linear-gradient( #f8f8ce 1em, rgba(255,255,255,0) ) !important;
759
- background: -ms-linear-gradient( #f8f8ce 1em, rgba(255,255,255,0) ) !important;
760
- background: -moz-linear-gradient( #f8f8ce 1em, rgba(255,255,255,0) ) !important;
761
- background: -webkit-gradient( linear, 0 1em, 0 100%, from(#f8f8ce), to(rgba(255,255,255,0)) ) !important;
762
- background: -webkit-linear-gradient( #f8f8ce 1em, rgba(255,255,255,0) ) !important;
763
- background: -o-linear-gradient( #f8f8ce 1em, rgba(255,255,255,0) ) !important;
764
- }
765
- .ai1ec-agenda-view h3.ai1ec-date-title {
766
- width: 4em;
767
- float: left;
768
- margin: 0 0.75em 0.5em !important;
769
- font: 10pt/1.1em Tahoma, Geneva, sans-serif !important;
770
- color: #444;
771
- text-shadow: 0 1px 0 #fff;
772
- -o-text-shadow: 0 1px 0 #fff;
773
- -ms-text-shadow: 0 1px 0 #fff;
774
- -moz-text-shadow: 0 1px 0 #fff;
775
- -webkit-text-shadow: 0 1px 0 #fff;
776
- line-height: 1.1em;
777
- text-align: center;
778
- border: 2px solid #7e9dbd;
779
- border-radius: 0 0 5px 5px;
780
- -o-border-radius: 0 0 0.5em 0.5em;
781
- -moz-border-radius: 0 0 0.5em 0.5em;
782
- -webkit-border-radius: 0 0 0.5em 0.5em;
783
- box-shadow: 0 2px 2px rgba(0,0,0,0.08);
784
- -o-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
785
- -ms-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
786
- -moz-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
787
- -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
788
- background: #fff;
789
- background: -o-linear-gradient( #fff 1em, #eee );
790
- background: -ms-linear-gradient( #fff 1em, #eee );
791
- background: -moz-linear-gradient( #fff 1em, #eee );
792
- background: -webkit-gradient( linear, 0% 1em, 0% 100%, from(#fff), to(#eee) );
793
- background: -webkit-linear-gradient( #fff 1em, #eee );
794
- }
795
- .ai1ec-agenda-view .ai1ec-month {
796
- text-shadow: 0 -1px 0 #000;
797
- -o-text-shadow: 0 -1px 0 #000;
798
- -ms-text-shadow: 0 -1px 0 #000;
799
- -moz-text-shadow: 0 -1px 0 #000;
800
- -webkit-text-shadow: 0 -1px 0 #000;
801
- background: #7e9dbd;
802
- font-size: 0.8em !important;
803
- padding: 0.1em;
804
- text-transform: uppercase;
805
- letter-spacing: 0.2em;
806
- color: #fff;
807
- }
808
- .ai1ec-agenda-view .ai1ec-day {
809
- font-size: 2.2em !important;
810
- padding: 0.3em 0 0.2em !important;
811
- }
812
- .ai1ec-agenda-view .ai1ec-weekday {
813
- font-size: 0.8em !important;
814
- line-height: 1.5em;
815
- }
816
-
817
- /* Agenda view events */
818
- .ai1ec-agenda-view .ai1ec-event {
819
- position: relative;
820
- clear: right;
821
- overflow: hidden;
822
- font-size: 10pt;
823
- text-decoration: none;
824
- padding: 0.1em 0.3em !important;
825
- margin: 0.5em 0 !important;
826
- background: #fff !important;
827
- border: 1px solid #ddd;
828
- border-radius: 0.5em;
829
- -o-border-radius: 0.5em;
830
- -moz-border-radius: 0.5em;
831
- -webkit-border-radius: 0.5em;
832
- }
833
- .ai1ec-agenda-view .ai1ec-event.ai1ec-expanded {
834
- border: 2px solid #D4C4B0;
835
- box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
836
- -o-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
837
- -ms-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
838
- -moz-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
839
- -webkit-box-shadow: 1px 5px 8px rgba(0,0,0,0.08);
840
- }
841
- .ai1ec-agenda-view .ai1ec-event-click {
842
- font-family: Tahoma, Geneva, sans-serif !important;
843
- cursor: pointer;
844
- line-height: 1.3em;
845
- color: #568;
846
- text-shadow: 0 1px 0 #fff;
847
- -o-text-shadow: 0 1px 0 #fff;
848
- -ms-text-shadow: 0 1px 0 #fff;
849
- -moz-text-shadow: 0 1px 0 #fff;
850
- -webkit-text-shadow: 0 1px 0 #fff;
851
- }
852
- .ai1ec-agenda-view .ai1ec-event-time {
853
- float: left;
854
- margin-right: 0.5em;
855
- min-height: 1em;
856
- font-weight: bold;
857
- line-height: 1.3em;
858
- }
859
- .ai1ec-agenda-view .ai1ec-event-title {
860
- margin: 0 0 0 8em;
861
- font-size: 10pt !important;
862
- font-weight: normal;
863
- }
864
- .ai1ec-agenda-view .ai1ec-event.ai1ec-allday {
865
- padding: 0 !important;
866
- }
867
- .ai1ec-agenda-view .ai1ec-allday-label {
868
- font-size: 8pt !important;
869
- color: #b9c0ce;
870
- padding-left: 0.2em;
871
- }
872
- .ai1ec-agenda-view .ai1ec-allday .ai1ec-event-click {
873
- color: #fff;
874
- background: #568;
875
- padding: 0.1em 0.4em;
876
- border-radius: 0.3em;
877
- -o-border-radius: 0.3em;
878
- -moz-border-radius: 0.3em;
879
- -webkit-border-radius: 0.3em;
880
- text-shadow: none;
881
- -o-text-shadow: none;
882
- -ms-text-shadow: none;
883
- -moz-text-shadow: none;
884
- -webkit-text-shadow: none;
885
- }
886
- .ai1ec-agenda-view .ai1ec-allday .ai1ec-event-time {
887
- color: #fff;
888
- }
889
- .ai1ec-agenda-view .ai1ec-allday .ai1ec-event-title {
890
- margin: 0;
891
- }
892
- .ai1ec-agenda-view .ai1ec-event-expand {
893
- float: right;
894
- margin-left: 0.5em;
895
- visibility: hidden;
896
- font-size: 9pt !important;
897
- }
898
- .ai1ec-agenda-view .ai1ec-event:hover,
899
- .ai1ec-agenda-view .ai1ec-event.ai1ec-expanded:hover {
900
- border-color: #aaa;
901
- }
902
- .ai1ec-agenda-view .ai1ec-event:hover .ai1ec-event-click {
903
- color: #000;
904
- }
905
- .ai1ec-agenda-view .ai1ec-allday:hover .ai1ec-event-click {
906
- color: #fff;
907
- background: #3b475f;
908
- }
909
- .ai1ec-agenda-view .ai1ec-event-click:hover > .ai1ec-event-expand {
910
- visibility: visible;
911
- }
912
- .ai1ec-agenda-view .ai1ec-category-colors {
913
- float: left;
914
- font-size: 0.9em;
915
- margin: 0.2em 0.2em 0 -0.2em;
916
- }
917
- .ai1ec-agenda-view .ai1ec-category-colors .ai1ec-category-color {
918
- border: 1px solid rgba(255,255,255,0.7);
919
- }
920
-
921
- /* Agenda view expanded events */
922
- .ai1ec-agenda-view .ai1ec-event-summary {
923
- display: none;
924
- }
925
- .ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-title {
926
- margin: 0.1em 0;
927
- font-size: 11pt !important;
928
- line-height: 1.1em;
929
- }
930
- .ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-time {
931
- width: auto;
932
- float: none;
933
- font-size: 9pt !important;
934
- line-height: 1.5em;
935
- }
936
- .ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-click {
937
- border-bottom: 1px solid #ddd;
938
- }
939
- .ai1ec-agenda-view .ai1ec-allday .ai1ec-event-summary .ai1ec-event-click {
940
- border-bottom: 1px solid #ddd;
941
- border-radius: 0.3em 0.3em 0 0;
942
- -o-border-radius: 0.3em 0.3em 0 0;
943
- -moz-border-radius: 0.3em 0.3em 0 0;
944
- -webkit-border-radius: 0.3em 0.3em 0 0;
945
- }
946
- .ai1ec-agenda-view .ai1ec-categories,
947
- .ai1ec-agenda-view .ai1ec-tags {
948
- font-size: 8pt !important;
949
- }
950
- .ai1ec-agenda-view .ai1ec-event-description {
951
- clear: both;
952
- overflow: hidden;
953
- padding: 0 0 3.6em;
954
- max-height: 20em;
955
- }
956
- .ai1ec-agenda-view .ai1ec-event-description,
957
- .ai1ec-agenda-view .ai1ec-event-description p {
958
- font-size: 9pt !important;
959
- line-height: 1.5em !important;
960
- }
961
- .ai1ec-agenda-view .ai1ec-event-description p {
962
- margin: 0.5em 0 0.75em !important;
963
- padding: 0 !important;
964
- }
965
- .ai1ec-agenda-view .ai1ec-allday .ai1ec-event-description {
966
- position: relative;
967
- overflow: hidden;
968
- padding: 0 0.4em 3.5em;
969
- }
970
- .ai1ec-agenda-view .ai1ec-event-description .ai1ec-label {
971
- font-size: 8pt !important;
972
- font-weight: normal;
973
- }
974
-
975
- /* Agenda event overlay/read more */
976
- .ai1ec-agenda-view .ai1ec-event-overlay {
977
- position: absolute;
978
- z-index: 5;
979
- bottom: 0;
980
- left: 0;
981
- right: 0;
982
- padding: 0.4em 0.5em 0.4em 0.2em;
983
- border-radius: 0 0 0.5em 0.5em;
984
- -o-border-radius: 0 0 0.5em 0.5em;
985
- -moz-border-radius: 0 0 0.5em 0.5em;
986
- -webkit-border-radius: 0 0 0.5em 0.5em;
987
- background: rgba(255,255,255,0.75);
988
- background: -o-linear-gradient( rgba(255,255,255,0.75), #FDFADC );
989
- background: -ms-linear-gradient( rgba(255,255,255,0.75), #FDFADC );
990
- background: -moz-linear-gradient( rgba(255,255,255,0.75), #FDFADC );
991
- background: -webkit-gradient( linear, 0 0, 0 100%, from(rgba(255,255,255,0.75)), to(#FDFADC) );
992
- background: -webkit-linear-gradient( rgba(255,255,255,0.75), #FDFADC );
993
- }
994
- .ai1ec-agenda-view .ai1ec-read-more {
995
- float: right;
996
- margin: 0.6em 0 0.2em;
997
- }
998
-
999
- /* Subscribe */
1000
- .ai1ec-subscribe {
1001
- clear: both;
1002
- }
1003
- .ai1ec-subscribe-filtered {
1004
- display: none;
1005
- }
1006
- /* Category and Tags */
1007
- .ai1ec-filter-selector-container:hover > .ai1ec-filter-selector{
1008
- display: block;
1009
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/event.css DELETED
@@ -1,202 +0,0 @@
1
- /* General table attributes */
2
- table.ai1ec-full-event {
3
- border: none !important;
4
- border-collapse: collapse !important;
5
- width: 100%;
6
- margin-bottom: 0.5em !important;
7
- }
8
- .ai1ec-full-event td {
9
- font-size: 10pt !important;
10
- }
11
- .ai1ec-full-event th, .ai1ec-full-event td {
12
- line-height: 14pt !important;
13
- padding: 0.3em 0.5em !important;
14
- border: none !important;
15
- vertical-align: top;
16
- }
17
- .ai1ec-multi-event th, .ai1ec-multi-event td {
18
- padding: 0.3em 0.5em !important;
19
- }
20
- .ai1ec-full-event th.ai1ec-empty, .ai1ec-full-event td.ai1ec-empty {
21
- padding: 0 !important;
22
- }
23
- .ai1ec-full-event th {
24
- width: 6em;
25
- font-size: 9pt !important;
26
- font-family: sans-serif !important;
27
- font-weight: bold;
28
- color: #888 !important;
29
- text-align: right;
30
- text-shadow: 0 1px 0 #fff;
31
- -moz-text-shadow: 0 1px 0 #fff;
32
- -webkit-text-shadow: 0 1px 0 #fff;
33
- background: #d0d0d0;
34
- background: linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
35
- background: -o-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
36
- background: -ms-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
37
- background: -moz-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
38
- background: -webkit-gradient( linear, 0 0, 100% 0, from(transparent), to(rgba(0,0,0,0.07)) );
39
- background: -webkit-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
40
- }
41
-
42
- /* Event time(s) */
43
- .ai1ec-full-event .ai1ec-time {
44
- line-height: 16pt !important;
45
- vertical-align: middle;
46
- }
47
- .ai1ec-multi-event .ai1ec-time {
48
- line-height: 15pt !important;
49
- }
50
- .ai1ec-full-event td.ai1ec-time {
51
- font-weight: bold;
52
- font-size: 11pt !important;
53
- }
54
- .ai1ec-multi-event td.ai1ec-time {
55
- font-size: 10pt !important;
56
- }
57
- .ai1ec-full-event .ai1ec-allday-label {
58
- font-size: 10pt !important;
59
- color: #bbb;
60
- padding-left: 0.2em;
61
- }
62
- .ai1ec-multi-event .ai1ec-allday-label {
63
- font-size: 9pt !important;
64
- }
65
-
66
- /* Calendar link */
67
- .ai1ec-full-event .ai1ec-calendar-link {
68
- float: right;
69
- margin: -0.1em 0;
70
- }
71
- .ai1ec-multi-event .ai1ec-calendar-link {
72
- font-size: 8pt !important;
73
- }
74
-
75
- /* Location & map */
76
- .ai1ec-full-event td.ai1ec-location {
77
- min-width: 30%;
78
- }
79
- .ai1ec-full-event td.ai1ec-map {
80
- text-align: right;
81
- }
82
- .ai1ec-full-event td.ai1ec-map.ai1ec-has-map {
83
- width: 55%;
84
- text-align: left;
85
- }
86
- .ai1ec-full-event .ai1ec-gmap-container {
87
- border: 1px solid #ddd;
88
- margin-bottom: 0.3em;
89
- position: relative;
90
- }
91
- .ai1ec-full-event #ai1ec-gmap-canvas {
92
- min-width: 18em;
93
- width: 100%;
94
- height: 12em;
95
- }
96
- .ai1ec-full-event .ai1ec-gmap-link {
97
- position: absolute;
98
- margin: 0;
99
- font-size: 0.8em !important;
100
- bottom: 0;
101
- right: 0;
102
- }
103
- .ai1ec-multi-event .ai1ec-gmap-link {
104
- font-size: 8pt !important;
105
- margin: -0.2em 0;
106
- }
107
- .ai1ec-full-event #ai1ec-gmap-canvas input {
108
- margin: 0 !important;
109
- }
110
- .ai1ec-gmap-placeholder {
111
- min-width: 18em;
112
- width: 100%;
113
- height: 12em;
114
- border: 1px dashed #ddd;
115
- text-align: center;
116
- cursor: pointer;
117
- color: #ddd;
118
- margin-bottom: 0.3em;
119
- }
120
- .ai1ec-gmap-placeholder:hover {
121
- border-color: #000;
122
- color: #000;
123
- }
124
- .ai1ec-gmap-placeholder strong {
125
- position: relative;
126
- top: 45%;
127
- }
128
- .ai1ec-gmap-container-hidden {
129
- position: absolute !important;
130
- visibility: hidden;
131
- }
132
-
133
- /* Contact info */
134
- .ai1ec-full-event .ai1ec-contact a {
135
- white-space: nowrap;
136
- }
137
-
138
- /* Categories and tags */
139
- .ai1ec-full-event td.ai1ec-tags, .ai1ec-full-event td.ai1ec-categories {
140
- padding: 0.1em 0.2em !important;
141
- }
142
- .ai1ec-full-event .ai1ec-category {
143
- float: left;
144
- }
145
- .ai1ec-multi-event .ai1ec-category {
146
- font: 8pt Tahoma, Geneva, sans-serif !important;
147
- }
148
- .ai1ec-full-event .ai1ec-tag {
149
- font-size: 0.9em !important;
150
- }
151
-
152
- /* Footer */
153
- .ai1ec-event-footer {
154
- clear: left;
155
- font-size: 0.9em !important;
156
- font-style: italic;
157
- }
158
- .ai1ec-ics-icon {
159
- background: url(../img/ics-icon.png) no-repeat right;
160
- padding-right: 15px;
161
- }
162
-
163
- /* Excerpts */
164
- .ai1ec-excerpt {
165
- margin-bottom: 0.5em;
166
- font-size: 10pt !important;
167
- line-height: 1.6em;
168
- overflow: hidden;
169
- }
170
- .ai1ec-excerpt > div {
171
- padding-left: 7.2em;
172
- }
173
- .ai1ec-excerpt label {
174
- padding: 0 0.6em !important;
175
- background: #d0d0d0;
176
- background: linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
177
- background: -o-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
178
- background: -ms-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
179
- background: -moz-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
180
- background: -webkit-gradient( linear, 0 0, 100% 0, from(transparent), to(rgba(0,0,0,0.07)) );
181
- background: -webkit-linear-gradient( right, transparent, rgba(0,0,0,0.07) 1em, rgba(0,0,0,0.03) );
182
- text-align: right;
183
- text-shadow: 0 1px 0 #fff;
184
- -moz-text-shadow: 0 1px 0 #fff;
185
- -webkit-text-shadow: 0 1px 0 #fff;
186
- clear: left;
187
- float: left;
188
- width: 6em;
189
- margin-left: -7.2em;
190
- }
191
- .ai1ec-excerpt .ai1ec-time {
192
- font-weight: bold;
193
- }
194
- .ai1ec-excerpt .ai1ec-event-link {
195
- float: right;
196
- font-size: 8pt !important;
197
- }
198
- .ai1ec-excerpt .ai1ec-allday-label {
199
- font-size: 9pt !important;
200
- color: #bbb;
201
- padding-left: 0.2em;
202
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/general.css DELETED
@@ -1,356 +0,0 @@
1
- /* General button styling */
2
- a.ai1ec-button {
3
- cursor: pointer;
4
- font: 10pt/1.1em Tahoma, Geneva, sans-serif !important;
5
- text-decoration: none !important;
6
- color: #666 !important;
7
- text-shadow: 0 1px 0 #fff;
8
- -moz-text-shadow: 0 1px 0 #fff;
9
- -webkit-text-shadow: 0 1px 0 #fff;
10
- padding: 0.4em 0.5em;
11
- margin: 0.1em;
12
- background: #eee;
13
- background: -moz-linear-gradient( #f8f8f8, #ddd );
14
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#f8f8f8), to(#ddd) );
15
- background: -webkit-linear-gradient( #f8f8f8, #ddd );
16
- background: -o-linear-gradient( #f8f8f8, #ddd );
17
- box-shadow: 0 2px 2px rgba(0,0,0,0.08);
18
- -moz-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
19
- -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
20
- border-radius: 0.4em;
21
- -moz-border-radius: 0.4em;
22
- -webkit-border-radius: 0.4em;
23
- text-align: center;
24
- border: 1px solid #ccc;
25
- border-width: 1px;
26
- display: inline-block;
27
- white-space: nowrap;
28
- }
29
- a.ai1ec-button:hover {
30
- color: #444 !important;
31
- background: #ddd;
32
- background: -moz-linear-gradient( #eee, #ccc );
33
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#eee), to(#ccc) );
34
- background: -webkit-linear-gradient( #eee, #ccc );
35
- background: -o-linear-gradient( #eee, #ccc );
36
- }
37
- a.ai1ec-button.ai1ec-selected {
38
- color: #000 !important;
39
- border-color: #909CE0;
40
- background: #DDE6F8;
41
- background: -moz-linear-gradient( #eDf6Ff, #C5D4F3 );
42
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#eDf6Ff), to(#C5D4F3) );
43
- background: -webkit-linear-gradient( #eDf6Ff, #C5D4F3 );
44
- background: -o-linear-gradient( #eDf6Ff, #C5D4F3 );
45
- }
46
- a.ai1ec-button.ai1ec-active {
47
- color: #000 !important;
48
- background: #ddd;
49
- background: -moz-linear-gradient( #ccc, #eee );
50
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#ccc), to(#eee) );
51
- background: -webkit-linear-gradient( #ccc, #eee );
52
- background: -o-linear-gradient( #ccc, #eee );
53
- }
54
- a.ai1ec-button.ai1ec-active.ai1ec-selected {
55
- background: #DDE6F8;
56
- background: -moz-linear-gradient( #C5D4F3, #eDf6Ff );
57
- background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(#C5D4F3), to(#eDf6Ff) );
58
- background: -webkit-linear-gradient( #C5D4F3, #eDf6Ff );
59
- background: -o-linear-gradient( #C5D4F3, #eDf6Ff );
60
- }
61
- li > a.ai1ec-button {
62
- display: block;
63
- margin: 0;
64
- border-radius: 0;
65
- -moz-border-radius: 0;
66
- -webkit-border-radius: 0;
67
- border-left-width: 0;
68
- }
69
- li:first-child > a.ai1ec-button {
70
- border-radius: 0.4em 0 0 0.4em;
71
- -moz-border-radius: 0.4em 0 0 0.4em;
72
- -webkit-border-radius: 0.4em 0 0 0.4em;
73
- border-left-width: 1px;
74
- }
75
- li:last-child > a.ai1ec-button {
76
- border-radius: 0 0.4em 0.4em 0;
77
- -moz-border-radius: 0 0.4em 0.4em 0;
78
- -webkit-border-radius: 0 0.4em 0.4em 0;
79
- }
80
- li:first-child:last-child > a.ai1ec-button {
81
- border-radius: 0.4em;
82
- -moz-border-radius: 0.4em;
83
- -webkit-border-radius: 0.4em;
84
- }
85
-
86
- /* General AJAX */
87
- .ai1ec-loading {
88
- position: absolute;
89
- z-index: 9;
90
- top: 0;
91
- left: 0;
92
- width: 100%;
93
- height: 100%;
94
- background: url( ../img/ajax-loader.gif ) no-repeat center center;
95
- display: none;
96
- }
97
-
98
- /* Label styling */
99
- label.ai1ec-label {
100
- padding: 0 0.2em;
101
- font-family: Tahoma, Geneva, sans-serif !important;
102
- font-size: 9pt !important;
103
- font-weight: bold;
104
- color: #888 !important;
105
- }
106
-
107
- /* Categories */
108
- .ai1ec-category {
109
- cursor: pointer;
110
- font: 0.9em Tahoma, Geneva, sans-serif !important;
111
- border: 1px solid #dcdcdc;
112
- text-shadow: 0 1px 0 #fff;
113
- -moz-text-shadow: 0 1px 0 #fff;
114
- -webkit-text-shadow: 0 1px 0 #fff;
115
- padding: 2pt 3pt !important;
116
- margin: 0.2em !important;
117
- text-decoration: none !important;
118
- text-transform: uppercase;
119
- letter-spacing: 1pt;
120
- white-space: nowrap;
121
- color: #666 !important;
122
- background: #f0f0f0;
123
- border-radius: 0.3em;
124
- -moz-border-radius: 0.3em;
125
- -webkit-border-radius: 0.3em;
126
- }
127
- .ai1ec-category:hover {
128
- color: #222 !important;
129
- background: #dcdcdc;
130
- }
131
- .ai1ec-category.ai1ec-selected {
132
- background: #C5D4F3;
133
- border-color: #7A86D9;
134
- }
135
-
136
- /* Tags */
137
- .ai1ec-tag {
138
- color: #568 !important;
139
- font-family: Tahoma, Geneva, sans-serif !important;
140
- line-height: 1.3em !important;
141
- cursor: pointer;
142
- white-space: nowrap;
143
- margin: 0.1em 0.2em;
144
- padding: 0.1em 0.2em;
145
- border-radius: 0.3em;
146
- -moz-border-radius: 0.3em;
147
- -webkit-border-radius: 0.3em;
148
- display: inline-block;
149
- }
150
- .ai1ec-tag:hover {
151
- color: #000 !important;
152
- text-decoration: underline;
153
- }
154
- .ai1ec-tag.ai1ec-selected {
155
- background: #CDDBF5;
156
- }
157
-
158
- /* Category color */
159
- .ai1ec-category-color {
160
- display: inline-block;
161
- width: 0.9em;
162
- height: 0.9em;
163
- margin: 0 1px;
164
- border-radius: 0.2em;
165
- -o-border-radius: 0.2em;
166
- -moz-border-radius: 0.2em;
167
- -webkit-border-radius: 0.2em;
168
- }
169
-
170
- /* Subscribe buttons */
171
- .ai1ec-subscribe-google img {
172
- float: left;
173
- width: 30px !important;
174
- height: 32px !important;
175
- margin: -10px 0.5em -8px 0 !important;
176
- padding: 0 !important;
177
- border: none !important;
178
- background: none !important;
179
- }
180
-
181
- /* Widget views */
182
- .ai1ec-agenda-widget-view div {
183
- margin: 0;
184
- }
185
- .ai1ec-agenda-widget-view {
186
- font-size: 0.8em !important;
187
- overflow: hidden;
188
- }
189
- .ai1ec-agenda-widget-view .ai1ec-no-results {
190
- font-style: italic;
191
- font-size: 1.4em !important;
192
- }
193
- .ai1ec-agenda-widget-view > ol {
194
- margin: 0 !important;
195
- padding: 0 !important;
196
- }
197
- .ai1ec-agenda-widget-view li {
198
- list-style: none !important;
199
- border: none !important;
200
- }
201
- .ai1ec-agenda-widget-view .ai1ec-date-events {
202
- overflow: hidden;
203
- margin: 0 0.5em 0 0 !important;
204
- padding: 0 !important;
205
- }
206
- .ai1ec-agenda-widget-view .ai1ec-date {
207
- overflow: hidden;
208
- margin: 0 !important;
209
- padding: 0 !important;
210
- border-top: 1px solid #f2f2f2;
211
- border-bottom: 1px solid #fff;
212
- background: #f8f8f8;
213
- background: -o-linear-gradient( #f2f2f2 1em, #fff );
214
- background: -ms-linear-gradient( #f2f2f2 1em, #fff );
215
- background: -moz-linear-gradient( #f2f2f2 1em, #fff );
216
- background: -webkit-gradient( linear, 0 1em, 0 100%, from(#f2f2f2), to(#fff) );
217
- background: -webkit-linear-gradient( #f2f2f2 1em, #fff );
218
- }
219
- .ai1ec-agenda-widget-view .ai1ec-date.ai1ec-today {
220
- border-top: 1px solid #eec;
221
- border-bottom: 1px solid #fff;
222
- background: #ffd;
223
- background: -o-linear-gradient( #f8f8ce 1em, #fff );
224
- background: -ms-linear-gradient( #f8f8ce 1em, #fff );
225
- background: -moz-linear-gradient( #f8f8ce 1em, #fff );
226
- background: -webkit-gradient( linear, 0 1em, 0 100%, from(#f8f8ce), to(#fff) );
227
- background: -webkit-linear-gradient( #f8f8ce 1em, #fff );
228
- background: -o-linear-gradient( #f8f8ce 1em, #fff );
229
- }
230
- .ai1ec-agenda-widget-view h3.ai1ec-date-title {
231
- width: 3.5em;
232
- float: left;
233
- margin: 0 0.5em 0.5em !important;
234
- font: 1em/1.1em Tahoma, Geneva, sans-serif !important;
235
- color: #444;
236
- text-shadow: 0 1px 0 #fff;
237
- -o-text-shadow: 0 1px 0 #fff;
238
- -ms-text-shadow: 0 1px 0 #fff;
239
- -moz-text-shadow: 0 1px 0 #fff;
240
- -webkit-text-shadow: 0 1px 0 #fff;
241
- line-height: 1.1em;
242
- text-align: center;
243
- border: 2px solid #7e9dbd;
244
- border-radius: 0 0 5px 5px;
245
- -o-border-radius: 0 0 0.5em 0.5em;
246
- -moz-border-radius: 0 0 0.5em 0.5em;
247
- -webkit-border-radius: 0 0 0.5em 0.5em;
248
- box-shadow: 0 2px 2px rgba(0,0,0,0.08);
249
- -o-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
250
- -ms-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
251
- -moz-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
252
- -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.08);
253
- background: #fff;
254
- background: -o-linear-gradient( #fff 1em, #eee );
255
- background: -ms-linear-gradient( #fff 1em, #eee );
256
- background: -moz-linear-gradient( #fff 1em, #eee );
257
- background: -webkit-gradient( linear, 0% 1em, 0% 100%, from(#fff), to(#eee) );
258
- background: -webkit-linear-gradient( #fff 1em, #eee );
259
- }
260
- .ai1ec-agenda-widget-view .ai1ec-month {
261
- text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
262
- -o-text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
263
- -ms-text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
264
- -moz-text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
265
- -webkit-text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
266
- background: #7e9dbd;
267
- font-size: 0.9em !important;
268
- padding: 0.1em 0 0.2em;
269
- text-transform: uppercase;
270
- letter-spacing: 0.2em;
271
- color: #fff;
272
- }
273
- .ai1ec-agenda-widget-view .ai1ec-day {
274
- font-size: 1.7em !important;
275
- padding: 0.3em 0 0.2em !important;
276
- }
277
- .ai1ec-agenda-widget-view .ai1ec-weekday {
278
- font-size: 0.9em !important;
279
- line-height: 1.5em;
280
- }
281
- /* Agenda view events */
282
- .ai1ec-agenda-widget-view .ai1ec-event {
283
- font-family: Tahoma, Geneva, sans-serif !important;
284
- position: relative;
285
- clear: right;
286
- overflow: hidden;
287
- font-size: 1.2em;
288
- margin: 0.5em 0 !important;
289
- padding: 0 !important;
290
- line-height: 1.3em;
291
- }
292
- .ai1ec-agenda-widget-view .ai1ec-event a {
293
- display: block;
294
- background: #fff;
295
- border: 1px solid #ddd;
296
- border-radius: 0.4em;
297
- -o-border-radius: 0.4em;
298
- -ms-border-radius: 0.4em;
299
- -moz-border-radius: 0.4em;
300
- -webkit-border-radius: 0.4em;
301
- padding: 0.2em 0.4em !important;
302
- text-decoration: none !important;
303
- color: #568;
304
- }
305
- .ai1ec-agenda-widget-view .ai1ec-event a:hover {
306
- border-color: #aaa;
307
- text-decoration: none !important;
308
- }
309
- .ai1ec-agenda-widget-view .ai1ec-event-time {
310
- font-weight: bold;
311
- }
312
- .ai1ec-agenda-widget-view .ai1ec-event-title {
313
- font-weight: normal;
314
- }
315
- .ai1ec-agenda-widget-view .ai1ec-event.ai1ec-allday a {
316
- background: #568;
317
- border: none;
318
- color: #fff;
319
- }
320
- .ai1ec-agenda-widget-view .ai1ec-event.ai1ec-allday a:hover {
321
- border: none;
322
- background: #3b475f;
323
- }
324
- .ai1ec-agenda-widget-view .ai1ec-allday-label {
325
- font-size: 8pt !important;
326
- color: #b9c0ce;
327
- padding-left: 0.2em;
328
- }
329
- .ai1ec-agenda-widget-view .ai1ec-allday .ai1ec-event-time {
330
- color: #fff;
331
- }
332
- .ai1ec-agenda-widget-view .ai1ec-category-colors {
333
- font-size: 0.9em;
334
- }
335
- .ai1ec-agenda-widget-view .ai1ec-category-colors .ai1ec-category-color {
336
- margin: 0 0 -0.1em;
337
- border: 1px solid rgba(255,255,255,0.7);
338
- }
339
- /* Widget view buttons */
340
- .ai1ec-agenda-widget-view .ai1ec-button {
341
- font-size: 1em !important;
342
- margin: 0.3em 0;
343
- }
344
- .ai1ec-agenda-widget-view .ai1ec-calendar-link {
345
- font-size: 1.2em !important;
346
- float: right;
347
- }
348
- .ai1ec-agenda-widget-view .ai1ec-subscribe-buttons {
349
- float: left;
350
- margin-top: 0.3em;
351
- }
352
- .ai1ec-agenda-widget-view .ai1ec-subscribe-google img {
353
- width: 19px;
354
- height: 20px;
355
- margin: -5px 0.5em -5px 0;
356
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/settings.css DELETED
@@ -1,185 +0,0 @@
1
- #the-seed-studio-settings div.inside {
2
- background: #fff;
3
- margin: 0 !important;
4
- padding: 6px 0 8px;
5
- }
6
- #the-seed-studio-settings a {
7
- font-weight: bold;
8
- }
9
- .ai1ec_feed_h4 {
10
- margin-bottom: 5px;
11
- }
12
- .column-1-ai1ec {
13
- float: left;
14
- width: 54%;
15
- }
16
- .column-2-ai1ec {
17
- float: right;
18
- width: 45%;
19
- }
20
- .column-3-ai1ec {
21
- float: left;
22
- width: 100%;
23
- }
24
- .ai1ec-plugin-branding {
25
- padding: 0 20px 0 20px;
26
- }
27
- .ai1ec-plugin-logo {
28
- position: relative;
29
- margin-left: -15px;
30
- }
31
-
32
- .ai1ec-support-button {
33
- float:right;
34
- width:280px;
35
- text-align: center;
36
- margin: 1em 0 1em 1em;
37
- }
38
- .ai1ec-support-button a {
39
- font-size: 24px;
40
- font-weight: normal !important;
41
- color:#fff;
42
- text-decoration: none;
43
- text-transform: uppercase;
44
- text-align: center;
45
- display: block;
46
- padding: 10px 30px 10px 30px;
47
- margin: 0 auto;
48
- border-radius: 10px;
49
- -o-border-radius: 10px;
50
- -moz-border-radius: 10px;
51
- -webkit-border-radius:10px;
52
- text-shadow: -1px -1px 1px rgba(0,0,0,.2);
53
- -o-text-shadow: -1px -1px 1px rgba(0,0,0,.2);
54
- -moz-text-shadow: -1px -1px 1px rgba(0,0,0,.2);
55
- -webkit-text-shadow: -1px -1px 1px rgba(0,0,0,.2);
56
- box-shadow: 0 0.3em 0.3em rgba(0,0,0,0.2);
57
- -o-box-shadow: 0 0.3em 0.3em rgba(0,0,0,0.2);
58
- -moz-box-shadow: 0 0.3em 0.3em rgba(0,0,0,0.2);
59
- -webkit-box-shadow: 0 0.3em 0.3em rgba(0,0,0,0.2);
60
- border:1px solid #fff;
61
- }
62
- .ai1ec-support-button a:link, .ai1ec-support-button a:visited {
63
- background: #88b633;
64
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#91bb35', endColorstr='#548a26');
65
- background: linear-gradient(#91bb35, #548a26);
66
- background: -o-linear-gradient(#91bb35, #548a26);
67
- background: -moz-linear-gradient(#91bb35, #548a26);
68
- background: -webkit-gradient(linear, left top, left bottom, from(#91bb35), to(#548a26));
69
- background: -webkit-linear-gradient(#91bb35, #548a26);
70
- }
71
-
72
- .ai1ec-support-button a:hover {
73
- color: #fff;
74
- background: #88b633;
75
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d2e7a2', endColorstr='#91bb35');
76
- background: linear-gradient(#d2e7a2, #91bb35);
77
- background: -o-linear-gradient(#d2e7a2, #91bb35);
78
- background: -moz-linear-gradient(#d2e7a2, #91bb35);
79
- background: -webkit-gradient(linear, left top, left bottom, from(#d2e7a2), to(#91bb35));
80
- background: -webkit-linear-gradient(#d2e7a2, #91bb35);
81
- }
82
-
83
- .ai1ec-support-button a span {
84
- display: block;
85
- padding-top:2px;
86
- font-size: .5em;
87
- color:#e5f3ca;
88
- text-align: center;
89
- text-transform: lowercase;
90
- }
91
-
92
- .column-1-ai1ec #general-settings {
93
- line-height: 1.7em;
94
- }
95
- .column-1-ai1ec #general-settings div.inside label {
96
- float: left;
97
- clear: left;
98
- margin: 0.25em 0;
99
- }
100
- .column-1-ai1ec #general-settings .checkbox {
101
- float: left;
102
- margin: 0.5em 0.5em 0 0;
103
- }
104
- .column-1-ai1ec #general-settings div.description {
105
- clear: left;
106
- font-size: 0.95em;
107
- line-height: 1.5em;
108
- margin-bottom: 1em;
109
- }
110
- .column-1-ai1ec #general-settings label.textinput {
111
- width: 230px;
112
- }
113
- .column-1-ai1ec #general-settings h2 {
114
- margin-bottom: 0;
115
- margin-top: 10px;
116
- }
117
-
118
- .ai1ec-follow-fan {
119
- padding:10px 0 10px 0;
120
- margin: 10px 0 0 0;
121
- border-top: 1px solid #ccc;
122
- border-bottom: 1px solid #ccc;
123
- }
124
- .ai1ec-facebook-like-top {
125
- float: left;
126
- }
127
-
128
- /* ICS Feeds */
129
- #ai1ec_feed_url,
130
- .ai1ec-feed-url {
131
- width: 100%;
132
- }
133
- .ai1ec-feed-category, .ai1ec-feed-tags {
134
- float: left;
135
- overflow: hidden;
136
- line-height: 2em;
137
- }
138
- .ai1ec-feed-category strong, .ai1ec-feed-tags strong {
139
- margin: 0 1em 0 0.2em;
140
- }
141
- #ai1ec_feed_category, #ai1ec_feed_tags {
142
- width: 15em;
143
- }
144
- #ai1ec_feed_category {
145
- margin-right: 0.5em;
146
- }
147
- .ai1ec-feed-container {
148
- background: #eee;
149
- border: 1px solid #ddd;
150
- padding: 0.3em 0.5em;
151
- border-radius: 0.5em;
152
- -moz-border-radius: 0.5em;
153
- -webkit-border-radius: 0.5em;
154
- overflow: hidden;
155
- position: relative;
156
- margin: 1em 0 0;
157
- }
158
- .ai1ec-feed-container .ajax-loading {
159
- clear: left;
160
- display: block;
161
- }
162
- .ai1ec_feed_h4 {
163
- margin: 0.5em 0;
164
- }
165
- #ai1ec_add_new_ics, .ai1ec_delete_ics {
166
- clear: left;
167
- }
168
- #ai1ec_add_new_ics, .ai1ec_delete_ics, .ai1ec_update_ics, .ai1ec_flush_ics {
169
- float: right;
170
- }
171
- #ai1ec_save_settings {
172
- clear: left;
173
- display: block;
174
- }
175
-
176
- .ai1ec-donate {
177
- text-align: center;
178
- }
179
- #ai1ec-rss-news {
180
- margin: 0;
181
- padding: 0px 0px 0px 20px;
182
- }
183
- #ai1ec-rss-news > li {
184
- list-style: disc;
185
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
img/agenda-view.png DELETED
Binary file
img/blank.gif DELETED
Binary file
img/month-view.png DELETED
Binary file
img/oneday-view.png DELETED
Binary file
img/scroll-down.png DELETED
Binary file
img/scroll-up.png DELETED
Binary file
img/week-view.png DELETED
Binary file
language/all-in-one-event-calendar.pot CHANGED
@@ -1,10 +1,10 @@
1
- # Copyright (C) 2012 All-in-One Event Calendar
2
- # This file is distributed under the same license as the All-in-One Event Calendar package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: All-in-One Event Calendar 1.4\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
- "POT-Creation-Date: 2012-04-02 15:29:25+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -12,27 +12,58 @@ msgstr ""
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: app/controller/class-ai1ec-app-controller.php:407
16
- #: app/controller/class-ai1ec-app-controller.php:408
17
- msgid "Settings"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  msgstr ""
19
 
20
  #. translators: "%s" represents the week's starting date
21
- #: app/controller/class-ai1ec-calendar-controller.php:406
22
- #: app/helper/class-ai1ec-calendar-helper.php:883
23
  #: app/helper/class-ai1ec-calendar-helper.php:892
 
24
  msgid "Week of %s"
25
  msgstr ""
26
 
27
- #: app/controller/class-ai1ec-calendar-controller.php:406
28
  msgid "F j"
29
  msgstr ""
30
 
31
- #: app/controller/class-ai1ec-calendar-controller.php:463
32
- #: app/helper/class-ai1ec-settings-helper.php:158 app/view/calendar.php:33
33
- msgid "Agenda"
34
- msgstr ""
35
-
36
  #: app/controller/class-ai1ec-events-controller.php:153
37
  msgid "This feed is already being imported."
38
  msgstr ""
@@ -41,289 +72,318 @@ msgstr ""
41
  msgid "Please enter a valid iCalendar URL."
42
  msgstr ""
43
 
44
- #: app/controller/class-ai1ec-events-controller.php:333
45
  msgid "Publish"
46
  msgstr ""
47
 
48
- #: app/controller/class-ai1ec-events-controller.php:333
49
- #: app/view/feed_row.php:20
50
  msgid "Update"
51
  msgstr ""
52
 
53
- #: app/controller/class-ai1ec-events-controller.php:335
54
  msgid "Submit for Review"
55
  msgstr ""
56
 
57
- #: app/controller/class-ai1ec-events-controller.php:458
58
  msgid "Event updated. <a href=\"%s\">View event</a>"
59
  msgstr ""
60
 
61
- #: app/controller/class-ai1ec-events-controller.php:459
62
  msgid "Custom field updated."
63
  msgstr ""
64
 
65
- #: app/controller/class-ai1ec-events-controller.php:460
66
  msgid "Custom field deleted."
67
  msgstr ""
68
 
69
- #: app/controller/class-ai1ec-events-controller.php:461
70
  msgid "Event updated."
71
  msgstr ""
72
 
73
  #. translators: %s: date and time of the revision
74
- #: app/controller/class-ai1ec-events-controller.php:463
75
  msgid "Event restored to revision from %s"
76
  msgstr ""
77
 
78
- #: app/controller/class-ai1ec-events-controller.php:464
79
  msgid "Event published. <a href=\"%s\">View event</a>"
80
  msgstr ""
81
 
82
- #: app/controller/class-ai1ec-events-controller.php:465
83
  msgid "Event saved."
84
  msgstr ""
85
 
86
- #: app/controller/class-ai1ec-events-controller.php:466
87
  msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
88
  msgstr ""
89
 
90
- #: app/controller/class-ai1ec-events-controller.php:467
91
  msgid ""
92
  "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
93
  "\">Preview event</a>"
94
  msgstr ""
95
 
96
  #. translators: Publish box date format, see http:php.net/date
97
- #: app/controller/class-ai1ec-events-controller.php:469
98
  msgid "M j, Y @ G:i"
99
  msgstr ""
100
 
101
- #: app/controller/class-ai1ec-events-controller.php:470
102
  msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
103
  msgstr ""
104
 
105
  #: app/controller/class-ai1ec-importer-controller.php:91
106
- msgid "The Events Calendar → All-in-One Event Calendar"
107
  msgstr ""
108
 
109
  #: app/controller/class-ai1ec-importer-controller.php:92
110
  msgid ""
111
  "Imports events created using The Events Calendar plugin into the All-in-One "
112
- "Event Calendar"
113
  msgstr ""
114
 
115
- #: app/controller/class-ai1ec-settings-controller.php:82
 
 
 
 
 
 
 
 
116
  msgid "Settings Updated."
117
  msgstr ""
118
 
119
- #: app/controller/class-ai1ec-settings-controller.php:173
120
  msgid "Flushed %d events"
121
  msgstr ""
122
 
123
- #: app/controller/class-ai1ec-settings-controller.php:181
124
- #: app/controller/class-ai1ec-settings-controller.php:231
125
  msgid "Invalid ICS feed ID"
126
  msgstr ""
127
 
128
- #: app/controller/class-ai1ec-settings-controller.php:216
129
  msgid "No events were found"
130
  msgstr ""
131
 
132
- #: app/controller/class-ai1ec-settings-controller.php:221
133
  msgid "Imported %d events"
134
  msgstr ""
135
 
136
- #: app/controller/class-ai1ec-settings-controller.php:222
137
- #: app/view/feed_row.php:22
138
  msgid "Flush 1 event"
139
  msgid_plural "Flush %s events"
140
  msgstr[0] ""
141
  msgstr[1] ""
142
 
143
- #: app/controller/class-ai1ec-settings-controller.php:291
144
  msgctxt "meta box"
145
  msgid "General Settings"
146
  msgstr ""
147
 
148
- #: app/controller/class-ai1ec-settings-controller.php:299
 
 
 
 
 
 
149
  msgctxt "meta box"
150
- msgid "The Seed Studio Support"
151
  msgstr ""
152
 
153
- #: app/controller/class-ai1ec-settings-controller.php:306
154
  msgctxt "meta box"
155
- msgid "ICS Import Settings"
156
  msgstr ""
157
 
158
- #: app/controller/class-ai1ec-settings-controller.php:355
159
  msgid "<a href=\"%s\">Settings</a>"
160
  msgstr ""
161
 
162
- #: app/controller/class-ai1ec-settings-controller.php:369
163
  msgid "<a href=\"%s\" target=\"_blank\">Donate</a>"
164
  msgstr ""
165
 
166
- #: app/controller/class-ai1ec-settings-controller.php:370
167
  msgid "<a href=\"%s\" target=\"_blank\">Get Support</a>"
168
  msgstr ""
169
 
170
- #: app/helper/class-ai1ec-app-helper.php:147
171
  msgctxt "Custom post type name"
172
  msgid "Events"
173
  msgstr ""
174
 
175
- #: app/helper/class-ai1ec-app-helper.php:148
176
  msgctxt "Custom post type name (singular)"
177
  msgid "Event"
178
  msgstr ""
179
 
180
- #: app/helper/class-ai1ec-app-helper.php:149
181
  msgid "Add New"
182
  msgstr ""
183
 
184
- #: app/helper/class-ai1ec-app-helper.php:150
185
  msgid "Add New Event"
186
  msgstr ""
187
 
188
- #: app/helper/class-ai1ec-app-helper.php:151
189
  msgid "Edit Event"
190
  msgstr ""
191
 
192
- #: app/helper/class-ai1ec-app-helper.php:152
193
  msgid "New Event"
194
  msgstr ""
195
 
196
- #: app/helper/class-ai1ec-app-helper.php:153
197
  msgid "View Event"
198
  msgstr ""
199
 
200
- #: app/helper/class-ai1ec-app-helper.php:154
201
  msgid "Search Events"
202
  msgstr ""
203
 
204
- #: app/helper/class-ai1ec-app-helper.php:155
205
  msgid "No Events found"
206
  msgstr ""
207
 
208
- #: app/helper/class-ai1ec-app-helper.php:156
209
  msgid "No Events found in Trash"
210
  msgstr ""
211
 
212
- #: app/helper/class-ai1ec-app-helper.php:157
213
  msgid "Parent Event"
214
  msgstr ""
215
 
216
- #: app/helper/class-ai1ec-app-helper.php:158
217
  msgid "Events"
218
  msgstr ""
219
 
220
- #: app/helper/class-ai1ec-app-helper.php:205
221
  msgctxt "Event categories taxonomy"
222
  msgid "Event Categories"
223
  msgstr ""
224
 
225
- #: app/helper/class-ai1ec-app-helper.php:206
226
  msgctxt "Event categories taxonomy (singular)"
227
  msgid "Event Category"
228
  msgstr ""
229
 
230
- #: app/helper/class-ai1ec-app-helper.php:213
231
  msgctxt "Event tags taxonomy"
232
  msgid "Event Tags"
233
  msgstr ""
234
 
235
- #: app/helper/class-ai1ec-app-helper.php:214
236
  msgctxt "Event tags taxonomy (singular)"
237
  msgid "Event Tag"
238
  msgstr ""
239
 
240
- #: app/helper/class-ai1ec-app-helper.php:221
241
  msgctxt "Event feeds taxonomy"
242
  msgid "Event Feeds"
243
  msgstr ""
244
 
245
- #: app/helper/class-ai1ec-app-helper.php:222
246
  msgctxt "Event feed taxonomy (singular)"
247
  msgid "Event Feed"
248
  msgstr ""
249
 
250
- #: app/helper/class-ai1ec-app-helper.php:310
251
  msgid "Show All "
252
  msgstr ""
253
 
254
- #: app/helper/class-ai1ec-app-helper.php:342
255
  msgid ""
256
  "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events"
257
  "\"><span class=\"update-count\">%d</span></span>"
258
  msgstr ""
259
 
260
- #: app/helper/class-ai1ec-app-helper.php:348
261
  msgid "All Events"
262
  msgstr ""
263
 
264
- #: app/helper/class-ai1ec-app-helper.php:426
265
  msgid "Event Details"
266
  msgstr ""
267
 
268
- #: app/helper/class-ai1ec-app-helper.php:459
269
  msgid "Post Date"
270
  msgstr ""
271
 
272
- #: app/helper/class-ai1ec-app-helper.php:460
273
  msgid "Event date/time"
274
  msgstr ""
275
 
276
- #: app/helper/class-ai1ec-app-helper.php:698
277
- msgid ""
278
- "%sTo set up the plugin: %s 1. Select an option in the <strong>Calendar page</"
279
- "strong> dropdown list. %s 2. Select an option in the <strong>Timezone</"
280
- "strong> dropdown list. %s 3. Click <strong>Update Settings</strong>. %s"
281
  msgstr ""
282
 
283
- #: app/helper/class-ai1ec-app-helper.php:700
284
- msgid ""
285
- "To set up the plugin: Select an option in the <strong>Calendar page</strong> "
286
- "dropdown list, the click <strong>Update Settings</strong>."
287
  msgstr ""
288
 
289
- #: app/helper/class-ai1ec-app-helper.php:702
290
- msgid ""
291
- "To set up the plugin: Select an option in the <strong>Timezone</strong> "
292
- "dropdown list, the click <strong>Update Settings</strong>."
293
  msgstr ""
294
 
295
- #: app/helper/class-ai1ec-app-helper.php:706
296
  msgid ""
297
  "The plugin is installed, but has not been configured. <a href=\"%s\">Click "
298
  "here to set it up now &raquo;</a>"
299
  msgstr ""
300
 
301
- #: app/helper/class-ai1ec-app-helper.php:712
302
  msgid ""
303
- "The plugin is installed, but has not been configured. Please log in as a "
304
- "WordPress Administrator to set it up."
 
 
 
 
305
  msgstr ""
306
 
307
- #: app/helper/class-ai1ec-app-helper.php:714
308
- msgid "All-in-One Event Calendar Notice:"
309
  msgstr ""
310
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
311
  #. translators: "%s" represents the week's starting date
312
- #: app/helper/class-ai1ec-calendar-helper.php:791
313
- #: app/helper/class-ai1ec-calendar-helper.php:798
314
  msgid "j F Y"
315
  msgstr ""
316
 
317
- #: app/helper/class-ai1ec-calendar-helper.php:884
318
  #: app/helper/class-ai1ec-calendar-helper.php:893
 
319
  msgid "M j"
320
  msgstr ""
321
 
322
- #: app/helper/class-ai1ec-calendar-helper.php:925
323
  msgid "« Previous Events"
324
  msgstr ""
325
 
326
- #: app/helper/class-ai1ec-calendar-helper.php:932
327
  msgid "Next Events »"
328
  msgstr ""
329
 
@@ -418,137 +478,142 @@ msgid "weekend day"
418
  msgstr ""
419
 
420
  #: app/helper/class-ai1ec-events-helper.php:607
421
- #: app/helper/class-ai1ec-events-helper.php:626
422
- #: app/helper/class-ai1ec-events-helper.php:1676
423
- #: app/helper/class-ai1ec-settings-helper.php:240 app/view/box_repeat.php:2
 
424
  msgid "Daily"
425
  msgstr ""
426
 
427
  #: app/helper/class-ai1ec-events-helper.php:608
428
- #: app/helper/class-ai1ec-events-helper.php:627
429
- #: app/helper/class-ai1ec-events-helper.php:1688 app/view/box_repeat.php:3
 
430
  msgid "Weekly"
431
  msgstr ""
432
 
433
  #: app/helper/class-ai1ec-events-helper.php:609
434
- #: app/helper/class-ai1ec-events-helper.php:628
435
- #: app/helper/class-ai1ec-events-helper.php:1700 app/view/box_repeat.php:4
 
436
  msgid "Monthly"
437
  msgstr ""
438
 
439
  #: app/helper/class-ai1ec-events-helper.php:610
440
- #: app/helper/class-ai1ec-events-helper.php:629
441
- #: app/helper/class-ai1ec-events-helper.php:1712 app/view/box_repeat.php:5
 
442
  msgid "Yearly"
443
  msgstr ""
444
 
445
- #: app/helper/class-ai1ec-events-helper.php:651
446
  msgid "day(s)"
447
  msgstr ""
448
 
449
- #: app/helper/class-ai1ec-events-helper.php:680
450
  msgid "week(s)"
451
  msgstr ""
452
 
453
- #: app/helper/class-ai1ec-events-helper.php:750
454
  msgid "month(s)"
455
  msgstr ""
456
 
457
- #: app/helper/class-ai1ec-events-helper.php:773
458
  msgid "year(s)"
459
  msgstr ""
460
 
461
- #: app/helper/class-ai1ec-events-helper.php:1360
462
  msgid "Never"
463
  msgstr ""
464
 
465
- #: app/helper/class-ai1ec-events-helper.php:1361
466
  msgid "After"
467
  msgstr ""
468
 
469
- #: app/helper/class-ai1ec-events-helper.php:1362 app/view/box_repeat.php:28
 
470
  msgid "On date"
471
  msgstr ""
472
 
473
- #: app/helper/class-ai1ec-events-helper.php:1555
474
- #: app/helper/class-ai1ec-events-helper.php:1564
475
- #: app/helper/class-ai1ec-events-helper.php:1572
476
  msgctxt "Recurrence editor - weekly tab"
477
  msgid "on"
478
  msgstr ""
479
 
480
- #: app/helper/class-ai1ec-events-helper.php:1560
481
- #: app/helper/class-ai1ec-events-helper.php:1589
482
- #: app/helper/class-ai1ec-events-helper.php:1627
483
  msgid "and"
484
  msgstr ""
485
 
486
- #: app/helper/class-ai1ec-events-helper.php:1585
487
- #: app/helper/class-ai1ec-events-helper.php:1592
488
- #: app/helper/class-ai1ec-events-helper.php:1598
489
- #: app/helper/class-ai1ec-events-helper.php:1609
490
  msgctxt "Recurrence editor - monthly tab"
491
  msgid "on"
492
  msgstr ""
493
 
494
- #: app/helper/class-ai1ec-events-helper.php:1585
495
- #: app/helper/class-ai1ec-events-helper.php:1592
496
- #: app/helper/class-ai1ec-events-helper.php:1598
497
  msgid "of the month"
498
  msgstr ""
499
 
500
- #: app/helper/class-ai1ec-events-helper.php:1622
501
- #: app/helper/class-ai1ec-events-helper.php:1630
502
- #: app/helper/class-ai1ec-events-helper.php:1637
503
  msgctxt "Recurrence editor - yearly tab"
504
  msgid "on"
505
  msgstr ""
506
 
507
- #: app/helper/class-ai1ec-events-helper.php:1679
508
  msgid "Every other day"
509
  msgstr ""
510
 
511
- #: app/helper/class-ai1ec-events-helper.php:1681
512
  msgid "Every %d days"
513
  msgstr ""
514
 
515
- #: app/helper/class-ai1ec-events-helper.php:1691
516
  msgid "Every other week"
517
  msgstr ""
518
 
519
- #: app/helper/class-ai1ec-events-helper.php:1693
520
  msgid "Every %d weeks"
521
  msgstr ""
522
 
523
- #: app/helper/class-ai1ec-events-helper.php:1703
524
  msgid "Every other month"
525
  msgstr ""
526
 
527
- #: app/helper/class-ai1ec-events-helper.php:1705
528
  msgid "Every %d months"
529
  msgstr ""
530
 
531
- #: app/helper/class-ai1ec-events-helper.php:1715
532
  msgid "Every other year"
533
  msgstr ""
534
 
535
- #: app/helper/class-ai1ec-events-helper.php:1717
536
  msgid "Every %d years"
537
  msgstr ""
538
 
539
- #: app/helper/class-ai1ec-events-helper.php:1737
540
  msgid "until %s"
541
  msgstr ""
542
 
543
- #: app/helper/class-ai1ec-events-helper.php:1740
544
  msgid "for %d occurrences"
545
  msgstr ""
546
 
547
- #: app/helper/class-ai1ec-events-helper.php:1742
548
  msgid "forever"
549
  msgstr ""
550
 
551
- #: app/helper/class-ai1ec-events-helper.php:1839
552
  msgid "times"
553
  msgstr ""
554
 
@@ -556,738 +621,767 @@ msgstr ""
556
  msgid "- Auto-Create New Page -"
557
  msgstr ""
558
 
559
- #: app/helper/class-ai1ec-settings-helper.php:107
560
  msgid "View \"%s\" »"
561
  msgstr ""
562
 
563
- #: app/helper/class-ai1ec-settings-helper.php:149 app/view/calendar.php:18
564
- #: app/view/calendar.php:19
565
- msgid "Day"
566
- msgstr ""
567
-
568
- #: app/helper/class-ai1ec-settings-helper.php:152 app/view/calendar.php:11
569
- #: app/view/calendar.php:12 app/view/calendar.php:32
570
- msgid "Month"
571
- msgstr ""
572
-
573
- #: app/helper/class-ai1ec-settings-helper.php:155 app/view/calendar.php:25
574
- #: app/view/calendar.php:26
575
- msgid "Week"
576
- msgstr ""
577
-
578
- #: app/helper/class-ai1ec-settings-helper.php:207
579
  msgid "Default (d/m/y)"
580
  msgstr ""
581
 
582
- #: app/helper/class-ai1ec-settings-helper.php:210
583
  msgid "US (m/d/y)"
584
  msgstr ""
585
 
586
- #: app/helper/class-ai1ec-settings-helper.php:213
587
  msgid "ISO 8601 (y-m-d)"
588
  msgstr ""
589
 
590
- #: app/helper/class-ai1ec-settings-helper.php:216
591
  msgid "Dotted (m.d.y)"
592
  msgstr ""
593
 
594
- #: app/helper/class-ai1ec-settings-helper.php:234
595
  msgid "Hourly"
596
  msgstr ""
597
 
598
- #: app/helper/class-ai1ec-settings-helper.php:237
599
  msgid "Twice Daily"
600
  msgstr ""
601
 
602
- #: app/helper/class-ai1ec-settings-helper.php:324
603
- msgid "Calendar"
604
- msgstr ""
605
-
606
- #: app/model/class-ai1ec-event.php:496
607
  msgid " (all-day)"
608
  msgstr ""
609
 
610
- #: app/view/agenda-widget-form.php:2
611
- msgid "Title:"
612
- msgstr ""
613
-
614
- #: app/view/agenda-widget-form.php:6
615
- msgid "Number of events to show:"
616
- msgstr ""
617
-
618
- #: app/view/agenda-widget-form.php:14
619
- msgid "Events with these <strong>Categories</strong>"
620
- msgstr ""
621
-
622
- #: app/view/agenda-widget-form.php:23
623
- msgid "No categories found."
624
- msgstr ""
625
-
626
- #: app/view/agenda-widget-form.php:30
627
- msgid "<strong>Or</strong> events with these <strong>Tags</strong>"
628
- msgstr ""
629
-
630
- #: app/view/agenda-widget-form.php:39
631
- msgid "No tags found."
632
- msgstr ""
633
-
634
- #: app/view/agenda-widget-form.php:46
635
- msgid "<strong>Or</strong> any of these <strong>Events</strong>"
636
- msgstr ""
637
-
638
- #: app/view/agenda-widget-form.php:55
639
- msgid "No events found."
640
- msgstr ""
641
-
642
- #: app/view/agenda-widget-form.php:62
643
- msgid "Show <strong>View Calendar</strong> button"
644
- msgstr ""
645
-
646
- #: app/view/agenda-widget-form.php:65
647
- msgid "Show <strong>Subscribe</strong> buttons"
648
- msgstr ""
649
-
650
- #: app/view/agenda-widget-form.php:68
651
- msgid "Hide this widget on calendar page"
652
- msgstr ""
653
-
654
- #: app/view/agenda-widget.php:11
655
- msgid "There are no upcoming events."
656
- msgstr ""
657
-
658
- #: app/view/agenda-widget.php:59
659
- msgid "View Calendar »"
660
  msgstr ""
661
 
662
- #: app/view/agenda-widget.php:67 app/view/calendar.php:117
663
  msgid ""
664
- "Subscribe to this calendar using your favourite calendar program (iCal, "
665
- "Outlook, etc.)"
666
- msgstr ""
667
-
668
- #: app/view/agenda-widget.php:68 app/view/calendar.php:118
669
- msgid "✔ Subscribe"
670
- msgstr ""
671
-
672
- #: app/view/agenda-widget.php:72 app/view/calendar.php:123
673
- msgid "Subscribe to this calendar in your Google Calendar"
674
- msgstr ""
675
-
676
- #: app/view/agenda-widget.php:74
677
- msgid "Add to Google"
678
- msgstr ""
679
-
680
- #: app/view/agenda.php:5
681
- msgid "+ Expand All"
682
- msgstr ""
683
-
684
- #: app/view/agenda.php:8
685
- msgid "− Collapse All"
686
- msgstr ""
687
-
688
- #: app/view/agenda.php:12 app/view/month.php:4 app/view/oneday.php:4
689
- #: app/view/week.php:4
690
- msgid "Today"
691
- msgstr ""
692
-
693
- #: app/view/agenda.php:29
694
- msgid "There are no upcoming events to display at this time."
695
- msgstr ""
696
-
697
- #: app/view/agenda.php:59 app/view/agenda.php:109 app/view/month.php:68
698
- #: app/view/oneday.php:64 app/view/week.php:69
699
- msgid "(all-day)"
700
- msgstr ""
701
-
702
- #: app/view/agenda.php:77
703
- msgid "Read more »"
704
- msgstr ""
705
-
706
- #: app/view/agenda.php:81 app/view/event-multi.php:45
707
- #: app/view/event-single.php:57
708
- msgid "Categories:"
709
- msgstr ""
710
-
711
- #: app/view/agenda.php:87 app/view/event-multi.php:51
712
- #: app/view/event-single.php:64
713
- msgid "Tags:"
714
  msgstr ""
715
 
716
- #: app/view/box_event_contact.php:1
717
  msgid "Organizer contact info"
718
  msgstr ""
719
 
720
- #: app/view/box_event_contact.php:7
721
  msgid "Contact name:"
722
  msgstr ""
723
 
724
- #: app/view/box_event_contact.php:17
725
  msgid "Phone:"
726
  msgstr ""
727
 
728
- #: app/view/box_event_contact.php:27
729
  msgid "E-mail:"
730
  msgstr ""
731
 
732
- #: app/view/box_event_cost.php:1
733
  msgid "Event cost"
734
  msgstr ""
735
 
736
- #: app/view/box_event_cost.php:7
737
  msgid "Cost"
738
  msgstr ""
739
 
740
- #: app/view/box_event_location.php:1
741
  msgid "Event location details"
742
  msgstr ""
743
 
744
- #: app/view/box_event_location.php:7
745
  msgid "Venue name:"
746
  msgstr ""
747
 
748
- #: app/view/box_event_location.php:17
749
  msgid "Address:"
750
  msgstr ""
751
 
752
- #: app/view/box_event_location.php:27
753
  msgid "Show Google Map:"
754
  msgstr ""
755
 
756
- #: app/view/box_eventbrite.php:1
757
  msgid "Eventbrite Ticketing"
758
  msgstr ""
759
 
760
- #: app/view/box_eventbrite.php:7
761
  msgid "Register this event with Eventbrite.com?"
762
  msgstr ""
763
 
764
- #: app/view/box_eventbrite.php:12
765
  msgid "Yes"
766
  msgstr ""
767
 
768
- #: app/view/box_eventbrite.php:14
769
  msgid "No"
770
  msgstr ""
771
 
772
- #: app/view/box_eventbrite.php:22
773
  msgid "Set up your first ticket"
774
  msgstr ""
775
 
776
- #: app/view/box_eventbrite.php:24
777
  msgid ""
778
  "To create multiple tickets per event, submit this form, then follow the link "
779
  "to Eventbrite."
780
  msgstr ""
781
 
782
- #: app/view/box_eventbrite.php:32
783
  msgid "Name"
784
  msgstr ""
785
 
786
- #: app/view/box_eventbrite.php:42
787
  msgid "Description"
788
  msgstr ""
789
 
790
- #: app/view/box_eventbrite.php:53
791
  msgid "Type"
792
  msgstr ""
793
 
794
- #: app/view/box_eventbrite.php:58
795
  msgid "Set Price"
796
  msgstr ""
797
 
798
- #: app/view/box_eventbrite.php:60
799
  msgid "Donation Based"
800
  msgstr ""
801
 
802
- #: app/view/box_eventbrite.php:68
803
  msgid ""
804
  "The price for this event's first ticket will be taken from the Cost field "
805
  "above."
806
  msgstr ""
807
 
808
- #: app/view/box_eventbrite.php:75
809
  msgid "Quantity"
810
  msgstr ""
811
 
812
- #: app/view/box_eventbrite.php:85
813
  msgid "Include Fee in Price"
814
  msgstr ""
815
 
816
- #: app/view/box_eventbrite.php:90
817
  msgid "Add Service Fee on top of price"
818
  msgstr ""
819
 
820
- #: app/view/box_eventbrite.php:92
821
  msgid "Include Service fee in price"
822
  msgstr ""
823
 
824
- #: app/view/box_eventbrite.php:98
825
  msgid "Payment Options"
826
  msgstr ""
827
 
828
- #: app/view/box_eventbrite.php:103
829
  msgid "Paypal"
830
  msgstr ""
831
 
832
- #: app/view/box_eventbrite.php:105
833
  msgid "Google Checkout"
834
  msgstr ""
835
 
836
- #: app/view/box_eventbrite.php:107
837
  msgid "Check"
838
  msgstr ""
839
 
840
- #: app/view/box_eventbrite.php:109
841
  msgid "Cash"
842
  msgstr ""
843
 
844
- #: app/view/box_eventbrite.php:111
845
  msgid "Send an Invoice"
846
  msgstr ""
847
 
848
- #: app/view/box_general_settings.php:1
849
- msgid "Viewing Events"
 
 
 
 
850
  msgstr ""
851
 
852
- #: app/view/box_general_settings.php:3
853
- msgid "Calendar page:"
854
  msgstr ""
855
 
856
- #: app/view/box_general_settings.php:7
857
- msgid "Default calendar view:"
858
  msgstr ""
859
 
860
- #: app/view/box_general_settings.php:12
861
- msgid "Timezone:"
862
  msgstr ""
863
 
864
- #: app/view/box_general_settings.php:17
865
- msgid "Contain calendar in this DOM element:"
866
  msgstr ""
867
 
868
- #: app/view/box_general_settings.php:19
869
- msgid ""
870
- "Optional. Provide a <a href=\"http://api.jquery.com/category/selectors/\" "
871
- "target=\"_blank\">jQuery selector</a> that evaluates to a single DOM "
872
- "element. Replaces any existing markup found within target. If left empty, "
873
- "calendar is shown in normal page content container."
 
 
 
 
 
 
 
 
 
 
 
 
874
  msgstr ""
875
 
876
- #: app/view/box_general_settings.php:21
877
  msgid "Week starts on"
878
  msgstr ""
879
 
880
- #: app/view/box_general_settings.php:25
881
  msgid "Agenda pages show at most"
882
  msgstr ""
883
 
884
- #: app/view/box_general_settings.php:26
885
  msgid "events"
886
  msgstr ""
887
 
888
- #: app/view/box_general_settings.php:31
889
  msgid "Keep all events <strong>expanded</strong> in the agenda view"
890
  msgstr ""
891
 
892
- #: app/view/box_general_settings.php:37
893
  msgid "<strong>Exclude</strong> events from search results"
894
  msgstr ""
895
 
896
- #: app/view/box_general_settings.php:43
897
  msgid ""
898
  "Show <strong>Post Your Event</strong> button above the calendar to "
899
  "privileged users"
900
  msgstr ""
901
 
902
- #: app/view/box_general_settings.php:49
903
  msgid ""
904
  "Hide <strong>Subscribe</strong>/<strong>Add to Calendar</strong> buttons in "
905
  "calendar and single event views"
906
  msgstr ""
907
 
908
- #: app/view/box_general_settings.php:55
909
  msgid "Hide <strong>Google Maps</strong> until clicked"
910
  msgstr ""
911
 
912
- #: app/view/box_general_settings.php:61
913
- msgid ""
914
- "Use the configured <strong>region</strong> (WordPress locale) to bias the "
915
- "address autocomplete function"
916
- msgstr ""
917
-
918
- #: app/view/box_general_settings.php:67
919
  msgid "Include <strong>event categories</strong> in post category lists"
920
  msgstr ""
921
 
922
- #: app/view/box_general_settings.php:71
923
  msgid "Adding/Editing Events"
924
  msgstr ""
925
 
926
- #: app/view/box_general_settings.php:73
927
  msgid "Input dates in this format:"
928
  msgstr ""
929
 
930
- #: app/view/box_general_settings.php:79
931
  msgid "Use <strong>24h time</strong> in time pickers"
932
  msgstr ""
933
 
934
- #: app/view/box_general_settings.php:85
935
- msgid "Display <strong>Publish</strong> at bottom of Edit Event form"
936
  msgstr ""
937
 
938
- #: app/view/box_general_settings.php:89
939
- msgid "Sharing data"
940
- msgstr ""
941
-
942
- #: app/view/box_general_settings.php:93
943
- msgid "Allow The Seed to collect statistics"
944
- msgstr ""
945
-
946
- #: app/view/box_ics_import_settings.php:2
947
- msgid "Auto-refresh"
948
- msgstr ""
949
-
950
- #: app/view/box_ics_import_settings.php:8 app/view/feed_row.php:3
951
- msgid "iCalendar/.ics Feed URL:"
952
  msgstr ""
953
 
954
- #: app/view/box_ics_import_settings.php:12
955
- msgid "Event category"
956
  msgstr ""
957
 
958
- #: app/view/box_ics_import_settings.php:18 app/view/feed_row.php:15
959
- msgid "Tag with"
960
  msgstr ""
961
 
962
- #: app/view/box_ics_import_settings.php:22
963
- msgid "+ Add new subscription"
964
  msgstr ""
965
 
966
- #: app/view/box_repeat.php:14
967
  msgid "End"
968
  msgstr ""
969
 
970
- #: app/view/box_repeat.php:21
971
  msgid "Ending after"
972
  msgstr ""
973
 
974
- #: app/view/box_repeat.php:36
975
  msgid "Apply"
976
  msgstr ""
977
 
978
- #: app/view/box_repeat.php:37
979
  msgid "Cancel"
980
  msgstr ""
981
 
982
- #. #-#-#-#-# plugin.pot (All-in-One Event Calendar 1.4) #-#-#-#-#
983
- #. Author of the plugin/theme
984
- #: app/view/box_the_seed_studio.php:4
985
- msgid "The Seed Studio"
986
  msgstr ""
987
 
988
- #: app/view/box_the_seed_studio.php:7
989
  msgid ""
990
- "The Seed Studio provides web development and support services for clients "
991
- "and web developers."
992
  msgstr ""
993
 
994
- #: app/view/box_the_seed_studio.php:14
995
- msgid "Follow @theseednet"
996
  msgstr ""
997
 
998
- #: app/view/box_the_seed_studio.php:20
999
- msgid "Get Support<span> from one of our experienced pros</span>"
 
 
1000
  msgstr ""
1001
 
1002
- #: app/view/box_the_seed_studio.php:23
1003
- msgid "Support"
1004
  msgstr ""
1005
 
1006
- #: app/view/box_the_seed_studio.php:25
1007
- msgid "View plugin documentation"
1008
  msgstr ""
1009
 
1010
- #: app/view/box_the_seed_studio.php:28
1011
- msgid ""
1012
- "You can also hire The Seed for support on a contract or per-hour basis for "
1013
- "this plugin, for your website or for any of your Internet marketing needs "
1014
- "(we can really help!)."
1015
  msgstr ""
1016
 
1017
- #: app/view/box_the_seed_studio.php:31
1018
- msgid ""
1019
- "Plugin users: The Seed gives support priority to clients. For free support "
1020
- "from other WordPress users, visit the plugin's forum."
1021
  msgstr ""
1022
 
1023
- #: app/view/box_the_seed_studio.php:34
1024
- msgid "Vote and Share"
1025
  msgstr ""
1026
 
1027
- #: app/view/box_the_seed_studio.php:36
1028
  msgid ""
1029
- "This plugin is offered free to the Wordpress Community under the GPL3 "
1030
- "license. All we ask is that you:"
1031
  msgstr ""
1032
 
1033
- #: app/view/box_the_seed_studio.php:38
1034
  msgid ""
1035
- "<a href=\"http://wordpress.org/extend/plugins/all-in-one-event-calendar/\" "
1036
- "target=\"_blank\">Give it a five-star rating on wordpress.org</a> (if you "
1037
- "think it deserves it!)"
1038
- msgstr ""
1039
-
1040
- #: app/view/box_the_seed_studio.php:39
1041
- msgid "Link to the plugin page on our website"
1042
  msgstr ""
1043
 
1044
- #: app/view/box_the_seed_studio.php:40
1045
- msgid "Become a Fan on Facebook"
1046
  msgstr ""
1047
 
1048
- #: app/view/box_the_seed_studio.php:41
1049
- msgid "Follow us on Twitter"
1050
- msgstr ""
1051
-
1052
- #: app/view/box_the_seed_studio.php:46
1053
- msgid "Latest from the Seed Network"
1054
- msgstr ""
1055
-
1056
- #: app/view/box_time_and_date.php:2
1057
  msgid "Event date and time"
1058
  msgstr ""
1059
 
1060
- #: app/view/box_time_and_date.php:8
1061
  msgid "All-day event"
1062
  msgstr ""
1063
 
1064
- #: app/view/box_time_and_date.php:18
1065
  msgid "Start date / time"
1066
  msgstr ""
1067
 
1068
- #: app/view/box_time_and_date.php:31
1069
  msgid "End date / time"
1070
  msgstr ""
1071
 
1072
- #: app/view/box_time_and_date.php:46
1073
  msgid "Repeat"
1074
  msgstr ""
1075
 
1076
- #: app/view/box_time_and_date.php:60
1077
  msgid "Exclude"
1078
  msgstr ""
1079
 
1080
- #: app/view/box_time_and_date.php:67
1081
  msgid "Choose a rule for exclusion"
1082
  msgstr ""
1083
 
1084
- #: app/view/box_time_and_date.php:73
1085
  msgid "Exclude dates"
1086
  msgstr ""
1087
 
1088
- #: app/view/box_time_and_date.php:80
1089
  msgid "Select date range"
1090
  msgstr ""
1091
 
1092
- #: app/view/box_time_and_date.php:85
1093
  msgid "Choose specific dates to exclude"
1094
  msgstr ""
1095
 
1096
- #: app/view/calendar.php:42
1097
- msgid "+ Post Your Event"
1098
  msgstr ""
1099
 
1100
- #: app/view/calendar.php:51
1101
- msgid "Clear Filters"
 
 
1102
  msgstr ""
1103
 
1104
- #: app/view/calendar.php:51
1105
- msgid ""
1106
  msgstr ""
1107
 
1108
- #: app/view/calendar.php:52
1109
- msgid "Filter:"
1110
  msgstr ""
1111
 
1112
- #: app/view/calendar.php:57
1113
- msgid "Categories "
1114
  msgstr ""
1115
 
1116
- #: app/view/calendar.php:79
1117
- msgid "Tags "
1118
  msgstr ""
1119
 
1120
- #: app/view/calendar.php:119
1121
- msgid "to this filtered calendar"
1122
  msgstr ""
1123
 
1124
- #: app/view/calendar.php:125
1125
- msgid "Subscribe in Google Calendar"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1126
  msgstr ""
1127
 
1128
- #: app/view/class-ai1ec-agenda-widget.php:18
1129
- #: app/view/class-ai1ec-agenda-widget.php:39
 
 
 
 
1130
  msgid "Upcoming Events"
1131
  msgstr ""
1132
 
1133
- #: app/view/class-ai1ec-agenda-widget.php:20
1134
- msgid "All-in-One Event Calendar: Lists upcoming events in Agenda view"
1135
  msgstr ""
1136
 
1137
- #: app/view/event-excerpt.php:2 app/view/event-multi.php:4
1138
- #: app/view/event-single.php:5
1139
- msgid "When:"
1140
  msgstr ""
1141
 
1142
- #: app/view/event-excerpt.php:4 app/view/event-multi.php:20
1143
- #: app/view/event-single.php:25
1144
- msgid "Where:"
1145
  msgstr ""
1146
 
1147
- #: app/view/event-map.php:2
1148
- msgid "Click to view map"
1149
  msgstr ""
1150
 
1151
- #: app/view/event-map.php:9
1152
- msgid "View Full-Size Map »"
1153
  msgstr ""
1154
 
1155
- #: app/view/event-multi.php:7
1156
- msgid "View in Calendar »"
1157
  msgstr ""
1158
 
1159
- #: app/view/event-multi.php:14 app/view/event-single.php:15
1160
- msgid "Repeats:"
 
 
1161
  msgstr ""
1162
 
1163
- #: app/view/event-multi.php:24
1164
- msgid "View Map »"
1165
  msgstr ""
1166
 
1167
- #: app/view/event-multi.php:33 app/view/event-single.php:45
1168
- msgid "Cost:"
1169
  msgstr ""
1170
 
1171
- #: app/view/event-multi.php:39 app/view/event-single.php:51
1172
- msgid "Contact:"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  msgstr ""
1174
 
1175
- #: app/view/event-single-footer.php:4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1176
  msgid ""
1177
- "This post was replicated from another site's <a class=\"ai1ec-ics-icon\" "
1178
- "href=\"%s\" title=\"iCalendar feed\">calendar feed</a>."
1179
  msgstr ""
1180
 
1181
- #: app/view/event-single-footer.php:8
1182
- msgid "View original post »"
 
1183
  msgstr ""
1184
 
1185
- #: app/view/event-single.php:8
1186
- msgid "Back to Calendar »"
 
1187
  msgstr ""
1188
 
1189
- #: app/view/event-single.php:21
1190
- msgid "Excluding:"
1191
  msgstr ""
1192
 
1193
- #: app/view/event-single.php:32
1194
- msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
 
1195
  msgstr ""
1196
 
1197
- #: app/view/event-single.php:33
1198
- msgid " Add to Calendar"
1199
  msgstr ""
1200
 
1201
- #: app/view/event-single.php:36
1202
- msgid "Add this event to your Google Calendar"
1203
  msgstr ""
1204
 
1205
- #: app/view/event-single.php:38
1206
- msgid "Add to Google Calendar"
1207
  msgstr ""
1208
 
1209
- #: app/view/event_categories-color_picker.php:5
1210
- #: app/view/event_categories-color_picker.php:19
1211
- msgid "Category Color"
 
1212
  msgstr ""
1213
 
1214
- #: app/view/event_categories-color_picker.php:13
1215
- #: app/view/event_categories-color_picker.php:25
1216
- msgid "Events in this category will be identified by this color"
1217
  msgstr ""
1218
 
1219
- #: app/view/feed_row.php:9
1220
- msgid "Event category:"
 
1221
  msgstr ""
1222
 
1223
- #: app/view/feed_row.php:19
1224
- msgid "× Delete"
 
1225
  msgstr ""
1226
 
1227
- #: app/view/import.php:6
1228
- msgid "Successfully imported events:"
1229
  msgstr ""
1230
 
1231
- #: app/view/month.php:50 app/view/oneday.php:50 app/view/oneday.php:115
1232
- #: app/view/week.php:55 app/view/week.php:127
1233
- msgid "Summary:"
1234
  msgstr ""
1235
 
1236
- #: app/view/month.php:53 app/view/oneday.php:53 app/view/oneday.php:118
1237
- #: app/view/week.php:58 app/view/week.php:130
1238
- msgid "click anywhere for details"
1239
  msgstr ""
1240
 
1241
- #: app/view/oneday.php:28 app/view/week.php:33
1242
- msgid "All-day"
1243
  msgstr ""
1244
 
1245
- #: app/view/row_daily.php:3 app/view/row_monthly.php:3
1246
- #: app/view/row_monthly.php:22 app/view/row_weekly.php:3
1247
- #: app/view/row_yearly.php:3
1248
- msgid "Every"
1249
  msgstr ""
1250
 
1251
- #: app/view/row_monthly.php:9
1252
- msgid "On day of the month"
1253
  msgstr ""
1254
 
1255
- #: app/view/row_monthly.php:13
1256
- msgid "On day of the week"
 
 
1257
  msgstr ""
1258
 
1259
- #: app/view/row_weekly.php:6
1260
- msgctxt "Recurrence editor - weekly tab"
1261
- msgid "On"
 
1262
  msgstr ""
1263
 
1264
- #: app/view/row_yearly.php:7
1265
- msgctxt "Recurrence editor - yearly tab"
1266
- msgid "In"
1267
  msgstr ""
1268
 
1269
- #: app/view/settings.php:5
1270
- msgid "All-in-one Event Calendar"
1271
  msgstr ""
1272
 
1273
- #: app/view/settings.php:16
1274
- msgid "Update Settings"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1275
  msgstr ""
1276
 
1277
  #. Plugin Name of the plugin/theme
1278
- msgid "All-in-One Event Calendar"
1279
  msgstr ""
1280
 
 
1281
  #. Plugin URI of the plugin/theme
1282
- msgid "http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/"
 
 
1283
  msgstr ""
1284
 
1285
  #. Description of the plugin/theme
1286
  msgid ""
1287
- "An event calendar system with month, week, agenda views, upcoming events "
1288
  "widget, color-coded categories, recurrence, and import/export of .ics feeds."
1289
  msgstr ""
1290
 
1291
- #. Author URI of the plugin/theme
1292
- msgid "http://theseednetwork.com/"
1293
  msgstr ""
1
+ # Copyright (C) 2012 All-in-One Calendar by Then.ly
2
+ # This file is distributed under the same license as the All-in-One Calendar by Then.ly package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: All-in-One Calendar by Then.ly 1.6\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/all-in-one-event-calendar\n"
7
+ "POT-Creation-Date: 2012-05-09 22:49:47+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: app/controller/class-ai1ec-app-controller.php:412
16
+ #: app/controller/class-ai1ec-app-controller.php:413
17
+ msgid "Calendar Feeds"
18
+ msgstr ""
19
+
20
+ #: app/controller/class-ai1ec-app-controller.php:428
21
+ #: app/controller/class-ai1ec-app-controller.php:429
22
+ #: app/helper/class-ai1ec-settings-helper.php:320
23
+ msgid "Calendar"
24
+ msgstr ""
25
+
26
+ #: app/controller/class-ai1ec-app-controller.php:443
27
+ #: app/controller/class-ai1ec-app-controller.php:444
28
+ msgid "Upgrade"
29
+ msgstr ""
30
+
31
+ #: app/controller/class-ai1ec-app-controller.php:631
32
+ msgid "You do not have sufficient permissions to update plugins for this site."
33
+ msgstr ""
34
+
35
+ #: app/controller/class-ai1ec-calendar-controller.php:220
36
+ #: app/helper/class-ai1ec-settings-helper.php:151
37
+ msgid "Month"
38
+ msgstr ""
39
+
40
+ #: app/controller/class-ai1ec-calendar-controller.php:221
41
+ #: app/helper/class-ai1ec-settings-helper.php:154
42
+ msgid "Week"
43
+ msgstr ""
44
+
45
+ #: app/controller/class-ai1ec-calendar-controller.php:222
46
+ #: app/helper/class-ai1ec-settings-helper.php:148
47
+ msgid "Day"
48
+ msgstr ""
49
+
50
+ #: app/controller/class-ai1ec-calendar-controller.php:223
51
+ #: app/controller/class-ai1ec-calendar-controller.php:477
52
+ #: app/helper/class-ai1ec-settings-helper.php:157
53
+ msgid "Agenda"
54
  msgstr ""
55
 
56
  #. translators: "%s" represents the week's starting date
57
+ #: app/controller/class-ai1ec-calendar-controller.php:420
 
58
  #: app/helper/class-ai1ec-calendar-helper.php:892
59
+ #: app/helper/class-ai1ec-calendar-helper.php:901
60
  msgid "Week of %s"
61
  msgstr ""
62
 
63
+ #: app/controller/class-ai1ec-calendar-controller.php:420
64
  msgid "F j"
65
  msgstr ""
66
 
 
 
 
 
 
67
  #: app/controller/class-ai1ec-events-controller.php:153
68
  msgid "This feed is already being imported."
69
  msgstr ""
72
  msgid "Please enter a valid iCalendar URL."
73
  msgstr ""
74
 
75
+ #: app/controller/class-ai1ec-events-controller.php:341
76
  msgid "Publish"
77
  msgstr ""
78
 
79
+ #: app/controller/class-ai1ec-events-controller.php:341
80
+ #: app/view/admin/feed_row.php:20
81
  msgid "Update"
82
  msgstr ""
83
 
84
+ #: app/controller/class-ai1ec-events-controller.php:343
85
  msgid "Submit for Review"
86
  msgstr ""
87
 
88
+ #: app/controller/class-ai1ec-events-controller.php:467
89
  msgid "Event updated. <a href=\"%s\">View event</a>"
90
  msgstr ""
91
 
92
+ #: app/controller/class-ai1ec-events-controller.php:468
93
  msgid "Custom field updated."
94
  msgstr ""
95
 
96
+ #: app/controller/class-ai1ec-events-controller.php:469
97
  msgid "Custom field deleted."
98
  msgstr ""
99
 
100
+ #: app/controller/class-ai1ec-events-controller.php:470
101
  msgid "Event updated."
102
  msgstr ""
103
 
104
  #. translators: %s: date and time of the revision
105
+ #: app/controller/class-ai1ec-events-controller.php:472
106
  msgid "Event restored to revision from %s"
107
  msgstr ""
108
 
109
+ #: app/controller/class-ai1ec-events-controller.php:473
110
  msgid "Event published. <a href=\"%s\">View event</a>"
111
  msgstr ""
112
 
113
+ #: app/controller/class-ai1ec-events-controller.php:474
114
  msgid "Event saved."
115
  msgstr ""
116
 
117
+ #: app/controller/class-ai1ec-events-controller.php:475
118
  msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
119
  msgstr ""
120
 
121
+ #: app/controller/class-ai1ec-events-controller.php:476
122
  msgid ""
123
  "Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
124
  "\">Preview event</a>"
125
  msgstr ""
126
 
127
  #. translators: Publish box date format, see http:php.net/date
128
+ #: app/controller/class-ai1ec-events-controller.php:478
129
  msgid "M j, Y @ G:i"
130
  msgstr ""
131
 
132
+ #: app/controller/class-ai1ec-events-controller.php:479
133
  msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
134
  msgstr ""
135
 
136
  #: app/controller/class-ai1ec-importer-controller.php:91
137
+ msgid "The Events Calendar → All-in-One Calendar"
138
  msgstr ""
139
 
140
  #: app/controller/class-ai1ec-importer-controller.php:92
141
  msgid ""
142
  "Imports events created using The Events Calendar plugin into the All-in-One "
143
+ "Calendar"
144
  msgstr ""
145
 
146
+ #: app/controller/class-ai1ec-settings-controller.php:60
147
+ msgid "All-in-One Calendar: Settings"
148
+ msgstr ""
149
+
150
+ #: app/controller/class-ai1ec-settings-controller.php:79
151
+ msgid "All-in-One Calendar: Calendar Feeds"
152
+ msgstr ""
153
+
154
+ #: app/controller/class-ai1ec-settings-controller.php:100
155
  msgid "Settings Updated."
156
  msgstr ""
157
 
158
+ #: app/controller/class-ai1ec-settings-controller.php:190
159
  msgid "Flushed %d events"
160
  msgstr ""
161
 
162
+ #: app/controller/class-ai1ec-settings-controller.php:196
163
+ #: app/controller/class-ai1ec-settings-controller.php:243
164
  msgid "Invalid ICS feed ID"
165
  msgstr ""
166
 
167
+ #: app/controller/class-ai1ec-settings-controller.php:230
168
  msgid "No events were found"
169
  msgstr ""
170
 
171
+ #: app/controller/class-ai1ec-settings-controller.php:235
172
  msgid "Imported %d events"
173
  msgstr ""
174
 
175
+ #: app/controller/class-ai1ec-settings-controller.php:236
176
+ #: app/view/admin/feed_row.php:22
177
  msgid "Flush 1 event"
178
  msgid_plural "Flush %s events"
179
  msgstr[0] ""
180
  msgstr[1] ""
181
 
182
+ #: app/controller/class-ai1ec-settings-controller.php:301
183
  msgctxt "meta box"
184
  msgid "General Settings"
185
  msgstr ""
186
 
187
+ #: app/controller/class-ai1ec-settings-controller.php:310
188
+ msgctxt "meta box"
189
+ msgid "Advanced Settings"
190
+ msgstr ""
191
+
192
+ #: app/controller/class-ai1ec-settings-controller.php:319
193
+ #: app/controller/class-ai1ec-settings-controller.php:348
194
  msgctxt "meta box"
195
+ msgid "Then.ly Support"
196
  msgstr ""
197
 
198
+ #: app/controller/class-ai1ec-settings-controller.php:339
199
  msgctxt "meta box"
200
+ msgid "Feed Subscriptions"
201
  msgstr ""
202
 
203
+ #: app/controller/class-ai1ec-settings-controller.php:364
204
  msgid "<a href=\"%s\">Settings</a>"
205
  msgstr ""
206
 
207
+ #: app/controller/class-ai1ec-settings-controller.php:378
208
  msgid "<a href=\"%s\" target=\"_blank\">Donate</a>"
209
  msgstr ""
210
 
211
+ #: app/controller/class-ai1ec-settings-controller.php:379
212
  msgid "<a href=\"%s\" target=\"_blank\">Get Support</a>"
213
  msgstr ""
214
 
215
+ #: app/helper/class-ai1ec-app-helper.php:156
216
  msgctxt "Custom post type name"
217
  msgid "Events"
218
  msgstr ""
219
 
220
+ #: app/helper/class-ai1ec-app-helper.php:157
221
  msgctxt "Custom post type name (singular)"
222
  msgid "Event"
223
  msgstr ""
224
 
225
+ #: app/helper/class-ai1ec-app-helper.php:158
226
  msgid "Add New"
227
  msgstr ""
228
 
229
+ #: app/helper/class-ai1ec-app-helper.php:159
230
  msgid "Add New Event"
231
  msgstr ""
232
 
233
+ #: app/helper/class-ai1ec-app-helper.php:160
234
  msgid "Edit Event"
235
  msgstr ""
236
 
237
+ #: app/helper/class-ai1ec-app-helper.php:161
238
  msgid "New Event"
239
  msgstr ""
240
 
241
+ #: app/helper/class-ai1ec-app-helper.php:162
242
  msgid "View Event"
243
  msgstr ""
244
 
245
+ #: app/helper/class-ai1ec-app-helper.php:163
246
  msgid "Search Events"
247
  msgstr ""
248
 
249
+ #: app/helper/class-ai1ec-app-helper.php:164
250
  msgid "No Events found"
251
  msgstr ""
252
 
253
+ #: app/helper/class-ai1ec-app-helper.php:165
254
  msgid "No Events found in Trash"
255
  msgstr ""
256
 
257
+ #: app/helper/class-ai1ec-app-helper.php:166
258
  msgid "Parent Event"
259
  msgstr ""
260
 
261
+ #: app/helper/class-ai1ec-app-helper.php:167
262
  msgid "Events"
263
  msgstr ""
264
 
265
+ #: app/helper/class-ai1ec-app-helper.php:214
266
  msgctxt "Event categories taxonomy"
267
  msgid "Event Categories"
268
  msgstr ""
269
 
270
+ #: app/helper/class-ai1ec-app-helper.php:215
271
  msgctxt "Event categories taxonomy (singular)"
272
  msgid "Event Category"
273
  msgstr ""
274
 
275
+ #: app/helper/class-ai1ec-app-helper.php:222
276
  msgctxt "Event tags taxonomy"
277
  msgid "Event Tags"
278
  msgstr ""
279
 
280
+ #: app/helper/class-ai1ec-app-helper.php:223
281
  msgctxt "Event tags taxonomy (singular)"
282
  msgid "Event Tag"
283
  msgstr ""
284
 
285
+ #: app/helper/class-ai1ec-app-helper.php:230
286
  msgctxt "Event feeds taxonomy"
287
  msgid "Event Feeds"
288
  msgstr ""
289
 
290
+ #: app/helper/class-ai1ec-app-helper.php:231
291
  msgctxt "Event feed taxonomy (singular)"
292
  msgid "Event Feed"
293
  msgstr ""
294
 
295
+ #: app/helper/class-ai1ec-app-helper.php:319
296
  msgid "Show All "
297
  msgstr ""
298
 
299
+ #: app/helper/class-ai1ec-app-helper.php:352
300
  msgid ""
301
  "All Events <span class=\"update-plugins count-%d\" title=\"%d Pending Events"
302
  "\"><span class=\"update-count\">%d</span></span>"
303
  msgstr ""
304
 
305
+ #: app/helper/class-ai1ec-app-helper.php:358
306
  msgid "All Events"
307
  msgstr ""
308
 
309
+ #: app/helper/class-ai1ec-app-helper.php:436
310
  msgid "Event Details"
311
  msgstr ""
312
 
313
+ #: app/helper/class-ai1ec-app-helper.php:471
314
  msgid "Post Date"
315
  msgstr ""
316
 
317
+ #: app/helper/class-ai1ec-app-helper.php:472
318
  msgid "Event date/time"
319
  msgstr ""
320
 
321
+ #: app/helper/class-ai1ec-app-helper.php:734
322
+ msgid "Select an option in the <strong>Calendar page</strong> dropdown list."
 
 
 
323
  msgstr ""
324
 
325
+ #: app/helper/class-ai1ec-app-helper.php:737
326
+ msgid "Select an option in the <strong>Timezone</strong> dropdown list."
 
 
327
  msgstr ""
328
 
329
+ #: app/helper/class-ai1ec-app-helper.php:739
330
+ msgid "Click <strong>Update Settings</strong>."
 
 
331
  msgstr ""
332
 
333
+ #: app/helper/class-ai1ec-app-helper.php:744
334
  msgid ""
335
  "The plugin is installed, but has not been configured. <a href=\"%s\">Click "
336
  "here to set it up now &raquo;</a>"
337
  msgstr ""
338
 
339
+ #: app/helper/class-ai1ec-app-helper.php:751
340
  msgid ""
341
+ "The plugin is installed, but has not been configured. Please log in as an "
342
+ "Administrator to set it up."
343
+ msgstr ""
344
+
345
+ #: app/helper/class-ai1ec-app-helper.php:756
346
+ msgid "<p>To set up the plugin:</p>"
347
  msgstr ""
348
 
349
+ #: app/helper/class-ai1ec-app-helper.php:764
350
+ msgid "All-in-One Calendar Notice"
351
  msgstr ""
352
 
353
+ #: app/helper/class-ai1ec-app-helper.php:781
354
+ msgid "Event"
355
+ msgid_plural "Events"
356
+ msgstr[0] ""
357
+ msgstr[1] ""
358
+
359
+ #: app/helper/class-ai1ec-app-helper.php:793
360
+ msgid "Event Category"
361
+ msgid_plural "Event Categories"
362
+ msgstr[0] ""
363
+ msgstr[1] ""
364
+
365
+ #: app/helper/class-ai1ec-app-helper.php:805
366
+ msgid "Event Tag"
367
+ msgid_plural "Event Tags"
368
+ msgstr[0] ""
369
+ msgstr[1] ""
370
+
371
  #. translators: "%s" represents the week's starting date
372
+ #: app/helper/class-ai1ec-calendar-helper.php:800
373
+ #: app/helper/class-ai1ec-calendar-helper.php:807
374
  msgid "j F Y"
375
  msgstr ""
376
 
 
377
  #: app/helper/class-ai1ec-calendar-helper.php:893
378
+ #: app/helper/class-ai1ec-calendar-helper.php:902
379
  msgid "M j"
380
  msgstr ""
381
 
382
+ #: app/helper/class-ai1ec-calendar-helper.php:934
383
  msgid "« Previous Events"
384
  msgstr ""
385
 
386
+ #: app/helper/class-ai1ec-calendar-helper.php:941
387
  msgid "Next Events »"
388
  msgstr ""
389
 
478
  msgstr ""
479
 
480
  #: app/helper/class-ai1ec-events-helper.php:607
481
+ #: app/helper/class-ai1ec-events-helper.php:624
482
+ #: app/helper/class-ai1ec-events-helper.php:1707
483
+ #: app/helper/class-ai1ec-settings-helper.php:239
484
+ #: app/view/admin/box_repeat.php:2
485
  msgid "Daily"
486
  msgstr ""
487
 
488
  #: app/helper/class-ai1ec-events-helper.php:608
489
+ #: app/helper/class-ai1ec-events-helper.php:625
490
+ #: app/helper/class-ai1ec-events-helper.php:1719
491
+ #: app/view/admin/box_repeat.php:3
492
  msgid "Weekly"
493
  msgstr ""
494
 
495
  #: app/helper/class-ai1ec-events-helper.php:609
496
+ #: app/helper/class-ai1ec-events-helper.php:626
497
+ #: app/helper/class-ai1ec-events-helper.php:1731
498
+ #: app/view/admin/box_repeat.php:4
499
  msgid "Monthly"
500
  msgstr ""
501
 
502
  #: app/helper/class-ai1ec-events-helper.php:610
503
+ #: app/helper/class-ai1ec-events-helper.php:627
504
+ #: app/helper/class-ai1ec-events-helper.php:1743
505
+ #: app/view/admin/box_repeat.php:5
506
  msgid "Yearly"
507
  msgstr ""
508
 
509
+ #: app/helper/class-ai1ec-events-helper.php:649
510
  msgid "day(s)"
511
  msgstr ""
512
 
513
+ #: app/helper/class-ai1ec-events-helper.php:678
514
  msgid "week(s)"
515
  msgstr ""
516
 
517
+ #: app/helper/class-ai1ec-events-helper.php:748
518
  msgid "month(s)"
519
  msgstr ""
520
 
521
+ #: app/helper/class-ai1ec-events-helper.php:771
522
  msgid "year(s)"
523
  msgstr ""
524
 
525
+ #: app/helper/class-ai1ec-events-helper.php:1391
526
  msgid "Never"
527
  msgstr ""
528
 
529
+ #: app/helper/class-ai1ec-events-helper.php:1392
530
  msgid "After"
531
  msgstr ""
532
 
533
+ #: app/helper/class-ai1ec-events-helper.php:1393
534
+ #: app/view/admin/box_repeat.php:28
535
  msgid "On date"
536
  msgstr ""
537
 
538
+ #: app/helper/class-ai1ec-events-helper.php:1586
539
+ #: app/helper/class-ai1ec-events-helper.php:1595
540
+ #: app/helper/class-ai1ec-events-helper.php:1603
541
  msgctxt "Recurrence editor - weekly tab"
542
  msgid "on"
543
  msgstr ""
544
 
545
+ #: app/helper/class-ai1ec-events-helper.php:1591
546
+ #: app/helper/class-ai1ec-events-helper.php:1620
547
+ #: app/helper/class-ai1ec-events-helper.php:1658
548
  msgid "and"
549
  msgstr ""
550
 
551
+ #: app/helper/class-ai1ec-events-helper.php:1616
552
+ #: app/helper/class-ai1ec-events-helper.php:1623
553
+ #: app/helper/class-ai1ec-events-helper.php:1629
554
+ #: app/helper/class-ai1ec-events-helper.php:1640
555
  msgctxt "Recurrence editor - monthly tab"
556
  msgid "on"
557
  msgstr ""
558
 
559
+ #: app/helper/class-ai1ec-events-helper.php:1616
560
+ #: app/helper/class-ai1ec-events-helper.php:1623
561
+ #: app/helper/class-ai1ec-events-helper.php:1629
562
  msgid "of the month"
563
  msgstr ""
564
 
565
+ #: app/helper/class-ai1ec-events-helper.php:1653
566
+ #: app/helper/class-ai1ec-events-helper.php:1661
567
+ #: app/helper/class-ai1ec-events-helper.php:1668
568
  msgctxt "Recurrence editor - yearly tab"
569
  msgid "on"
570
  msgstr ""
571
 
572
+ #: app/helper/class-ai1ec-events-helper.php:1710
573
  msgid "Every other day"
574
  msgstr ""
575
 
576
+ #: app/helper/class-ai1ec-events-helper.php:1712
577
  msgid "Every %d days"
578
  msgstr ""
579
 
580
+ #: app/helper/class-ai1ec-events-helper.php:1722
581
  msgid "Every other week"
582
  msgstr ""
583
 
584
+ #: app/helper/class-ai1ec-events-helper.php:1724
585
  msgid "Every %d weeks"
586
  msgstr ""
587
 
588
+ #: app/helper/class-ai1ec-events-helper.php:1734
589
  msgid "Every other month"
590
  msgstr ""
591
 
592
+ #: app/helper/class-ai1ec-events-helper.php:1736
593
  msgid "Every %d months"
594
  msgstr ""
595
 
596
+ #: app/helper/class-ai1ec-events-helper.php:1746
597
  msgid "Every other year"
598
  msgstr ""
599
 
600
+ #: app/helper/class-ai1ec-events-helper.php:1748
601
  msgid "Every %d years"
602
  msgstr ""
603
 
604
+ #: app/helper/class-ai1ec-events-helper.php:1768
605
  msgid "until %s"
606
  msgstr ""
607
 
608
+ #: app/helper/class-ai1ec-events-helper.php:1771
609
  msgid "for %d occurrences"
610
  msgstr ""
611
 
612
+ #: app/helper/class-ai1ec-events-helper.php:1773
613
  msgid "forever"
614
  msgstr ""
615
 
616
+ #: app/helper/class-ai1ec-events-helper.php:1870
617
  msgid "times"
618
  msgstr ""
619
 
621
  msgid "- Auto-Create New Page -"
622
  msgstr ""
623
 
624
+ #: app/helper/class-ai1ec-settings-helper.php:106
625
  msgid "View \"%s\" »"
626
  msgstr ""
627
 
628
+ #: app/helper/class-ai1ec-settings-helper.php:206
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
629
  msgid "Default (d/m/y)"
630
  msgstr ""
631
 
632
+ #: app/helper/class-ai1ec-settings-helper.php:209
633
  msgid "US (m/d/y)"
634
  msgstr ""
635
 
636
+ #: app/helper/class-ai1ec-settings-helper.php:212
637
  msgid "ISO 8601 (y-m-d)"
638
  msgstr ""
639
 
640
+ #: app/helper/class-ai1ec-settings-helper.php:215
641
  msgid "Dotted (m.d.y)"
642
  msgstr ""
643
 
644
+ #: app/helper/class-ai1ec-settings-helper.php:233
645
  msgid "Hourly"
646
  msgstr ""
647
 
648
+ #: app/helper/class-ai1ec-settings-helper.php:236
649
  msgid "Twice Daily"
650
  msgstr ""
651
 
652
+ #: app/model/class-ai1ec-event.php:507
 
 
 
 
653
  msgid " (all-day)"
654
  msgstr ""
655
 
656
+ #: app/view/admin/box_advanced_settings.php:3
657
+ msgid "Contain calendar in this DOM element:"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
658
  msgstr ""
659
 
660
+ #: app/view/admin/box_advanced_settings.php:5
661
  msgid ""
662
+ "Optional. Provide a <a href=\"http://api.jquery.com/category/selectors/\" "
663
+ "target=\"_blank\">jQuery selector</a> that evaluates to a single DOM "
664
+ "element. Replaces any existing markup found within target. If left empty, "
665
+ "calendar is shown in normal page content container."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
666
  msgstr ""
667
 
668
+ #: app/view/admin/box_event_contact.php:1
669
  msgid "Organizer contact info"
670
  msgstr ""
671
 
672
+ #: app/view/admin/box_event_contact.php:7
673
  msgid "Contact name:"
674
  msgstr ""
675
 
676
+ #: app/view/admin/box_event_contact.php:17
677
  msgid "Phone:"
678
  msgstr ""
679
 
680
+ #: app/view/admin/box_event_contact.php:27
681
  msgid "E-mail:"
682
  msgstr ""
683
 
684
+ #: app/view/admin/box_event_cost.php:1
685
  msgid "Event cost"
686
  msgstr ""
687
 
688
+ #: app/view/admin/box_event_cost.php:7
689
  msgid "Cost"
690
  msgstr ""
691
 
692
+ #: app/view/admin/box_event_location.php:1
693
  msgid "Event location details"
694
  msgstr ""
695
 
696
+ #: app/view/admin/box_event_location.php:8
697
  msgid "Venue name:"
698
  msgstr ""
699
 
700
+ #: app/view/admin/box_event_location.php:18
701
  msgid "Address:"
702
  msgstr ""
703
 
704
+ #: app/view/admin/box_event_location.php:28
705
  msgid "Show Google Map:"
706
  msgstr ""
707
 
708
+ #: app/view/admin/box_eventbrite.php:1
709
  msgid "Eventbrite Ticketing"
710
  msgstr ""
711
 
712
+ #: app/view/admin/box_eventbrite.php:7
713
  msgid "Register this event with Eventbrite.com?"
714
  msgstr ""
715
 
716
+ #: app/view/admin/box_eventbrite.php:12
717
  msgid "Yes"
718
  msgstr ""
719
 
720
+ #: app/view/admin/box_eventbrite.php:14
721
  msgid "No"
722
  msgstr ""
723
 
724
+ #: app/view/admin/box_eventbrite.php:22
725
  msgid "Set up your first ticket"
726
  msgstr ""
727
 
728
+ #: app/view/admin/box_eventbrite.php:24
729
  msgid ""
730
  "To create multiple tickets per event, submit this form, then follow the link "
731
  "to Eventbrite."
732
  msgstr ""
733
 
734
+ #: app/view/admin/box_eventbrite.php:32
735
  msgid "Name"
736
  msgstr ""
737
 
738
+ #: app/view/admin/box_eventbrite.php:42
739
  msgid "Description"
740
  msgstr ""
741
 
742
+ #: app/view/admin/box_eventbrite.php:53
743
  msgid "Type"
744
  msgstr ""
745
 
746
+ #: app/view/admin/box_eventbrite.php:58
747
  msgid "Set Price"
748
  msgstr ""
749
 
750
+ #: app/view/admin/box_eventbrite.php:60
751
  msgid "Donation Based"
752
  msgstr ""
753
 
754
+ #: app/view/admin/box_eventbrite.php:68
755
  msgid ""
756
  "The price for this event's first ticket will be taken from the Cost field "
757
  "above."
758
  msgstr ""
759
 
760
+ #: app/view/admin/box_eventbrite.php:75
761
  msgid "Quantity"
762
  msgstr ""
763
 
764
+ #: app/view/admin/box_eventbrite.php:85
765
  msgid "Include Fee in Price"
766
  msgstr ""
767
 
768
+ #: app/view/admin/box_eventbrite.php:90
769
  msgid "Add Service Fee on top of price"
770
  msgstr ""
771
 
772
+ #: app/view/admin/box_eventbrite.php:92
773
  msgid "Include Service fee in price"
774
  msgstr ""
775
 
776
+ #: app/view/admin/box_eventbrite.php:98
777
  msgid "Payment Options"
778
  msgstr ""
779
 
780
+ #: app/view/admin/box_eventbrite.php:103
781
  msgid "Paypal"
782
  msgstr ""
783
 
784
+ #: app/view/admin/box_eventbrite.php:105
785
  msgid "Google Checkout"
786
  msgstr ""
787
 
788
+ #: app/view/admin/box_eventbrite.php:107
789
  msgid "Check"
790
  msgstr ""
791
 
792
+ #: app/view/admin/box_eventbrite.php:109
793
  msgid "Cash"
794
  msgstr ""
795
 
796
+ #: app/view/admin/box_eventbrite.php:111
797
  msgid "Send an Invoice"
798
  msgstr ""
799
 
800
+ #: app/view/admin/box_feeds.php:2
801
+ msgid ""
802
+ "Configure which other calendars your own calendar subscribes to.\n"
803
+ " You can add any calendar that provides an iCalendar (.ics) feed.\n"
804
+ " Enter the feed URL(s) below and the events from those feeds will be\n"
805
+ " imported periodically."
806
  msgstr ""
807
 
808
+ #: app/view/admin/box_feeds.php:13
809
+ msgid "Check for new events"
810
  msgstr ""
811
 
812
+ #: app/view/admin/box_feeds.php:19 app/view/admin/feed_row.php:3
813
+ msgid "iCalendar/.ics Feed URL:"
814
  msgstr ""
815
 
816
+ #: app/view/admin/box_feeds.php:23
817
+ msgid "Event category"
818
  msgstr ""
819
 
820
+ #: app/view/admin/box_feeds.php:29 app/view/admin/feed_row.php:15
821
+ msgid "Tag with"
822
  msgstr ""
823
 
824
+ #: app/view/admin/box_feeds.php:33
825
+ msgid "+ Add new subscription"
826
+ msgstr ""
827
+
828
+ #: app/view/admin/box_general_settings.php:3
829
+ msgid "Viewing Events"
830
+ msgstr ""
831
+
832
+ #: app/view/admin/box_general_settings.php:5
833
+ msgid "Calendar page:"
834
+ msgstr ""
835
+
836
+ #: app/view/admin/box_general_settings.php:9
837
+ msgid "Default calendar view:"
838
+ msgstr ""
839
+
840
+ #: app/view/admin/box_general_settings.php:14
841
+ msgid "Timezone:"
842
  msgstr ""
843
 
844
+ #: app/view/admin/box_general_settings.php:19
845
  msgid "Week starts on"
846
  msgstr ""
847
 
848
+ #: app/view/admin/box_general_settings.php:23
849
  msgid "Agenda pages show at most"
850
  msgstr ""
851
 
852
+ #: app/view/admin/box_general_settings.php:24
853
  msgid "events"
854
  msgstr ""
855
 
856
+ #: app/view/admin/box_general_settings.php:29
857
  msgid "Keep all events <strong>expanded</strong> in the agenda view"
858
  msgstr ""
859
 
860
+ #: app/view/admin/box_general_settings.php:35
861
  msgid "<strong>Exclude</strong> events from search results"
862
  msgstr ""
863
 
864
+ #: app/view/admin/box_general_settings.php:41
865
  msgid ""
866
  "Show <strong>Post Your Event</strong> button above the calendar to "
867
  "privileged users"
868
  msgstr ""
869
 
870
+ #: app/view/admin/box_general_settings.php:47
871
  msgid ""
872
  "Hide <strong>Subscribe</strong>/<strong>Add to Calendar</strong> buttons in "
873
  "calendar and single event views"
874
  msgstr ""
875
 
876
+ #: app/view/admin/box_general_settings.php:53
877
  msgid "Hide <strong>Google Maps</strong> until clicked"
878
  msgstr ""
879
 
880
+ #: app/view/admin/box_general_settings.php:59
 
 
 
 
 
 
881
  msgid "Include <strong>event categories</strong> in post category lists"
882
  msgstr ""
883
 
884
+ #: app/view/admin/box_general_settings.php:63
885
  msgid "Adding/Editing Events"
886
  msgstr ""
887
 
888
+ #: app/view/admin/box_general_settings.php:65
889
  msgid "Input dates in this format:"
890
  msgstr ""
891
 
892
+ #: app/view/admin/box_general_settings.php:71
893
  msgid "Use <strong>24h time</strong> in time pickers"
894
  msgstr ""
895
 
896
+ #: app/view/admin/box_general_settings.php:77
897
+ msgid "<strong>Disable address autocomplete</strong> function"
898
  msgstr ""
899
 
900
+ #: app/view/admin/box_general_settings.php:83
901
+ msgid ""
902
+ "Use the configured <strong>region</strong> (WordPress locale) to bias the "
903
+ "address autocomplete function"
 
 
 
 
 
 
 
 
 
 
904
  msgstr ""
905
 
906
+ #: app/view/admin/box_general_settings.php:89
907
+ msgid "Display <strong>Publish</strong> at bottom of Edit Event form"
908
  msgstr ""
909
 
910
+ #: app/view/admin/box_general_settings.php:93
911
+ msgid "Sharing Data"
912
  msgstr ""
913
 
914
+ #: app/view/admin/box_general_settings.php:97
915
+ msgid "Allow The Seed to collect calendar statistics"
916
  msgstr ""
917
 
918
+ #: app/view/admin/box_repeat.php:14
919
  msgid "End"
920
  msgstr ""
921
 
922
+ #: app/view/admin/box_repeat.php:21
923
  msgid "Ending after"
924
  msgstr ""
925
 
926
+ #: app/view/admin/box_repeat.php:36
927
  msgid "Apply"
928
  msgstr ""
929
 
930
+ #: app/view/admin/box_repeat.php:37
931
  msgid "Cancel"
932
  msgstr ""
933
 
934
+ #: app/view/admin/box_the_seed_studio.php:3
935
+ msgid "then.ly"
 
 
936
  msgstr ""
937
 
938
+ #: app/view/admin/box_the_seed_studio.php:7
939
  msgid ""
940
+ "Then.ly’s All-in-One Calendar is a revolutionary new way to find and share "
941
+ "events."
942
  msgstr ""
943
 
944
+ #: app/view/admin/box_the_seed_studio.php:16
945
+ msgid "Follow @then_ly"
946
  msgstr ""
947
 
948
+ #: app/view/admin/box_the_seed_studio.php:22
949
+ msgid ""
950
+ "Upgrade to the free Premium version and get access to exclusive features "
951
+ "such as:"
952
  msgstr ""
953
 
954
+ #: app/view/admin/box_the_seed_studio.php:29
955
+ msgid "Calendar Themes"
956
  msgstr ""
957
 
958
+ #: app/view/admin/box_the_seed_studio.php:30
959
+ msgid "Duplicate Events"
960
  msgstr ""
961
 
962
+ #: app/view/admin/box_the_seed_studio.php:35
963
+ msgid "Location by Latitude/Longitude"
 
 
 
964
  msgstr ""
965
 
966
+ #: app/view/admin/box_the_seed_studio.php:36
967
+ msgid "... and more!"
 
 
968
  msgstr ""
969
 
970
+ #: app/view/admin/box_the_seed_studio.php:43
971
+ msgid "Upgrade to Premium for Free"
972
  msgstr ""
973
 
974
+ #: app/view/admin/box_the_seed_studio.php:48
975
  msgid ""
976
+ "Then.ly is dedicated to creating the best calendar software in the world."
 
977
  msgstr ""
978
 
979
+ #: app/view/admin/box_the_seed_studio.php:52
980
  msgid ""
981
+ "Please let us know if anything is not working the way you expect. While many "
982
+ "problems are caused by conflicts with other plugins, most problems can be "
983
+ "solved quickly. Visit our <a href=\"http://help.then.ly/\" target=\"_blank"
984
+ "\">Help Desk</a> to report bugs, request features, or learn how to get the "
985
+ "most out of this plugin."
 
 
986
  msgstr ""
987
 
988
+ #: app/view/admin/box_the_seed_studio.php:56
989
+ msgid "Get Support"
990
  msgstr ""
991
 
992
+ #: app/view/admin/box_time_and_date.php:2
 
 
 
 
 
 
 
 
993
  msgid "Event date and time"
994
  msgstr ""
995
 
996
+ #: app/view/admin/box_time_and_date.php:8
997
  msgid "All-day event"
998
  msgstr ""
999
 
1000
+ #: app/view/admin/box_time_and_date.php:18
1001
  msgid "Start date / time"
1002
  msgstr ""
1003
 
1004
+ #: app/view/admin/box_time_and_date.php:31
1005
  msgid "End date / time"
1006
  msgstr ""
1007
 
1008
+ #: app/view/admin/box_time_and_date.php:46
1009
  msgid "Repeat"
1010
  msgstr ""
1011
 
1012
+ #: app/view/admin/box_time_and_date.php:60
1013
  msgid "Exclude"
1014
  msgstr ""
1015
 
1016
+ #: app/view/admin/box_time_and_date.php:67
1017
  msgid "Choose a rule for exclusion"
1018
  msgstr ""
1019
 
1020
+ #: app/view/admin/box_time_and_date.php:73
1021
  msgid "Exclude dates"
1022
  msgstr ""
1023
 
1024
+ #: app/view/admin/box_time_and_date.php:80
1025
  msgid "Select date range"
1026
  msgstr ""
1027
 
1028
+ #: app/view/admin/box_time_and_date.php:85
1029
  msgid "Choose specific dates to exclude"
1030
  msgstr ""
1031
 
1032
+ #: app/view/admin/calendar_tasks.php:3
1033
+ msgid "Welcome"
1034
  msgstr ""
1035
 
1036
+ #: app/view/admin/calendar_tasks.php:4
1037
+ msgid ""
1038
+ "to the All-in-One Calendar by <a href=\"http://then.ly/\" target=\"_blank"
1039
+ "\">Then.ly</a>"
1040
  msgstr ""
1041
 
1042
+ #: app/view/admin/calendar_tasks.php:13 themes-ai1ec/vortex/calendar.php:30
1043
+ msgid "Post Your Event"
1044
  msgstr ""
1045
 
1046
+ #: app/view/admin/calendar_tasks.php:16
1047
+ msgid "Add a new event to the calendar."
1048
  msgstr ""
1049
 
1050
+ #: app/view/admin/calendar_tasks.php:24
1051
+ msgid "Manage Events"
1052
  msgstr ""
1053
 
1054
+ #: app/view/admin/calendar_tasks.php:27
1055
+ msgid "View and edit all your events."
1056
  msgstr ""
1057
 
1058
+ #: app/view/admin/calendar_tasks.php:39
1059
+ msgid "Manage Event Categories"
1060
  msgstr ""
1061
 
1062
+ #: app/view/admin/calendar_tasks.php:42
1063
+ msgid "Organize and color-code your events."
1064
+ msgstr ""
1065
+
1066
+ #: app/view/admin/calendar_tasks.php:50
1067
+ msgid "Choose Your Theme"
1068
+ msgstr ""
1069
+
1070
+ #: app/view/admin/calendar_tasks.php:53
1071
+ msgid "Change the look and feel."
1072
+ msgstr ""
1073
+
1074
+ #: app/view/admin/calendar_tasks.php:63
1075
+ msgid "Manage Calendar Feeds"
1076
+ msgstr ""
1077
+
1078
+ #: app/view/admin/calendar_tasks.php:66
1079
+ msgid "Subscribe to other calendars."
1080
+ msgstr ""
1081
+
1082
+ #: app/view/admin/calendar_tasks.php:74
1083
+ msgid "Edit Calendar Settings"
1084
  msgstr ""
1085
 
1086
+ #: app/view/admin/calendar_tasks.php:77
1087
+ msgid "Make this calendar your own."
1088
+ msgstr ""
1089
+
1090
+ #: app/view/admin/class-ai1ec-agenda-widget.php:15
1091
+ #: app/view/admin/class-ai1ec-agenda-widget.php:36
1092
  msgid "Upcoming Events"
1093
  msgstr ""
1094
 
1095
+ #: app/view/admin/class-ai1ec-agenda-widget.php:17
1096
+ msgid "All-in-One Calendar: Lists upcoming events in Agenda view"
1097
  msgstr ""
1098
 
1099
+ #: app/view/admin/event_categories-color_picker.php:5
1100
+ #: app/view/admin/event_categories-color_picker.php:19
1101
+ msgid "Category Color"
1102
  msgstr ""
1103
 
1104
+ #: app/view/admin/event_categories-color_picker.php:13
1105
+ #: app/view/admin/event_categories-color_picker.php:25
1106
+ msgid "Events in this category will be identified by this color"
1107
  msgstr ""
1108
 
1109
+ #: app/view/admin/feed_row.php:9
1110
+ msgid "Event category:"
1111
  msgstr ""
1112
 
1113
+ #: app/view/admin/feed_row.php:19
1114
+ msgid "× Delete"
1115
  msgstr ""
1116
 
1117
+ #: app/view/admin/import.php:6
1118
+ msgid "Successfully imported events:"
1119
  msgstr ""
1120
 
1121
+ #: app/view/admin/row_daily.php:3 app/view/admin/row_monthly.php:3
1122
+ #: app/view/admin/row_monthly.php:22 app/view/admin/row_weekly.php:3
1123
+ #: app/view/admin/row_yearly.php:3
1124
+ msgid "Every"
1125
  msgstr ""
1126
 
1127
+ #: app/view/admin/row_monthly.php:9
1128
+ msgid "On day of the month"
1129
  msgstr ""
1130
 
1131
+ #: app/view/admin/row_monthly.php:13
1132
+ msgid "On day of the week"
1133
  msgstr ""
1134
 
1135
+ #: app/view/admin/row_weekly.php:6
1136
+ msgctxt "Recurrence editor - weekly tab"
1137
+ msgid "On"
1138
+ msgstr ""
1139
+
1140
+ #: app/view/admin/row_yearly.php:7
1141
+ msgctxt "Recurrence editor - yearly tab"
1142
+ msgid "In"
1143
+ msgstr ""
1144
+
1145
+ #: app/view/admin/settings.php:16
1146
+ msgid "Update Settings"
1147
+ msgstr ""
1148
+
1149
+ #: lib/class-ai1ec-updater.php:12
1150
+ msgid "The plugin is at the latest version."
1151
+ msgstr ""
1152
+
1153
+ #: lib/class-ai1ec-updater.php:13
1154
+ msgid "Update package not available."
1155
+ msgstr ""
1156
+
1157
+ #: lib/class-ai1ec-updater.php:14
1158
+ msgid "Downloading update from <span class=\"code\">%s</span>&#8230;"
1159
+ msgstr ""
1160
+
1161
+ #: lib/class-ai1ec-updater.php:15
1162
+ msgid "Unpacking the update&#8230;"
1163
+ msgstr ""
1164
+
1165
+ #: lib/class-ai1ec-updater.php:16
1166
+ msgid "Deactivating the plugin&#8230;"
1167
+ msgstr ""
1168
+
1169
+ #: lib/class-ai1ec-updater.php:17
1170
+ msgid "Removing the old version of the plugin&#8230;"
1171
+ msgstr ""
1172
+
1173
+ #: lib/class-ai1ec-updater.php:18
1174
+ msgid "Could not remove the old plugin."
1175
  msgstr ""
1176
 
1177
+ #: lib/class-ai1ec-updater.php:19
1178
+ msgid "Plugin update failed."
1179
+ msgstr ""
1180
+
1181
+ #: lib/class-ai1ec-updater.php:20
1182
+ msgid "Plugin updated successfully."
1183
+ msgstr ""
1184
+
1185
+ #: themes-ai1ec/vortex/agenda-widget.php:11
1186
+ msgid "There are no upcoming events."
1187
+ msgstr ""
1188
+
1189
+ #: themes-ai1ec/vortex/agenda-widget.php:60
1190
+ msgid "View Calendar"
1191
+ msgstr ""
1192
+
1193
+ #: themes-ai1ec/vortex/agenda-widget.php:69
1194
+ #: themes-ai1ec/vortex/calendar.php:114
1195
  msgid ""
1196
+ "Subscribe to this calendar using your favourite calendar program (iCal, "
1197
+ "Outlook, etc.)"
1198
  msgstr ""
1199
 
1200
+ #: themes-ai1ec/vortex/agenda-widget.php:70
1201
+ #: themes-ai1ec/vortex/calendar.php:115
1202
+ msgid "✔ Subscribe"
1203
  msgstr ""
1204
 
1205
+ #: themes-ai1ec/vortex/agenda-widget.php:74
1206
+ #: themes-ai1ec/vortex/calendar.php:120
1207
+ msgid "Subscribe to this calendar in your Google Calendar"
1208
  msgstr ""
1209
 
1210
+ #: themes-ai1ec/vortex/agenda-widget.php:76
1211
+ msgid "Add to Google"
1212
  msgstr ""
1213
 
1214
+ #: themes-ai1ec/vortex/agenda.php:6 themes-ai1ec/vortex/month.php:6
1215
+ #: themes-ai1ec/vortex/oneday.php:7 themes-ai1ec/vortex/week.php:6
1216
+ msgid "Today"
1217
  msgstr ""
1218
 
1219
+ #: themes-ai1ec/vortex/agenda.php:12
1220
+ msgid "Expand All"
1221
  msgstr ""
1222
 
1223
+ #: themes-ai1ec/vortex/agenda.php:15
1224
+ msgid "Collapse All"
1225
  msgstr ""
1226
 
1227
+ #: themes-ai1ec/vortex/agenda.php:32
1228
+ msgid "There are no upcoming events to display at this time."
1229
  msgstr ""
1230
 
1231
+ #: themes-ai1ec/vortex/agenda.php:62 themes-ai1ec/vortex/agenda.php:112
1232
+ #: themes-ai1ec/vortex/month.php:81 themes-ai1ec/vortex/oneday.php:71
1233
+ #: themes-ai1ec/vortex/week.php:70
1234
+ msgid "(all-day)"
1235
  msgstr ""
1236
 
1237
+ #: themes-ai1ec/vortex/agenda.php:80
1238
+ msgid "Read more"
 
1239
  msgstr ""
1240
 
1241
+ #: themes-ai1ec/vortex/agenda.php:84 themes-ai1ec/vortex/event-multi.php:45
1242
+ #: themes-ai1ec/vortex/event-single.php:57
1243
+ msgid "Categories:"
1244
  msgstr ""
1245
 
1246
+ #: themes-ai1ec/vortex/agenda.php:90 themes-ai1ec/vortex/event-multi.php:51
1247
+ #: themes-ai1ec/vortex/event-single.php:64
1248
+ msgid "Tags:"
1249
  msgstr ""
1250
 
1251
+ #: themes-ai1ec/vortex/calendar.php:38
1252
+ msgid "Clear Filters"
1253
  msgstr ""
1254
 
1255
+ #: themes-ai1ec/vortex/calendar.php:39
1256
+ msgid "Filter:"
 
1257
  msgstr ""
1258
 
1259
+ #: themes-ai1ec/vortex/calendar.php:46
1260
+ msgid "Categories"
 
1261
  msgstr ""
1262
 
1263
+ #: themes-ai1ec/vortex/calendar.php:72
1264
+ msgid "Tags"
1265
  msgstr ""
1266
 
1267
+ #: themes-ai1ec/vortex/calendar.php:116
1268
+ msgid "to this filtered calendar"
 
 
1269
  msgstr ""
1270
 
1271
+ #: themes-ai1ec/vortex/calendar.php:122
1272
+ msgid "Subscribe in Google Calendar"
1273
  msgstr ""
1274
 
1275
+ #: themes-ai1ec/vortex/event-excerpt.php:2
1276
+ #: themes-ai1ec/vortex/event-multi.php:4
1277
+ #: themes-ai1ec/vortex/event-single.php:5
1278
+ msgid "When:"
1279
  msgstr ""
1280
 
1281
+ #: themes-ai1ec/vortex/event-excerpt.php:4
1282
+ #: themes-ai1ec/vortex/event-multi.php:20
1283
+ #: themes-ai1ec/vortex/event-single.php:25
1284
+ msgid "Where:"
1285
  msgstr ""
1286
 
1287
+ #: themes-ai1ec/vortex/event-map.php:2
1288
+ msgid "Click to view map"
 
1289
  msgstr ""
1290
 
1291
+ #: themes-ai1ec/vortex/event-map.php:9
1292
+ msgid "View Full-Size Map"
1293
  msgstr ""
1294
 
1295
+ #: themes-ai1ec/vortex/event-multi.php:7
1296
+ msgid "View in Calendar »"
1297
+ msgstr ""
1298
+
1299
+ #: themes-ai1ec/vortex/event-multi.php:14
1300
+ #: themes-ai1ec/vortex/event-single.php:15
1301
+ msgid "Repeats:"
1302
+ msgstr ""
1303
+
1304
+ #: themes-ai1ec/vortex/event-multi.php:24
1305
+ msgid "View Map »"
1306
+ msgstr ""
1307
+
1308
+ #: themes-ai1ec/vortex/event-multi.php:33
1309
+ #: themes-ai1ec/vortex/event-single.php:45
1310
+ msgid "Cost:"
1311
+ msgstr ""
1312
+
1313
+ #: themes-ai1ec/vortex/event-multi.php:39
1314
+ #: themes-ai1ec/vortex/event-single.php:51
1315
+ msgid "Contact:"
1316
+ msgstr ""
1317
+
1318
+ #: themes-ai1ec/vortex/event-single-footer.php:4
1319
+ msgid ""
1320
+ "This post was replicated from another site's <a class=\"ai1ec-ics-icon\" "
1321
+ "href=\"%s\" title=\"iCalendar feed\">calendar feed</a>."
1322
+ msgstr ""
1323
+
1324
+ #: themes-ai1ec/vortex/event-single-footer.php:8
1325
+ msgid "View original post"
1326
+ msgstr ""
1327
+
1328
+ #: themes-ai1ec/vortex/event-single.php:8
1329
+ msgid "Back to Calendar"
1330
+ msgstr ""
1331
+
1332
+ #: themes-ai1ec/vortex/event-single.php:21
1333
+ msgid "Excluding:"
1334
+ msgstr ""
1335
+
1336
+ #: themes-ai1ec/vortex/event-single.php:32
1337
+ msgid "Add this event to your favourite calendar program (iCal, Outlook, etc.)"
1338
+ msgstr ""
1339
+
1340
+ #: themes-ai1ec/vortex/event-single.php:33
1341
+ msgid "✔ Add to Calendar"
1342
+ msgstr ""
1343
+
1344
+ #: themes-ai1ec/vortex/event-single.php:36
1345
+ msgid "Add this event to your Google Calendar"
1346
+ msgstr ""
1347
+
1348
+ #: themes-ai1ec/vortex/event-single.php:38
1349
+ msgid "Add to Google Calendar"
1350
+ msgstr ""
1351
+
1352
+ #: themes-ai1ec/vortex/month.php:63 themes-ai1ec/vortex/oneday.php:57
1353
+ #: themes-ai1ec/vortex/oneday.php:140 themes-ai1ec/vortex/week.php:56
1354
+ #: themes-ai1ec/vortex/week.php:142
1355
+ msgid "Summary:"
1356
+ msgstr ""
1357
+
1358
+ #: themes-ai1ec/vortex/month.php:66 themes-ai1ec/vortex/oneday.php:60
1359
+ #: themes-ai1ec/vortex/oneday.php:143 themes-ai1ec/vortex/week.php:59
1360
+ #: themes-ai1ec/vortex/week.php:145
1361
+ msgid "click anywhere for details"
1362
+ msgstr ""
1363
+
1364
+ #: themes-ai1ec/vortex/oneday.php:35 themes-ai1ec/vortex/week.php:34
1365
+ msgid "All-day"
1366
  msgstr ""
1367
 
1368
  #. Plugin Name of the plugin/theme
1369
+ msgid "All-in-One Calendar by Then.ly"
1370
  msgstr ""
1371
 
1372
+ #. #-#-#-#-# plugin.pot (All-in-One Calendar by Then.ly 1.6) #-#-#-#-#
1373
  #. Plugin URI of the plugin/theme
1374
+ #. #-#-#-#-# plugin.pot (All-in-One Calendar by Then.ly 1.6) #-#-#-#-#
1375
+ #. Author URI of the plugin/theme
1376
+ msgid "http://then.ly/"
1377
  msgstr ""
1378
 
1379
  #. Description of the plugin/theme
1380
  msgid ""
1381
+ "A calendar system with month, week, day, agenda views, upcoming events "
1382
  "widget, color-coded categories, recurrence, and import/export of .ics feeds."
1383
  msgstr ""
1384
 
1385
+ #. Author of the plugin/theme
1386
+ msgid "Then.ly"
1387
  msgstr ""
lib/class-ai1ec-updater.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //
3
+ // class-ai1ec-updater.php
4
+ // all-in-one-event-calendar
5
+ //
6
+ // Created by The Seed Studio on 2012-05-09.
7
+ //
8
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
9
+
10
+ class Ai1ec_Updater extends WP_Upgrader {
11
+ function upgrade_strings() {
12
+ $this->strings['up_to_date'] = __('The plugin is at the latest version.');
13
+ $this->strings['no_package'] = __('Update package not available.');
14
+ $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>&#8230;');
15
+ $this->strings['unpack_package'] = __('Unpacking the update&#8230;');
16
+ $this->strings['deactivate_plugin'] = __('Deactivating the plugin&#8230;');
17
+ $this->strings['remove_old'] = __('Removing the old version of the plugin&#8230;');
18
+ $this->strings['remove_old_failed'] = __('Could not remove the old plugin.');
19
+ $this->strings['process_failed'] = __('Plugin update failed.');
20
+ $this->strings['process_success'] = __('Plugin updated successfully.');
21
+ }
22
+ function upgrade( $plugin ) {
23
+
24
+ $this->init();
25
+ $this->upgrade_strings();
26
+
27
+ add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2);
28
+ add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4);
29
+
30
+ $this->run(
31
+ array(
32
+ 'package' => 'http://then.ly/assets/thenly-all-in-one-calendar-1.6.zip',
33
+ 'destination' => WP_PLUGIN_DIR,
34
+ 'clear_destination' => true,
35
+ 'clear_working' => true,
36
+ 'hook_extra' => array(
37
+ 'plugin' => $plugin
38
+ )
39
+ )
40
+ );
41
+
42
+ // Cleanup our hooks, in case something else does a upgrade on this connection.
43
+ remove_filter( 'upgrader_pre_install', array( &$this, 'deactivate_plugin_before_upgrade' ) );
44
+ remove_filter( 'upgrader_clear_destination', array( &$this, 'delete_old_plugin') );
45
+
46
+ if( ! $this->result || is_wp_error( $this->result ) )
47
+ return $this->result;
48
+
49
+ // Force refresh of plugin update information
50
+ delete_site_transient( 'update_plugins' );
51
+ }
52
+
53
+ //Hooked to pre_install
54
+ function deactivate_plugin_before_upgrade( $return, $plugin ) {
55
+
56
+ if( is_wp_error( $return ) ) //Bypass.
57
+ return $return;
58
+
59
+ $plugin = isset( $plugin['plugin'] ) ? $plugin['plugin'] : '';
60
+ if( empty( $plugin ) )
61
+ return new WP_Error( 'bad_request', $this->strings['bad_request'] );
62
+
63
+ if( is_plugin_active( $plugin ) ) {
64
+ $this->skin->feedback( 'deactivate_plugin' );
65
+ //Deactivate the plugin silently, Prevent deactivation hooks from running.
66
+ deactivate_plugins( $plugin, true );
67
+ }
68
+ }
69
+
70
+ //Hooked to upgrade_clear_destination
71
+ function delete_old_plugin( $removed, $local_destination, $remote_destination, $plugin ) {
72
+ global $wp_filesystem;
73
+
74
+ if( is_wp_error( $removed ) )
75
+ return $removed; //Pass errors through.
76
+
77
+ $plugin = isset( $plugin['plugin'] ) ? $plugin['plugin'] : '';
78
+ if( empty( $plugin ) )
79
+ return new WP_Error( 'bad_request', $this->strings['bad_request'] );
80
+
81
+ $plugins_dir = $wp_filesystem->wp_plugins_dir();
82
+ $this_plugin_dir = trailingslashit( dirname( $plugins_dir . $plugin ) );
83
+
84
+ $ai1ec_themes = trailingslashit( AI1EC_THEMES_ROOT );
85
+ if( $wp_filesystem->exists( $ai1ec_themes ) ) {
86
+ $wp_filesystem->delete( $ai1ec_themes, true );
87
+ }
88
+
89
+ if( ! $wp_filesystem->exists( $this_plugin_dir ) ) //If its already vanished.
90
+ return $removed;
91
+
92
+ // If plugin is in its own directory, recursively delete the directory.
93
+ if( strpos( $plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder
94
+ $deleted = $wp_filesystem->delete( $this_plugin_dir, true );
95
+ else
96
+ $deleted = $wp_filesystem->delete( $plugins_dir . $plugin );
97
+
98
+ if( ! $deleted )
99
+ return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'] );
100
+
101
+ return true;
102
+ }
103
+ }
lib/global-functions.php CHANGED
@@ -17,37 +17,19 @@ function url_get_contents( $url ) {
17
  // holds the output
18
  $output = "";
19
 
20
- // If CURL is available, use it
21
- if( function_exists( 'curl_init' ) ) {
22
-
23
- // initialize and configure curl for a request
24
- $c = curl_init();
25
- curl_setopt( $c, CURLOPT_URL, $url );
26
- curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
27
- // set user agent to PHP/PHP version number
28
- curl_setopt( $c, CURLOPT_USERAGENT, 'PHP/' . PHP_VERSION );
29
- curl_setopt ($c, CURLOPT_ENCODING, '' );
30
-
31
- // Add support for HTTPS
32
- if( strstr( $url, 'https' ) !== FALSE ) {
33
- curl_setopt( $c, CURLOPT_SSLVERSION, 3 );
34
- curl_setopt( $c, CURLOPT_SSL_VERIFYPEER, false );
35
- curl_setopt( $c, CURLOPT_SSL_VERIFYHOST, 2 );
36
- }
37
- curl_setopt( $c, CURLOPT_COOKIESESSION, true );
38
- curl_setopt( $c, CURLOPT_HEADER, false );
39
- if( ! ini_get( 'safe_mode' ) ) {
40
- curl_setopt( $c, CURLOPT_FOLLOWLOCATION, true );
41
- }
42
- // get the contents of the url
43
- $output = curl_exec( $c );
44
-
45
- curl_close( $c );
46
- } else {
47
- // if CURL is unavailable, use file_get_contents
48
- $output = file_get_contents( $url );
49
  }
50
 
 
 
51
  // check if data is utf-8
52
  if( ! SG_iCal_Parser::_ValidUtf8( $output ) ) {
53
  // Encode the data in utf-8
17
  // holds the output
18
  $output = "";
19
 
20
+ // To make a remote call in wordpress it's better to use the wrapper functions instead
21
+ // of class methods. http://codex.wordpress.org/HTTP_API
22
+ // SSL Verification was disabled in the cUrl call
23
+ $result = wp_remote_get( $url, array( 'sslverify' => false ) );
24
+ // The wrapper functions return an WP_error if anything goes wrong.
25
+ if( is_wp_error( $result ) ) {
26
+ // We explicitly return false to notify an error. This is exactly the same behaviour we had before
27
+ // because both curl_exec() and file_get_contents() returned false on error
28
+ return FALSE;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  }
30
 
31
+ $output = $result['body'];
32
+
33
  // check if data is utf-8
34
  if( ! SG_iCal_Parser::_ValidUtf8( $output ) ) {
35
  // Encode the data in utf-8
readme.txt CHANGED
@@ -1,20 +1,20 @@
1
- === All-in-One Event Calendar ===
2
  Contributors: theseed, hubrik, vtowel, yani.iliev
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9JJMUW48W2ED8
4
  Tags: calendar, event, events, ics, ics calendar, ical-feed, ics feed, wordpress ics importer, wordpress ical importer, upcoming events, todo, notes, journal, freebusy, availability, web calendar, web events, webcal, google calendar, ical, iCalendar, all-in-one, ai1ec, google calendar sync, ical sync, events sync, holiday calendar, calendar 2011, events 2011, widget, events widget, upcoming events widget, calendar widget, agenda widget
5
  Requires at least: 3.1.3
6
- Tested up to: 3.3
7
- Stable tag: 1.5
8
 
9
  An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
10
 
11
  == Description ==
12
 
13
- Welcome to the [All-in-One Event Calendar Plugin](http://theseednetwork.com/software/all-in-one-event-calendar-wordpress/), from [The Seed Network](http://theseednetwork.com/), a web development company. The All-in-One Event Calendar is a new way to list your events in WordPress and easily share them with the rest of the world.
14
 
15
  Our new calendar system combines a clean visual design, solid architectural patterns and a powerful set of features to create the most advanced calendar system available for WordPress. Best of all: it’s completely free.
16
 
17
- **New in version 1.2:** A beautifully rendered, scrolling **Week view**!
18
 
19
  = Calendar Features For Users =
20
 
@@ -26,7 +26,7 @@ This plugin has many features we hope will prove useful to users, including:
26
  * Embedded **Google Maps**
27
  * **Color-coded** events based on category
28
  * **Event-registration** ready
29
- * **Month**, **week** and **agenda** views
30
  * **Upcoming Events** widget
31
  * Direct links to **filtered calendar views**
32
 
@@ -35,33 +35,32 @@ This plugin has many features we hope will prove useful to users, including:
35
  * Import other calendars automatically to display in your calendar
36
  * Categorize and tag imported calendar feeds automatically
37
  * Events from [The Events Calendar](http://wordpress.org/extend/plugins/the-events-calendar/) plugin can also be easily imported
 
38
 
39
- Importing and exporting iCalendar (.ics) feeds is one of the strongest features of the All-in-One Event Calendar system. Enter an event on one site and you can have it appear automatically in another website's calendar. You can even send events from a specific category or tag (or combination of categories and tags).
40
 
41
- Why is this cool? It allows event creators to create one event and have it displayed on a few or thousands of calendars with no extra work. And it also allows calendar owners to populate their calendar from other calendar feeds without having to go through the hassle of creating new events. For example, a soccer league can send its game schedule to a community sports calendar, which, in turn, can send only featured games (from all the sports leagues it aggragates) to a community calendar, which features sports as just one category.
42
 
43
  = Additional Features =
44
 
45
- The All-in-One Event Calendar Plugin also has a few features that will prove useful for website and blog owners:
46
 
47
  * Each event is SEO-optimized
48
  * Each event links to the original calendar
49
  * Your calendar can be embedded into a WordPress page without needing to create template files or modify the theme
50
 
51
- = Video Tutorials =
52
- http://www.youtube.com/watch?v=nKlIy-BUeRE
53
- http://www.youtube.com/watch?v=zZHpzfyukyU
54
 
55
  = Helpful Links =
56
 
57
  * [**Check out the DEMO »**](http://demo.theseednetwork.com/)
58
- * [**Get help from the Support Forum »**](http://wordpress.org/tags/all-in-one-event-calendar?forum_id=10)
59
- * [**Track the development process »**](http://trac.theseednetwork.com/roadmap)
60
- * [**BUG reports only »**](http://trac.theseednetwork.com/newticket) ([registration](http://trac.theseednetwork.com/register) required)
61
- * [**Get Premium Support »**](http://theseednetwork.com/get-supported) from [The Seed Studio](http://theseednetwork.com/)
62
 
63
  == Frequently Asked Questions ==
64
 
 
 
65
  = Shortcodes =
66
 
67
  * Monthly view: **[ai1ec view="monthly"]**
@@ -83,6 +82,26 @@ http://www.youtube.com/watch?v=zZHpzfyukyU
83
  * Filter by post ids (separate ids by comma): **[ai1ec post_id="1, 2"]**
84
 
85
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  = Version 1.5 =
87
  * Added daily view
88
  * Various bug fixes
@@ -255,14 +274,14 @@ http://www.youtube.com/watch?v=zZHpzfyukyU
255
 
256
  To place the calendar in a DOM/HTML element besides the default page content container without modifying the theme:
257
 
258
- 1. Navigate to **Events** > **Settings** in the WordPress Dashboard.
259
  2. Enter a CSS or jQuery-style selector of the target element in the **Contain calendar in this DOM element** field.
260
- 3. Click **Update Settings**.
261
 
262
  == Screenshots ==
263
 
264
  1. Add new event - part 1
265
- 2. Add new event - part 2
266
  3. Event categories
267
  4. Event categories with color picker
268
  5. Front-end: Month view of calendar
@@ -277,5 +296,8 @@ To place the calendar in a DOM/HTML element besides the default page content con
277
 
278
  == Upgrade Notice ==
279
 
 
 
 
280
  = 1.0.3 =
281
  When upgrading to from below `1.0.3` you must reactivate the plugin.
1
+ === All-in-One Calendar ===
2
  Contributors: theseed, hubrik, vtowel, yani.iliev
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9JJMUW48W2ED8
4
  Tags: calendar, event, events, ics, ics calendar, ical-feed, ics feed, wordpress ics importer, wordpress ical importer, upcoming events, todo, notes, journal, freebusy, availability, web calendar, web events, webcal, google calendar, ical, iCalendar, all-in-one, ai1ec, google calendar sync, ical sync, events sync, holiday calendar, calendar 2011, events 2011, widget, events widget, upcoming events widget, calendar widget, agenda widget
5
  Requires at least: 3.1.3
6
+ Tested up to: 3.3.2
7
+ Stable tag: 1.6
8
 
9
  An event calendar system with month, week, agenda views, upcoming events widget, color-coded categories, recurrence, and import/export of .ics feeds.
10
 
11
  == Description ==
12
 
13
+ Welcome to the [All-in-One Calendar Plugin](http://then.ly/), from [Then.ly](http://then.ly/). The All-in-One Calendar is a new way to list your events in WordPress and easily share them with the rest of the world.
14
 
15
  Our new calendar system combines a clean visual design, solid architectural patterns and a powerful set of features to create the most advanced calendar system available for WordPress. Best of all: it’s completely free.
16
 
17
+ **New in version 1.6:** Download the free Premium version at [then.ly](http://then./y) and choose from 3 custom designed themes for your Calendar, or develop your own!
18
 
19
  = Calendar Features For Users =
20
 
26
  * Embedded **Google Maps**
27
  * **Color-coded** events based on category
28
  * **Event-registration** ready
29
+ * **Month**, **week**, **day** and **agenda** views
30
  * **Upcoming Events** widget
31
  * Direct links to **filtered calendar views**
32
 
35
  * Import other calendars automatically to display in your calendar
36
  * Categorize and tag imported calendar feeds automatically
37
  * Events from [The Events Calendar](http://wordpress.org/extend/plugins/the-events-calendar/) plugin can also be easily imported
38
+ * Create a Calendar administration role to allow for a dedicated calendar application
39
 
40
+ Importing and exporting iCalendar (.ics) feeds is one of the strongest features of the All-in-One Calendar system. Enter an event on one site and you can have it appear automatically in another website's calendar. You can even send events from a specific category or tag (or combination of categories and tags).
41
 
42
+ Why is this cool? It allows event creators to create one event and have it displayed on a few or thousands of calendars with no extra work. And it also allows calendar owners to populate their calendar from other calendar feeds without having to go through the hassle of creating new events. For example, a soccer league can send its game schedule to a community sports calendar, which, in turn, can send only featured games (from all the sports leagues it aggregates) to a community calendar, which features sports as just one category.
43
 
44
  = Additional Features =
45
 
46
+ The All-in-One Calendar Plugin also has a few features that will prove useful for website and blog owners:
47
 
48
  * Each event is SEO-optimized
49
  * Each event links to the original calendar
50
  * Your calendar can be embedded into a WordPress page without needing to create template files or modify the theme
51
 
52
+ = Video =
53
+ https://vimeo.com/41738066
 
54
 
55
  = Helpful Links =
56
 
57
  * [**Check out the DEMO »**](http://demo.theseednetwork.com/)
58
+ * [**Get help from our Help Desk »**](http://help.then.ly)
 
 
 
59
 
60
  == Frequently Asked Questions ==
61
 
62
+ [**Get help from our Help Desk »**](http://help.then.ly)
63
+
64
  = Shortcodes =
65
 
66
  * Monthly view: **[ai1ec view="monthly"]**
82
  * Filter by post ids (separate ids by comma): **[ai1ec post_id="1, 2"]**
83
 
84
  == Changelog ==
85
+
86
+ = Version 1.6 Premium =
87
+ * Choose new Calendar Themes
88
+ * Duplicate Events
89
+ * Create Print View
90
+ * Add location details that allow latitude and longitude for areas poorly covered by Google Maps
91
+ * Turn on/off autocomplete for addresses
92
+ * See more intuitive views of multi-day events on weekly and monthly calendars
93
+ * Calendar administration role to allow for dedicated calendar application
94
+ * Security updates
95
+ * Bug fixes
96
+
97
+ = Version 1.6 =
98
+ * Create Print View
99
+ * Turn on/off autocomplete for addresses
100
+ * See more intuitive views of multi-day events on weekly and monthly calendars
101
+ * Security updates
102
+ * Bug Fixes
103
+
104
+
105
  = Version 1.5 =
106
  * Added daily view
107
  * Various bug fixes
274
 
275
  To place the calendar in a DOM/HTML element besides the default page content container without modifying the theme:
276
 
277
+ 1. Navigate to **Settings** > **Calendar** in the WordPress Dashboard.
278
  2. Enter a CSS or jQuery-style selector of the target element in the **Contain calendar in this DOM element** field.
279
+ 3. Click **Update**.
280
 
281
  == Screenshots ==
282
 
283
  1. Add new event - part 1
284
+ 2. Add new event - with recurrence
285
  3. Event categories
286
  4. Event categories with color picker
287
  5. Front-end: Month view of calendar
296
 
297
  == Upgrade Notice ==
298
 
299
+ = 1.6 Premium =
300
+ The All-in-One Calendar can only be upgrade to Premium from version 1.6 and above, or by downloading directly from
301
+
302
  = 1.0.3 =
303
  When upgrading to from below `1.0.3` you must reactivate the plugin.
screenshot-11.jpg ADDED
Binary file
screenshot-2.jpg ADDED
Binary file
themes-ai1ec/vortex/agenda-widget.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php echo $args['before_widget'] ?>
2
+
3
+ <?php if( $title ): ?>
4
+ <?php echo $before_title . $title . $after_title; ?>
5
+ <?php endif; ?>
6
+
7
+ <div class="thenly ai1ec-agenda-widget-view">
8
+
9
+ <?php if( ! $dates ): ?>
10
+ <p class="ai1ec-no-results">
11
+ <?php _e( 'There are no upcoming events.', AI1EC_PLUGIN_NAME ); ?>
12
+ </p>
13
+ <?php else: ?>
14
+ <ol>
15
+ <?php foreach( $dates as $timestamp => $date_info ): ?>
16
+ <li class="ai1ec-date <?php if( isset( $date_info['today'] ) && $date_info['today'] ) echo 'ai1ec-today'; ?>">
17
+ <h3 class="ai1ec-date-title">
18
+ <div class="ai1ec-month"><?php echo date_i18n( 'M', $timestamp, true ); ?></div>
19
+ <div class="ai1ec-day"><?php echo date_i18n( 'j', $timestamp, true ); ?></div>
20
+ <div class="ai1ec-weekday"><?php echo date_i18n( 'D', $timestamp, true ); ?></div>
21
+ </h3>
22
+ <ol class="ai1ec-date-events">
23
+ <?php foreach( $date_info['events'] as $category ): ?>
24
+ <?php foreach( $category as $event ): ?>
25
+ <li class="ai1ec-event
26
+ ai1ec-event-id-<?php echo $event->post_id; ?>
27
+ ai1ec-event-instance-id-<?php echo $event->instance_id; ?>
28
+ <?php if( $event->allday ) echo 'ai1ec-allday'; ?>">
29
+
30
+ <?php // Insert post ID for use by JavaScript filtering later ?>
31
+ <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id; ?>" />
32
+
33
+ <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id; ?>">
34
+ <?php if( $event->category_colors ): ?>
35
+ <span class="ai1ec-category-colors"><?php echo $event->category_colors; ?></span>
36
+ <?php endif; ?>
37
+ <?php if( ! $event->allday ): ?>
38
+ <span class="ai1ec-event-time">
39
+ <?php echo esc_html( $event->start_time ); ?></span>
40
+ </span>
41
+ <?php endif; ?>
42
+ <span class="ai1ec-event-title">
43
+ <?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ); ?>
44
+ </span>
45
+ </a>
46
+
47
+ </li>
48
+ <?php endforeach; ?>
49
+ <?php endforeach; ?>
50
+ </ol>
51
+ </li>
52
+ <?php endforeach; ?>
53
+ </ol>
54
+ <?php endif; ?>
55
+
56
+ <?php if( $show_calendar_button || $show_subscribe_buttons ): ?>
57
+ <p>
58
+ <?php if( $show_calendar_button ): ?>
59
+ <a class="btn btn-mini pull-right ai1ec-calendar-link" href="<?php echo $calendar_url; ?>">
60
+ <?php _e( 'View Calendar', AI1EC_PLUGIN_NAME ); ?>
61
+ <i class="icon-arrow-right"></i>
62
+ </a>
63
+ <?php endif; ?>
64
+
65
+ <?php if( $show_subscribe_buttons ): ?>
66
+ <span class="ai1ec-subscribe-buttons pull-left">
67
+ <a class="btn btn-mini ai1ec-subscribe"
68
+ href="<?php echo $subscribe_url; ?>"
69
+ title="<?php _e( 'Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ); ?>" />
70
+ <?php _e( '✔ Subscribe', AI1EC_PLUGIN_NAME ); ?>
71
+ </a>
72
+ <a class="btn btn-mini ai1ec-subscribe-google" target="_blank"
73
+ href="http://www.google.com/calendar/render?cid=<?php echo urlencode( str_replace( 'webcal://', 'http://', $subscribe_url ) ); ?>"
74
+ title="<?php _e( 'Subscribe to this calendar in your Google Calendar', AI1EC_PLUGIN_NAME ); ?>" />
75
+ <img src="<?php echo $this->get_theme_img_url( 'google-calendar.png' ); ?>" />
76
+ <?php _e( 'Add to Google', AI1EC_PLUGIN_NAME ); ?>
77
+ </a>
78
+ </span>
79
+ <?php endif; ?>
80
+ </p>
81
+ <?php endif; ?>
82
+
83
+ </div>
84
+
85
+ <?php echo $args['after_widget']; ?>
{app/view → themes-ai1ec/vortex}/agenda.php RENAMED
@@ -1,28 +1,31 @@
1
- <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ) ?></h2>
2
- <span class="ai1ec-title-buttons">
 
 
 
 
 
 
3
  <?php if( $dates ): ?>
4
- <a id="ai1ec-expand-all" class="ai1ec-button">
5
- <?php _e( '+ Expand All', AI1EC_PLUGIN_NAME ) ?>
6
- </a><a
7
- id="ai1ec-collapse-all" class="ai1ec-button">
8
- <?php _e( '− Collapse All', AI1EC_PLUGIN_NAME ) ?>
9
- </a
10
- ><?php endif ?><a
11
- id="ai1ec-today" class="ai1ec-load-view ai1ec-button" href="#action=ai1ec_agenda&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
12
- <?php _e( 'Today', AI1EC_PLUGIN_NAME ) ?>
13
- </a>
14
- </span>
15
- <ul class="ai1ec-pagination">
16
- <?php foreach( $pagination_links as $link ): ?>
17
- <li>
18
- <a id="<?php echo $link['id'] ?>"
19
- class="ai1ec-load-view ai1ec-button"
20
- href="<?php echo esc_attr( $link['href'] ) ?>&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
21
- <?php echo esc_html( $link['text'] ) ?>
22
  </a>
23
- </li>
24
- <?php endforeach ?>
25
- </ul>
 
 
 
 
 
 
 
 
 
26
  <ol class="ai1ec-agenda-view">
27
  <?php if( ! $dates ): ?>
28
  <p class="ai1ec-no-results">
@@ -72,19 +75,19 @@
72
  </div>
73
  <div class="ai1ec-event-description">
74
  <div class="ai1ec-event-overlay">
75
- <a class="ai1ec-read-more ai1ec-button"
76
  href="<?php echo esc_attr( get_permalink( $event->post_id ) . $event->instance_id ) ?>">
77
- <?php _e( 'Read more »', AI1EC_PLUGIN_NAME ) ?>
78
  </a>
79
  <?php if( $event->categories_html ): ?>
80
  <div class="ai1ec-categories">
81
- <label class="ai1ec-label"><?php _e( 'Categories:', AI1EC_PLUGIN_NAME ) ?></label>
82
  <?php echo $event->categories_html ?>
83
  </div>
84
  <?php endif ?>
85
  <?php if( $event->tags_html ): ?>
86
  <div class="ai1ec-tags">
87
- <label class="ai1ec-label"><?php _e( 'Tags:', AI1EC_PLUGIN_NAME ) ?></label>
88
  <?php echo $event->tags_html ?>
89
  </div>
90
  <?php endif ?>
1
+ <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ); ?></h2>
2
+ <div class="ai1ec-title-buttons btn-toolbar">
3
+ <div class="btn-group">
4
+ <a id="ai1ec-today" class="ai1ec-load-view btn btn-mini"
5
+ href="#action=ai1ec_agenda&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
6
+ <?php _e( 'Today', AI1EC_PLUGIN_NAME ); ?>
7
+ </a>
8
+ </div>
9
  <?php if( $dates ): ?>
10
+ <div class="btn-group">
11
+ <a id="ai1ec-expand-all" class="btn btn-mini">
12
+ <i class="icon-plus-sign"></i> <?php _e( 'Expand All', AI1EC_PLUGIN_NAME ) ?>
13
+ </a><a
14
+ id="ai1ec-collapse-all" class="btn btn-mini">
15
+ <i class="icon-minus-sign"></i> <?php _e( 'Collapse All', AI1EC_PLUGIN_NAME ) ?>
 
 
 
 
 
 
 
 
 
 
 
 
16
  </a>
17
+ </div>
18
+ <?php endif; ?>
19
+ <div class="ai1ec-pagination btn-group pull-right">
20
+ <?php foreach( $pagination_links as $link ): ?>
21
+ <a id="<?php echo $link['id']; ?>"
22
+ class="ai1ec-load-view btn"
23
+ href="<?php echo esc_attr( $link['href'] ); ?>&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
24
+ <?php echo esc_html( $link['text'] ); ?>
25
+ </a>
26
+ <?php endforeach; ?>
27
+ </div>
28
+ </div>
29
  <ol class="ai1ec-agenda-view">
30
  <?php if( ! $dates ): ?>
31
  <p class="ai1ec-no-results">
75
  </div>
76
  <div class="ai1ec-event-description">
77
  <div class="ai1ec-event-overlay">
78
+ <a class="ai1ec-read-more btn"
79
  href="<?php echo esc_attr( get_permalink( $event->post_id ) . $event->instance_id ) ?>">
80
+ <?php _e( 'Read more', AI1EC_PLUGIN_NAME ) ?> <i class="icon-arrow-right"></i>
81
  </a>
82
  <?php if( $event->categories_html ): ?>
83
  <div class="ai1ec-categories">
84
+ <span class="ai1ec-label"><?php _e( 'Categories:', AI1EC_PLUGIN_NAME ) ?></span>
85
  <?php echo $event->categories_html ?>
86
  </div>
87
  <?php endif ?>
88
  <?php if( $event->tags_html ): ?>
89
  <div class="ai1ec-tags">
90
+ <span class="ai1ec-label"><?php _e( 'Tags:', AI1EC_PLUGIN_NAME ) ?></span>
91
  <?php echo $event->tags_html ?>
92
  </div>
93
  <?php endif ?>
themes-ai1ec/vortex/calendar.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- START All-in-One Calendar Plugin - Version <?php echo AI1EC_VERSION ?> -->
2
+ <table class="ai1ec-calendar-toolbar">
3
+ <tbody>
4
+ <tr>
5
+
6
+ <td>
7
+ <div id="ai1ec-view-dropdown" class="btn-group">
8
+ <a id="ai1ec-current-view" class="btn dropdown-toggle" data-toggle="dropdown" href="#">
9
+ <img src="<?php echo $this->get_theme_img_url( "$current_view-view.png" ); ?>" alt="<?php echo $view_names[$current_view]; ?>" />
10
+ <?php echo $view_names[$current_view]; ?>
11
+ <span class="caret"></span>
12
+ </a>
13
+ <ul class="dropdown-menu">
14
+ <?php foreach( $view_names as $key => $val ): ?>
15
+ <li>
16
+ <a id="ai1ec-view-<?php echo $key; ?>" class="ai1ec-load-view <?php echo $key; ?>"
17
+ href="#action=ai1ec_<?php echo $key; ?>&amp;ai1ec_post_ids=<?php echo $selected_post_ids; ?>">
18
+ <img src="<?php echo $this->get_theme_img_url( "$key-view.png" ); ?>" alt="<?php echo $val; ?>" />
19
+ <?php echo $val; ?>
20
+ </a>
21
+ </li>
22
+ <?php endforeach; ?>
23
+ </ul>
24
+ </div>
25
+ </td>
26
+
27
+ <?php if( $create_event_url ): ?>
28
+ <td>
29
+ <a class="btn" href="<?php echo $create_event_url ?>">
30
+ <i class="icon-plus"></i> <?php _e( 'Post Your Event', AI1EC_PLUGIN_NAME ) ?>
31
+ </a>
32
+ </td>
33
+ <?php endif ?>
34
+ <td>
35
+ <?php if( $categories || $tags ): ?>
36
+ <div class="ai1ec-filters-container">
37
+ <span class="ai1ec-label">
38
+ <a class="ai1ec-clear-filters" rel="tooltip" title="<?php _e( 'Clear Filters', AI1EC_PLUGIN_NAME ) ?>"><i class="icon-remove"></i></a>
39
+ <?php _e( 'Filter:', AI1EC_PLUGIN_NAME ) ?>
40
+ </span>
41
+
42
+ <?php if( $categories ): ?>
43
+ <span class="ai1ec-filter-selector-container">
44
+ <a class="btn ai1ec-dropdown">
45
+ <i class="icon-folder-open"></i>
46
+ <?php _e( 'Categories', AI1EC_PLUGIN_NAME ) ?>
47
+ <span class="caret"></span>
48
+ </a>
49
+ <input class="ai1ec-selected-terms"
50
+ id="ai1ec-selected-categories"
51
+ type="hidden"
52
+ value="<?php echo $selected_cat_ids ?>" />
53
+ <div class="ai1ec-filter-selector ai1ec-category-filter-selector">
54
+ <ul>
55
+ <?php foreach( $categories as $cat ): ?>
56
+ <li class="ai1ec-category"
57
+ <?php if( $cat->description ) echo 'title="' . esc_attr( $cat->description ) . '"' ?>>
58
+ <?php echo $cat->color ?>
59
+ <?php echo esc_html( $cat->name ) ?>
60
+ <input class="ai1ec-term-ids" name="ai1ec-categories" type="hidden" value="<?php echo $cat->term_id ?>" />
61
+ </li>
62
+ <?php endforeach ?>
63
+ </ul>
64
+ </div>
65
+ </span>
66
+ <?php endif // $categories ?>
67
+
68
+ <?php if( $tags ): ?>
69
+ <span class="ai1ec-filter-selector-container">
70
+ <a class="btn ai1ec-dropdown">
71
+ <i class="icon-tags"></i>
72
+ <?php _e( 'Tags', AI1EC_PLUGIN_NAME ) ?>
73
+ <span class="caret"></span>
74
+ </a>
75
+ <input class="ai1ec-selected-terms"
76
+ id="ai1ec-selected-tags"
77
+ type="hidden"
78
+ value="<?php echo $selected_tag_ids ?>" />
79
+ <div class="ai1ec-filter-selector ai1ec-tag-filter-selector">
80
+ <ul>
81
+ <?php foreach( $tags as $tag ): ?>
82
+ <li class="ai1ec-tag"
83
+ <?php if( $tag->description ) echo 'title="' . esc_attr( $tag->description ) . '"' ?>
84
+ style="<?php echo $tag->count > 1 ? 'font-weight: bold;' : 'font-size: 10px !important;' ?>">
85
+ <?php echo esc_html( $tag->name ) . " ($tag->count)" ?>
86
+ <input class="ai1ec-term-ids" name="ai1ec-tags" type="hidden" value="<?php echo $tag->term_id ?>" />
87
+ </li>
88
+ <?php endforeach ?>
89
+ </ul>
90
+ <input class="ai1ec-selected-terms" id="ai1ec-selected-tags" type="hidden" />
91
+ </div>
92
+ </span>
93
+ <?php endif // $tags ?>
94
+ </div>
95
+ <?php endif // $categories || $tags ?>
96
+ <a id="ai1ec-print-button" href="#" class="btn">
97
+ <i class="icon-print"></i>
98
+ </a>
99
+ </td>
100
+ </tr>
101
+ </tbody>
102
+ </table>
103
+
104
+ <div id="ai1ec-calendar-view-container">
105
+ <div id="ai1ec-calendar-view-loading" class="ai1ec-loading"></div>
106
+ <div id="ai1ec-calendar-view">
107
+ <?php echo $view ?>
108
+ </div>
109
+ </div>
110
+
111
+ <?php if( $show_subscribe_buttons ): ?>
112
+ <a class="btn ai1ec-subscribe"
113
+ href="<?php echo AI1EC_EXPORT_URL ?>"
114
+ title="<?php _e( 'Subscribe to this calendar using your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ) ?>" />
115
+ <?php _e( '✔ Subscribe', AI1EC_PLUGIN_NAME ) ?>
116
+ <span class="ai1ec-subscribe-filtered"><?php _e( 'to this filtered calendar', AI1EC_PLUGIN_NAME ) ?></span>
117
+ </a>
118
+ <a class="btn ai1ec-subscribe-google" target="_blank"
119
+ href="http://www.google.com/calendar/render?cid=<?php echo urlencode( str_replace( 'webcal://', 'http://', AI1EC_EXPORT_URL ) ) ?>"
120
+ title="<?php _e( 'Subscribe to this calendar in your Google Calendar', AI1EC_PLUGIN_NAME ) ?>" />
121
+ <img src="<?php echo $this->get_theme_img_url( 'google-calendar.png' ) ?>" />
122
+ <?php _e( 'Subscribe in Google Calendar', AI1EC_PLUGIN_NAME ) ?>
123
+ </a>
124
+ <?php endif ?>
125
+ <!-- END All-in-One Calendar Plugin -->
themes-ai1ec/vortex/css/calendar.css ADDED
@@ -0,0 +1 @@
 
1
+ .clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ai1ec-container{clear:both}#ai1ec-calendar-view-container{position:relative;clear:both;margin-bottom:.2em}.ai1ec-calendar-toolbar{width:100%!important;border:0!important;margin:0!important}.ai1ec-calendar-toolbar td{background:none!important;border:0!important;padding:0!important;text-align:center;vertical-align:middle;white-space:nowrap;width:33%}.ai1ec-calendar-toolbar td:last-child{text-align:right}.ai1ec-calendar-toolbar td:first-child{text-align:left}.thenly #ai1ec-view-dropdown a.btn,.thenly #ai1ec-view-dropdown .dropdown-menu a{line-height:21px}.thenly #ai1ec-view-dropdown a.btn .caret{margin-top:9px}.thenly #ai1ec-view-dropdown a img{border:0!important;padding:0!important;margin:0!important;float:none!important;position:static!important;vertical-align:bottom;background:none!important}.ai1ec-filters-container{display:inline-block}.ai1ec-filter-selector-container{position:relative;display:inline-block;text-align:left;white-space:normal}.ai1ec-filter-selector{display:none;background:#fff;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);padding:.1em;position:absolute;overflow:auto;max-width:20em;max-height:30em;right:0;top:100%;z-index:10}.ai1ec-filter-selector ul{margin:0!important;padding:0!important}.ai1ec-filter-selector li{list-style:none}.ai1ec-filter-selector .ai1ec-category,.ai1ec-filter-selector .ai1ec-tag{font-size:8pt!important}.ai1ec-filter-selector-container:hover>.ai1ec-filter-selector{display:block}.ai1ec-clear-filters{display:none;font-size:11pt!important;font-weight:normal;color:#507295!important;cursor:pointer;text-decoration:none!important}.ai1ec-clear-filters:hover{color:#354c63!important}h2.ai1ec-calendar-title{float:left;font-size:20px!important;line-height:1.3em!important;margin:0 .5em 0 0!important}.ai1ec-today #ai1ec-today{display:none}.ai1ec-action-month .ai1ec-pagination a{width:7em}.ai1ec-action-week .ai1ec-pagination a,.ai1ec-action-oneday .ai1ec-pagination a{width:8em}.ai1ec-action-agenda .ai1ec-pagination a{width:9em}#ai1ec-prev-year,#ai1ec-next-year{width:4em}table.ai1ec-month-view,.ai1ec-week-view table,.ai1ec-oneday-view table{border-collapse:collapse;border:1px solid #ddd!important;margin:0!important;background:#fff;table-layout:fixed!important;clear:both;width:100%!important}.ai1ec-week-view .tablescroll_wrapper,.ai1ec-oneday-view .tablescroll_wrapper{position:relative;border-bottom:1px solid #ddd}table.ai1ec-week-view-original,table.ai1ec-oneday-view-original{visibility:hidden;height:400px}table.ai1ec-week-view-original.tablescroll_body,table.ai1ec-oneday-view-original.tablescroll_body{visibility:visible;height:auto}.ai1ec-week-view table.tablescroll_head,.ai1ec-oneday-view table.tablescroll_head,.ai1ec-week-view table.tablescroll_head th,.ai1ec-oneday-view table.tablescroll_head th{border-bottom:none!important;padding:2.48px!important}table.ai1ec-week-view-original.tablescroll_body,table.ai1ec-oneday-view-original.tablescroll_body,table.ai1ec-week-view-original.tablescroll_body tr:first-child td,table.ai1ec-oneday-view-original.tablescroll_body tr:first-child td{border-top:none!important}.ai1ec-month-view td,.ai1ec-week-view td,.ai1ec-oneday-view td{border:1px solid #ddd!important;background:none!important;padding:0!important;text-align:left;vertical-align:top}.ai1ec-month-view th,.ai1ec-week-view th,.ai1ec-oneday-view th{border:none!important;background:#f5f5f5!important;padding:.2em!important}.ai1ec-month-view td.ai1ec-empty{background:#f5f5f5!important}.ai1ec-month-view th,.ai1ec-week-view th,.ai1ec-week-view .ai1ec-hour-marker div,.ai1ec-week-view .ai1ec-allday-label,.ai1ec-oneday-view th,.ai1ec-oneday-view .ai1ec-hour-marker div,.ai1ec-oneday-view .ai1ec-allday-label{color:#9e9e9e!important;text-shadow:0 1px 0 #fff}.ai1ec-month-view th,.ai1ec-oneday-view th{text-align:center!important}.ai1ec-week-view th{text-align:left!important}.ai1ec-week-view .ai1ec-day,.ai1ec-oneday-view .ai1ec-day{height:1440px}.ai1ec-week-view th .ai1ec-weekday-date,.ai1ec-oneday-view th .ai1ec-weekday-date{font-size:10.5pt!important;font-weight:normal!important}.ai1ec-week-view th .ai1ec-weekday-day{font-size:9pt!important;font-weight:normal!important}.ai1ec-month-view .ai1ec-day,.ai1ec-week-view .ai1ec-day,.ai1ec-week-view .ai1ec-allday-events,.ai1ec-oneday-view .ai1ec-day,.ai1ec-oneday-view .ai1ec-allday-events{position:relative}.ai1ec-month-view .ai1ec-day-stretcher{float:left;height:94px;width:0}.ai1ec-month-view .ai1ec-today,.ai1ec-week-view .ai1ec-today{background:#ffd!important}.ai1ec-month-view .ai1ec-date{background:#eaf4ff;color:#a1a7ad;font-size:10pt;line-height:13px;height:13px;margin-bottom:1px;padding:0 .4em;font-size:8pt;text-align:right;text-shadow:0 1px 0 #fff}.ai1ec-week-view .ai1ec-grid-container,.ai1ec-oneday-view .ai1ec-grid-container{position:absolute;top:auto;left:0;right:0}.ai1ec-week-view .ai1ec-now-marker,.ai1ec-oneday-view .ai1ec-now-marker,.ai1ec-week-view .ai1ec-hour-marker,.ai1ec-oneday-view .ai1ec-hour-marker,.ai1ec-week-view .ai1ec-quarter-marker,.ai1ec-oneday-view .ai1ec-quarter-marker{position:absolute;left:0;right:0;padding-right:8px}.ai1ec-week-view .ai1ec-hour-marker,.ai1ec-oneday-view .ai1ec-hour-marker{border-top:1px solid #ddd;border-top:1px solid rgba(221,221,221,0.7);height:60px;background:rgba(221,221,221,0.4)!important}.ai1ec-week-view .ai1ec-hour-marker.ai1ec-business-hour,.ai1ec-oneday-view .ai1ec-hour-marker.ai1ec-business-hour{background:none!important}.ai1ec-week-view .ai1ec-hour-marker div,.ai1ec-oneday-view .ai1ec-hour-marker div,.ai1ec-week-view .ai1ec-allday-label,.ai1ec-oneday-view .ai1ec-allday-label{position:relative;z-index:2;margin-left:1px;padding:0 .2em;font-size:8pt!important;font-weight:normal!important;background:#f5f5f5;float:left;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em}.ai1ec-week-view .ai1ec-allday-label,.ai1ec-oneday-view .ai1ec-allday-label{margin-top:1px}.ai1ec-week-view .ai1ec-quarter-marker,.ai1ec-oneday-view .ai1ec-quarter-marker{border-top:1px solid #ddd;border-top:1px solid rgba(221,221,221,0.4)}.ai1ec-week-view .ai1ec-now-marker,.ai1ec-oneday-view .ai1ec-now-marker{border-top:1px solid #f2c539;border-bottom:1px solid rgba(0,0,0,0.15);z-index:2}.ai1ec-month-view a.ai1ec-event-container,.ai1ec-week-view a.ai1ec-event-container,.ai1ec-oneday-view a.ai1ec-event-container{border:none!important;color:#507295!important;display:block;font-size:9pt;text-decoration:none!important}.ai1ec-month-view .ai1ec-event,.ai1ec-week-view .ai1ec-event,.ai1ec-oneday-view .ai1ec-event{-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin:1px 0 0;max-height:100%;overflow:hidden;padding:0 3px 1px;white-space:nowrap}.ai1ec-month-view .ai1ec-allday .ai1ec-event,.ai1ec-week-view .ai1ec-allday .ai1ec-event,.ai1ec-oneday-view .ai1ec-allday .ai1ec-event,.ai1ec-month-view .ai1ec-multiday .ai1ec-event,.ai1ec-week-view .ai1ec-multiday .ai1ec-event,.ai1ec-oneday-view .ai1ec-multiday .ai1ec-event{background-color:#507295;color:#fff!important}.ai1ec-month-view .ai1ec-category-colors,.ai1ec-week-view .ai1ec-category-colors,.ai1ec-oneday-view .ai1ec-category-colors{float:right;font-size:1.2em;margin-top:1px}.ai1ec-month-view .ai1ec-event-popup,.ai1ec-week-view .ai1ec-event-popup,.ai1ec-oneday-view .ai1ec-event-popup,.ai1ec-month-view .ai1ec-event-summary,.ai1ec-week-view .ai1ec-event-summary,.ai1ec-oneday-view .ai1ec-event-summary{border:2px solid #d4d4d4;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background:#fff}.ai1ec-month-view .ai1ec-event-popup,.ai1ec-week-view .ai1ec-event-popup,.ai1ec-oneday-view .ai1ec-event-popup{position:absolute;z-index:5;display:none;white-space:nowrap;color:#333!important;top:-5px;left:-2px;min-width:100%;-webkit-border-radius:0 .3em .3em 0;-moz-border-radius:0 .3em .3em 0;border-radius:0 .3em .3em 0}.ai1ec-month-view .ai1ec-event-popup.ai1ec-shifted-right,.ai1ec-week-view .ai1ec-event-popup.ai1ec-shifted-right,.ai1ec-oneday-view .ai1ec-event-popup.ai1ec-shifted-right{-webkit-border-radius:.3em 0 0 .3em;-moz-border-radius:.3em 0 0 .3em;border-radius:.3em 0 0 .3em}.ai1ec-month-view .ai1ec-event-popup-bg,.ai1ec-week-view .ai1ec-event-popup-bg,.ai1ec-oneday-view .ai1ec-event-popup-bg{position:relative;left:-2px;margin-right:-1px;padding:2px 2px 2px 5px;background:#fff}.ai1ec-month-view .ai1ec-shifted-right .ai1ec-event-popup-bg,.ai1ec-week-view .ai1ec-shifted-right .ai1ec-event-popup-bg,.ai1ec-oneday-view .ai1ec-shifted-right .ai1ec-event-popup-bg{left:1px;padding:2px 5px 2px 2px}.ai1ec-month-view .ai1ec-event-summary,.ai1ec-week-view .ai1ec-event-summary,.ai1ec-oneday-view .ai1ec-event-summary,.ai1ec-month-view .ai1ec-event-summary p,.ai1ec-week-view .ai1ec-event-summary p,.ai1ec-oneday-view .ai1ec-event-summary p{font-size:.95em!important}.ai1ec-month-view .ai1ec-event-summary,.ai1ec-week-view .ai1ec-event-summary,.ai1ec-oneday-view .ai1ec-event-summary{-webkit-border-radius:.3em 0 .3em .3em;-moz-border-radius:.3em 0 .3em .3em;border-radius:.3em 0 .3em .3em;color:#333;background-color:#fefef9;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(1.5em,#fff),to(#fafae3));background-image:-webkit-linear-gradient(#fff,#fff 1.5em,#fafae3);background-image:-moz-linear-gradient(top,#fff,#fff 1.5em,#fafae3);background-image:-ms-linear-gradient(#fff,#fff 1.5em,#fafae3);background-image:-o-linear-gradient(#fff,#fff 1.5em,#fafae3);background-image:linear-gradient(#fff,#fff 1.5em,#fafae3);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#fafae3',GradientType=0);overflow:hidden;padding:2px 4px 3px;position:absolute;right:100%;top:-2px;white-space:normal;width:13em}.ai1ec-month-view .ai1ec-shifted-right .ai1ec-event-summary,.ai1ec-week-view .ai1ec-shifted-right .ai1ec-event-summary,.ai1ec-oneday-view .ai1ec-shifted-right .ai1ec-event-summary{left:100%;-webkit-border-radius:0 .3em .3em .3em;-moz-border-radius:0 .3em .3em .3em;border-radius:0 .3em .3em .3em}.ai1ec-month-view .ai1ec-event-summary p,.ai1ec-week-view .ai1ec-event-summary p,.ai1ec-oneday-view .ai1ec-event-summary p{margin:0 0 .3em!important;padding:0!important}.ai1ec-month-view .ai1ec-event-time,.ai1ec-week-view .ai1ec-event-time,.ai1ec-oneday-view .ai1ec-event-time{font-size:8pt;font-weight:bold}.ai1ec-month-view .ai1ec-read-more,.ai1ec-week-view .ai1ec-read-more,.ai1ec-oneday-view .ai1ec-read-more{text-align:center;font-size:8pt;color:#97978b}.ai1ec-month-view a.ai1ec-event-container,.ai1ec-week-view .ai1ec-allday-events a.ai1ec-event-container,.ai1ec-oneday-view .ai1ec-allday-events a.ai1ec-event-container{position:relative}.ai1ec-oneday-view a.ai1ec-event-container{margin-right:10px}.ai1ec-oneday-view .ai1ec-allday-events a.ai1ec-event-container{margin:0 15px 0 50px}.ai1ec-week-view .ai1ec-week a.ai1ec-event-container,.ai1ec-oneday-view .ai1ec-oneday a.ai1ec-event-container{border:2px solid #cbd5df!important;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;-webkit-box-shadow:0 3px 6px rgba(0,0,0,0.2);-moz-box-shadow:0 3px 6px rgba(0,0,0,0.2);box-shadow:0 3px 6px rgba(0,0,0,0.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#eaeef2;background-image:-moz-linear-gradient(top,#fff,#cbd5df);background-image:-ms-linear-gradient(top,#fff,#cbd5df);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#cbd5df));background-image:-webkit-linear-gradient(top,#fff,#cbd5df);background-image:-o-linear-gradient(top,#fff,#cbd5df);background-image:linear-gradient(top,#fff,#cbd5df);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#cbd5df',GradientType=0);background-color:#fff;position:absolute;right:0}.ai1ec-oneday-view .ai1ec-event-popup{top:-3px;min-width:0;right:13em}.ai1ec-week-view .ai1ec-week .ai1ec-event-popup{top:-3px}.ai1ec-oneday-view .ai1ec-oneday .ai1ec-event-title,.ai1ec-week-view .ai1ec-week .ai1ec-event-title{display:block;white-space:normal;font-size:8pt!important}.ai1ec-month-view .ai1ec-event{height:14px;line-height:14px;margin:0 0 1px}.ai1ec-month-view .ai1ec-multiday{position:absolute}.ai1ec-month-view .ai1ec-multiday-arrow1{background:#507295;border:7px solid #fff;border-left-color:#507295;border-right-width:0;height:1px;position:absolute;right:0;top:0;width:0}.ai1ec-month-view .ai1ec-multiday-arrow2{border:7px solid #507295;border-left-color:#fff;border-right-width:2px;height:1px;left:0;position:absolute;top:0;width:0}.ai1ec-month-view .ai1ec-multiday-bar{background:#507295;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;height:15px;left:0;position:absolute;top:0}.ai1ec-month-view .ai1ec-multiday-bar .ai1ec-event-title{margin-left:7px}.ai1ec-month-view .ai1ec-multiday-bar .ai1ec-event{margin:0}.ai1ec-month-view .ai1ec-multiday-bar .ai1ec-event-time{display:none}.ai1ec-month-view .ai1ec-event-dropdown{background:#FFF;border:1px solid #e7e7e7;border-top:0;left:-1px;position:absolute;top:78px;width:90px;z-index:1000}.ai1ec-month-view .ai1ec-obscured{display:none!important}.ai1ec-month-view a.ai1ec-scroll-up,.ai1ec-month-view a.ai1ec-scroll-down{border:1px solid #ddd;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:block;left:50%;height:16px;line-height:14px;margin-left:-8px;position:relative;text-align:center;text-decoration:none!important;width:16px}.ai1ec-month-view a.ai1ec-scroll-up:hover,.ai1ec-month-view a.ai1ec-scroll-down:hover{background-color:#ddd}.ai1ec-month-view a.ai1ec-scroll-up.ai1ec-disabled,.ai1ec-month-view a.ai1ec-scroll-down.ai1ec-disabled{border:0;cursor:default;opacity:.2;filter:alpha(opacity=20);padding:1px}.ai1ec-month-view a.ai1ec-scroll-up.ai1ec-disabled:hover,.ai1ec-month-view a.ai1ec-scroll-down.ai1ec-disabled:hover{background-color:transparent}.ai1ec-month-view .ai1ec-event-popup .ai1ec-event-popup-allround{border-radius:.3em}.ai1ec-month-view .ai1ec-event-popup .ai1ec-event-popup-allround .ai1ec-event-popup-bg{left:0;margin-right:2px;padding:2px}.ai1ec-month-view .ai1ec-event-popup .ai1ec-event-popup-allround .ai1ec-event-summary{display:none}.ai1ec-oneday-view .ai1ec-start-truncated .ai1ec-event-time,.ai1ec-week-view .ai1ec-start-truncated .ai1ec-event-time{display:none}.ai1ec-oneday-view .ai1ec-oneday a.ai1ec-event-container.ai1ec-start-truncated,.ai1ec-week-view .ai1ec-week a.ai1ec-event-container.ai1ec-start-truncated{border-top-left-radius:0;border-top-right-radius:0;-moz-border-radius-topleft:0;-moz-border-radius-topright:0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0}.ai1ec-oneday-view .ai1ec-oneday a.ai1ec-event-container.ai1ec-end-truncated,.ai1ec-week-view .ai1ec-week a.ai1ec-event-container.ai1ec-end-truncated{border-bottom-left-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0}.ai1ec-oneday-view .ai1ec-oneday .ai1ec-start-truncator,.ai1ec-week-view .ai1ec-week .ai1ec-start-truncator,.ai1ec-oneday-view .ai1ec-oneday .ai1ec-end-truncator,.ai1ec-week-view .ai1ec-week .ai1ec-end-truncator{position:absolute;line-height:1em;font-size:6pt}.ai1ec-oneday-view .ai1ec-oneday .ai1ec-start-truncator,.ai1ec-week-view .ai1ec-week .ai1ec-start-truncator{top:-2px;left:-2px}.ai1ec-oneday-view .ai1ec-oneday .ai1ec-end-truncator,.ai1ec-week-view .ai1ec-week .ai1ec-end-truncator{bottom:-2px;right:-2px}.ai1ec-agenda-view{clear:both;overflow:hidden;margin:0!important;padding:0!important}.ai1ec-agenda-view .ai1ec-no-results{font-size:10pt!important;font-style:italic}.ai1ec-agenda-view .ai1ec-date-events{overflow:hidden;margin:0 .75em 0 0!important;padding:0!important}.ai1ec-agenda-view>li,.ai1ec-agenda-view .ai1ec-date-events>li{list-style:none!important}.ai1ec-agenda-view .ai1ec-date{border-top:1px solid #e5e5e5;background:rgba(242,242,242,0.8);background:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),color-stop(1em,#f2f2f2),to(rgba(242,242,242,0)));background:-webkit-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-moz-linear-gradient(top,#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-ms-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-o-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background-repeat:no-repeat;margin:0!important;overflow:hidden;padding:0!important}.ai1ec-agenda-view .ai1ec-date.ai1ec-today{border-top:1px solid #f0f0aa;background:rgba(244,244,191,0.8);background:-webkit-gradient(linear,0 0,0 100%,from(#f4f4bf),color-stop(1em,#f4f4bf),to(rgba(244,244,191,0)));background:-webkit-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-moz-linear-gradient(top,#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-ms-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-o-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background-repeat:no-repeat}.ai1ec-agenda-view h3.ai1ec-date-title{border:2px solid #8ba5c0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.08);-moz-box-shadow:0 2px 2px rgba(0,0,0,0.08);box-shadow:0 2px 2px rgba(0,0,0,0.08);color:#525252;float:left;font-size:10pt;font-weight:normal;background-color:#f9f9f9;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(1em,#fff),to(#e0e0e0));background-image:-webkit-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:-moz-linear-gradient(top,#fff,#fff 1em,#e0e0e0);background-image:-ms-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:-o-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:linear-gradient(#fff,#fff 1em,#e0e0e0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e0e0e0',GradientType=0);line-height:1.1em;margin:0 .75em .5em!important;text-align:center;text-shadow:0 1px 0 #fff;width:4em}.ai1ec-agenda-view .ai1ec-month{color:#fff;background:#8ba5c0;font-size:.8em!important;letter-spacing:.2em;padding:.1em;text-transform:uppercase;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.ai1ec-agenda-view .ai1ec-day{font-size:2.2em!important;padding:.3em 0 .2em!important}.ai1ec-agenda-view .ai1ec-weekday{font-size:.8em!important;line-height:1.5em}.ai1ec-agenda-view .ai1ec-event{position:relative;clear:right;overflow:hidden;font-size:10pt;text-decoration:none;padding:.1em .3em!important;margin:.5em 0!important;background:#fff!important;border:1px solid #d4d4d4;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em}.ai1ec-agenda-view .ai1ec-event.ai1ec-expanded{border:2px solid #d4d4d4;-webkit-box-shadow:1px 5px 8px rgba(0,0,0,0.08);-moz-box-shadow:1px 5px 8px rgba(0,0,0,0.08);box-shadow:1px 5px 8px rgba(0,0,0,0.08)}.ai1ec-agenda-view .ai1ec-event .ai1ec-event-click{cursor:pointer;line-height:1.4em;color:#507295;text-shadow:0 1px 0 #fff}.ai1ec-agenda-view .ai1ec-event .ai1ec-event-click:hover>.ai1ec-event-expand{visibility:visible}.ai1ec-agenda-view .ai1ec-event .ai1ec-event-time{float:left;margin-right:.5em;min-height:1em;font-weight:bold;line-height:1.4em}.ai1ec-agenda-view .ai1ec-event .ai1ec-event-title{margin:0 0 0 8em;font-size:10pt;font-weight:normal}.ai1ec-agenda-view .ai1ec-event:hover,.ai1ec-agenda-view .ai1ec-event.ai1ec-expanded:hover{border-color:#aeaeae}.ai1ec-agenda-view .ai1ec-event:hover .ai1ec-event-click{color:#354c63}.ai1ec-agenda-view .ai1ec-event.ai1ec-allday{padding:0!important}.ai1ec-agenda-view .ai1ec-event.ai1ec-allday .ai1ec-event-click{color:#fff;background:#507295;padding:.1em .4em;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;text-shadow:none}.ai1ec-agenda-view .ai1ec-event.ai1ec-allday .ai1ec-event-time{color:#fff}.ai1ec-agenda-view .ai1ec-event.ai1ec-allday .ai1ec-event-title{margin:0}.ai1ec-agenda-view .ai1ec-event.ai1ec-allday:hover .ai1ec-event-click{color:#fff;background:#354c63}.ai1ec-agenda-view .ai1ec-allday-label{font-size:8pt;color:rgba(255,255,255,0.5);padding-left:.2em}.ai1ec-agenda-view .ai1ec-event-expand{float:right;margin-left:.5em;visibility:hidden;font-size:9pt}.ai1ec-agenda-view .ai1ec-category-colors{float:left;font-size:.9em;margin:.2em .2em -0.2em -0.1em}.ai1ec-agenda-view .ai1ec-category-colors .ai1ec-category-color{padding:1px}.ai1ec-agenda-view .ai1ec-event-summary{display:none}.ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-title{margin:.1em 0;font-size:11pt;line-height:1.1em}.ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-time{width:auto;float:none;font-size:9pt;line-height:1.5em}.ai1ec-agenda-view .ai1ec-event-summary .ai1ec-event-click{border-bottom:1px solid #ddd;margin-bottom:.4em;padding:.5em .25em}.ai1ec-agenda-view .ai1ec-allday .ai1ec-event-summary .ai1ec-event-click{border-bottom:0;-webkit-border-radius:.3em .3em 0 0;-moz-border-radius:.3em .3em 0 0;border-radius:.3em .3em 0 0;padding:.4em .6em}.ai1ec-agenda-view .ai1ec-categories,.ai1ec-agenda-view .ai1ec-tags{font-size:8pt}.ai1ec-agenda-view .ai1ec-event-description,.ai1ec-agenda-view .ai1ec-event-description p{font-size:9pt;line-height:1.5em}.ai1ec-agenda-view .ai1ec-event-description{clear:both;overflow:hidden;padding:0 .25em 3.6em;max-height:20em}.ai1ec-agenda-view .ai1ec-event-description p{margin:.5em 0 .75em!important;padding:0!important}.ai1ec-agenda-view .ai1ec-event-description .ai1ec-label{font-size:8pt}.ai1ec-agenda-view .ai1ec-allday .ai1ec-event-description{position:relative;overflow:hidden;padding:0 .65em 3.5em}.ai1ec-agenda-view .ai1ec-event-overlay{position:absolute;z-index:5;bottom:0;left:0;right:0;padding:.4em .5em;-webkit-border-radius:0 0 .5em .5em;-moz-border-radius:0 0 .5em .5em;border-radius:0 0 .5em .5em;background:rgba(252,252,240,0.85);background:-moz-linear-gradient(top,rgba(255,255,255,0.75),#fafae3);background:-ms-linear-gradient(top,rgba(255,255,255,0.75),#fafae3);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.75)),to(#fafae3));background:-webkit-linear-gradient(top,rgba(255,255,255,0.75),#fafae3);background:-o-linear-gradient(top,rgba(255,255,255,0.75),#fafae3);background:linear-gradient(top,rgba(255,255,255,0.75),#fafae3);background-repeat:repeat-x}.ai1ec-agenda-view .ai1ec-read-more{float:right;margin:.6em 0 .2em}.ai1ec-subscribe{clear:both}.ai1ec-subscribe-filtered{display:none}i.icon-print{padding:0 7px}
themes-ai1ec/vortex/css/event.css ADDED
@@ -0,0 +1 @@
 
1
+ .clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ai1ec-full-event{border:none!important;border-collapse:collapse!important;width:100%;margin-bottom:.5em!important}.ai1ec-full-event td{font-size:10pt!important}.ai1ec-full-event th,.ai1ec-full-event td{line-height:14pt!important;padding:.3em .5em!important;border:none!important;vertical-align:top}.ai1ec-full-event th.ai1ec-empty,.ai1ec-full-event td.ai1ec-empty{padding:0!important}.ai1ec-full-event th{color:#888!important;font-size:9pt!important;font-family:sans-serif!important;font-weight:bold;background:rgba(0,0,0,0.05600000000000001);background:-webkit-gradient(linear,0 0,100% 0,from(rgba(0,0,0,0.028000000000000004)),color-stop(90%,rgba(0,0,0,0.07)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(left,rgba(0,0,0,0.028000000000000004),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-moz-linear-gradient(left,rgba(0,0,0,0.028000000000000004),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-ms-linear-gradient(left,rgba(0,0,0,0.028000000000000004),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-o-linear-gradient(left,rgba(0,0,0,0.028000000000000004),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:linear-gradient(left,rgba(0,0,0,0.028000000000000004),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background-repeat:no-repeat;text-align:right;text-shadow:0 1px 0 #fff;width:6em}.ai1ec-multi-event th,.ai1ec-multi-event td{padding:.3em .5em!important}.ai1ec-full-event .ai1ec-time{line-height:16pt!important;vertical-align:middle}.ai1ec-full-event td.ai1ec-time{font-weight:bold;font-size:11pt!important}.ai1ec-full-event .ai1ec-allday-label{font-size:10pt!important;color:rgba(51,51,51,0.5);padding-left:.2em}.ai1ec-multi-event .ai1ec-time{line-height:15pt!important}.ai1ec-multi-event td.ai1ec-time{font-size:10pt!important}.ai1ec-multi-event .ai1ec-allday-label{font-size:9pt!important}.ai1ec-full-event td.ai1ec-location{min-width:30%}.ai1ec-full-event td.ai1ec-map{text-align:right}.ai1ec-full-event td.ai1ec-map.ai1ec-has-map{width:55%;text-align:left}.ai1ec-full-event .ai1ec-gmap-container{border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:.3em;position:relative}.ai1ec-full-event #ai1ec-gmap-canvas{min-width:18em;width:100%;height:12em}.ai1ec-full-event .ai1ec-gmap-link{position:absolute;margin:0;font-size:.8em!important;bottom:-1px;right:-1px}.ai1ec-full-event #ai1ec-gmap-canvas input{margin:0!important}.ai1ec-multi-event .ai1ec-gmap-link{font-size:8pt!important;margin:-0.2em 0}.ai1ec-gmap-placeholder{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#507295;cursor:pointer;height:12em;border:1px dashed #ddd;min-width:18em;margin-bottom:.3em;text-align:center;width:100%}.ai1ec-gmap-placeholder:hover{border-color:#b7b7b7;color:#354c63}.ai1ec-gmap-placeholder strong{position:relative;top:45%}.ai1ec-gmap-container-hidden{position:absolute!important;visibility:hidden}.ai1ec-full-event .ai1ec-contact a{white-space:nowrap}.ai1ec-full-event td.ai1ec-tags,.ai1ec-full-event td.ai1ec-categories{padding:.1em .2em!important}.ai1ec-full-event .ai1ec-category{float:left}.ai1ec-multi-event .ai1ec-category{font-size:8pt!important}.ai1ec-event-footer{clear:left;font-size:.9em!important;font-style:italic}.ai1ec-ics-icon{background:url(../img/ics-icon.png) no-repeat right;padding-right:15px}.ai1ec-excerpt{margin-bottom:.5em;font-size:10pt!important;line-height:1.6em;overflow:hidden}.ai1ec-excerpt>div{padding-left:7.2em}.ai1ec-excerpt .ai1ec-label{clear:left;float:left;background:rgba(0,0,0,0.05600000000000001);background:-webkit-gradient(linear,0 0,100% 0,from(rgba(0,0,0,0.4)),color-stop(90%,rgba(0,0,0,0.07)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(left,rgba(0,0,0,0.4),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-moz-linear-gradient(left,rgba(0,0,0,0.4),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-ms-linear-gradient(left,rgba(0,0,0,0.4),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:-o-linear-gradient(left,rgba(0,0,0,0.4),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background:linear-gradient(left,rgba(0,0,0,0.4),rgba(0,0,0,0.07) 90%,rgba(0,0,0,0));background-repeat:no-repeat;margin-left:-7.2em;padding:0 .6em!important;text-align:right;text-shadow:0 1px 0 #fff;width:6em}.ai1ec-excerpt .ai1ec-time{font-weight:bold}.ai1ec-excerpt .ai1ec-event-link{float:right;font-size:8pt!important}.ai1ec-excerpt .ai1ec-allday-label{font-size:9pt!important;color:#bbb;padding-left:.2em}
themes-ai1ec/vortex/css/general.css ADDED
@@ -0,0 +1 @@
 
1
+ .clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot');src:url('../font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),url('../font/fontawesome-webfont.woff') format('woff'),url('../font/fontawesome-webfont.ttf') format('truetype'),url('../font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),url('../font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:inherit;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat}li[class^="icon-"],li[class*=" icon-"]{display:block}[class^="icon-"]:before,[class*=" icon-"]:before{font-family:FontAwesome;font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit}a [class^="icon-"],a [class*=" icon-"]{display:inline-block;text-decoration:inherit}.icon-large:before{vertical-align:top;font-size:1.3333333333333333em}.btn [class^="icon-"],.btn [class*=" icon-"]{line-height:.9em}li [class^="icon-"],li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li .icon-large[class^="icon-"],li .icon-large[class*=" icon-"]{width:1.875em}li[class^="icon-"],li[class*=" icon-"]{margin-left:0;list-style-type:none}li[class^="icon-"]:before,li[class*=" icon-"]:before{text-indent:-2em;text-align:center}li[class^="icon-"].icon-large:before,li[class*=" icon-"].icon-large:before{text-indent:-1.3333333333333333em}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.thenly{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:16px;color:#333;background-color:#fff}.thenly article,.thenly aside,.thenly details,.thenly figcaption,.thenly figure,.thenly footer,.thenly header,.thenly hgroup,.thenly nav,.thenly section{display:block}.thenly audio,.thenly canvas,.thenly video{display:inline-block;*display:inline;*zoom:1}.thenly audio:not([controls]){display:none}.thenly html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.thenly a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.thenly a:hover,.thenly a:active{outline:0}.thenly sub,.thenly sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.thenly sup{top:-0.5em}.thenly sub{bottom:-0.25em}.thenly img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle}.thenly button,.thenly input,.thenly select,.thenly textarea{margin:0;font-size:100%;vertical-align:middle}.thenly button,.thenly input{*overflow:visible;line-height:normal}.thenly button::-moz-focus-inner,.thenly input::-moz-focus-inner{padding:0;border:0}.thenly button,.thenly input[type="button"],.thenly input[type="reset"],.thenly input[type="submit"]{cursor:pointer;-webkit-appearance:button}.thenly input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.thenly input[type="search"]::-webkit-search-decoration,.thenly input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}.thenly textarea{overflow:auto;vertical-align:top}.thenly body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:16px;color:#333;background-color:#fff}.thenly a{color:#507295;text-decoration:none}.thenly a:hover{color:#354c63;text-decoration:underline}.thenly p{margin:0 0 8px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:16px}.thenly p small{font-size:11px;color:#999}.thenly .lead{margin-bottom:16px;font-size:20px;font-weight:200;line-height:24px}.thenly h1,.thenly h2,.thenly h3,.thenly h4,.thenly h5,.thenly h6{margin:0;font-family:Calibri,Nunito,'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:bold;color:#333;text-rendering:optimizelegibility}.thenly h1 small,.thenly h2 small,.thenly h3 small,.thenly h4 small,.thenly h5 small,.thenly h6 small{font-weight:normal;color:#999}.thenly h1{font-size:30px;line-height:32px}.thenly h1 small{font-size:18px}.thenly h2{font-size:24px;line-height:32px}.thenly h2 small{font-size:18px}.thenly h3{line-height:24px;font-size:18px}.thenly h3 small{font-size:14px}.thenly h4,.thenly h5,.thenly h6{line-height:16px}.thenly h4{font-size:14px}.thenly h4 small{font-size:12px}.thenly h5{font-size:12px}.thenly h6{font-size:11px;color:#999;text-transform:uppercase}.thenly .page-header{padding-bottom:15px;margin:16px 0;border-bottom:1px solid #eee}.thenly .page-header h1{line-height:1}.thenly ul,.thenly ol{padding:0;margin:0 0 8px 25px}.thenly ul ul,.thenly ul ol,.thenly ol ol,.thenly ol ul{margin-bottom:0}.thenly ul{list-style:disc}.thenly ol{list-style:decimal}.thenly li{line-height:16px}.thenly ul.unstyled,.thenly ol.unstyled{margin-left:0;list-style:none}.thenly dl{margin-bottom:16px}.thenly dt,.thenly dd{line-height:16px}.thenly dt{font-weight:bold;line-height:15px}.thenly dd{margin-left:8px}.thenly .dl-horizontal dt{float:left;clear:left;width:120px;text-align:right}.thenly .dl-horizontal dd{margin-left:130px}.thenly hr{margin:16px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}.thenly strong{font-weight:bold}.thenly em{font-style:italic}.thenly .muted{color:#999}.thenly abbr[title]{border-bottom:1px dotted #ddd;cursor:help}.thenly abbr.initialism{font-size:90%;text-transform:uppercase}.thenly blockquote{padding:0 0 0 15px;margin:0 0 16px;border-left:5px solid #eee}.thenly blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:20px}.thenly blockquote small{display:block;line-height:16px;color:#999}.thenly blockquote small:before{content:'\2014 \00A0'}.thenly blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eee}.thenly blockquote.pull-right p,.thenly blockquote.pull-right small{text-align:right}.thenly q:before,.thenly q:after,.thenly blockquote:before,.thenly blockquote:after{content:""}.thenly address{display:block;margin-bottom:16px;line-height:16px;font-style:normal}.thenly small{font-size:100%}.thenly cite{font-style:normal}.thenly .dropdown{position:relative}.thenly .dropdown-toggle{*margin-bottom:-3px}.thenly .dropdown-toggle:active,.thenly .open .dropdown-toggle{outline:0}.thenly .caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.thenly .dropdown .caret{margin-top:8px;margin-left:2px}.thenly .dropdown:hover .caret,.thenly .open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.thenly .dropdown-menu{position:absolute;top:100%;left:0;z-index:2000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px}.thenly .dropdown-menu.pull-right{right:0;left:auto}.thenly .dropdown-menu .divider{height:1px;margin:7px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.thenly .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:16px;color:#333;white-space:nowrap}.thenly .dropdown-menu li>a:hover,.thenly .dropdown-menu .active>a,.thenly .dropdown-menu .active>a:hover{color:#000;text-decoration:none;background-color:#e0efff}.thenly .dropdown.open{*z-index:2000}.thenly .dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,0.3)}.thenly .dropdown.open .dropdown-menu{display:block}.thenly .pull-right .dropdown-menu{left:auto;right:0}.thenly .dropup .caret,.thenly .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.thenly .dropup .dropdown-menu,.thenly .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.thenly .typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.thenly .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:16px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #ccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);cursor:pointer;*margin-left:.3em}.thenly .btn:hover,.thenly .btn:active,.thenly .btn.active,.thenly .btn.disabled,.thenly .btn[disabled]{background-color:#e6e6e6}.thenly .btn:active,.thenly .btn.active{background-color:#ccc \9}.thenly .btn:first-child{*margin-left:0}.thenly .btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.thenly .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.thenly .btn.active,.thenly .btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0}.thenly .btn.disabled,.thenly .btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.thenly .btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.thenly .btn-large [class^="icon-"]{margin-top:1px}.thenly .btn-small{padding:5px 9px;font-size:11px;line-height:14px}.thenly .btn-small [class^="icon-"]{margin-top:-1px}.thenly .btn-mini{padding:2px 6px;font-size:11px;line-height:12px}.thenly .btn-primary,.thenly .btn-primary:hover,.thenly .btn-warning,.thenly .btn-warning:hover,.thenly .btn-danger,.thenly .btn-danger:hover,.thenly .btn-success,.thenly .btn-success:hover,.thenly .btn-info,.thenly .btn-info:hover,.thenly .btn-inverse,.thenly .btn-inverse:hover{text-shadow:0 -1px 0 rgba(0,0,0,0.25);color:#fff}.thenly .btn-primary.active,.thenly .btn-warning.active,.thenly .btn-danger.active,.thenly .btn-success.active,.thenly .btn-info.active,.thenly .btn-inverse.active{color:rgba(255,255,255,0.75)}.thenly .btn-primary{background-color:#5977a6;background-image:-moz-linear-gradient(top,#597fa6,#596ca6);background-image:-ms-linear-gradient(top,#597fa6,#596ca6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#597fa6),to(#596ca6));background-image:-webkit-linear-gradient(top,#597fa6,#596ca6);background-image:-o-linear-gradient(top,#597fa6,#596ca6);background-image:linear-gradient(top,#597fa6,#596ca6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#597fa6',endColorstr='#596ca6',GradientType=0);border-color:#596ca6 #596ca6 #3e4b74;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-primary:hover,.thenly .btn-primary:active,.thenly .btn-primary.active,.thenly .btn-primary.disabled,.thenly .btn-primary[disabled]{background-color:#596ca6}.thenly .btn-primary:active,.thenly .btn-primary.active{background-color:#475684 \9}.thenly .btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-warning:hover,.thenly .btn-warning:active,.thenly .btn-warning.active,.thenly .btn-warning.disabled,.thenly .btn-warning[disabled]{background-color:#f89406}.thenly .btn-warning:active,.thenly .btn-warning.active{background-color:#c67605 \9}.thenly .btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-danger:hover,.thenly .btn-danger:active,.thenly .btn-danger.active,.thenly .btn-danger.disabled,.thenly .btn-danger[disabled]{background-color:#bd362f}.thenly .btn-danger:active,.thenly .btn-danger.active{background-color:#942a25 \9}.thenly .btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-success:hover,.thenly .btn-success:active,.thenly .btn-success.active,.thenly .btn-success.disabled,.thenly .btn-success[disabled]{background-color:#51a351}.thenly .btn-success:active,.thenly .btn-success.active{background-color:#408140 \9}.thenly .btn-info{background-color:#e0efff;background-image:-moz-linear-gradient(top,#e0efff,#e0efff);background-image:-ms-linear-gradient(top,#e0efff,#e0efff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e0efff),to(#e0efff));background-image:-webkit-linear-gradient(top,#e0efff,#e0efff);background-image:-o-linear-gradient(top,#e0efff,#e0efff);background-image:linear-gradient(top,#e0efff,#e0efff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e0efff',endColorstr='#e0efff',GradientType=0);border-color:#e0efff #e0efff #94c8ff;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-info:hover,.thenly .btn-info:active,.thenly .btn-info.active,.thenly .btn-info.disabled,.thenly .btn-info[disabled]{background-color:#e0efff}.thenly .btn-info:active,.thenly .btn-info.active{background-color:#add5ff \9}.thenly .btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top,#555,#222);background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.thenly .btn-inverse:hover,.thenly .btn-inverse:active,.thenly .btn-inverse.active,.thenly .btn-inverse.disabled,.thenly .btn-inverse[disabled]{background-color:#222}.thenly .btn-inverse:active,.thenly .btn-inverse.active{background-color:#080808 \9}.thenly button.btn,.thenly input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}.thenly button.btn::-moz-focus-inner,.thenly input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}.thenly button.btn.btn-large,.thenly input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}.thenly button.btn.btn-small,.thenly input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}.thenly button.btn.btn-mini,.thenly input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.thenly .btn-group{position:relative;*zoom:1;*margin-left:.3em}.thenly .btn-group:before,.thenly .btn-group:after{display:table;content:""}.thenly .btn-group:after{clear:both}.thenly .btn-group:first-child{*margin-left:0}.thenly .btn-group+.btn-group{margin-left:5px}.thenly .btn-toolbar{margin-top:8px;margin-bottom:8px}.thenly .btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.thenly .btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.thenly .btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.thenly .btn-group .btn:last-child,.thenly .btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.thenly .btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}.thenly .btn-group .btn.large:last-child,.thenly .btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}.thenly .btn-group .btn:hover,.thenly .btn-group .btn:focus,.thenly .btn-group .btn:active,.thenly .btn-group .btn.active{z-index:2}.thenly .btn-group .dropdown-toggle:active,.thenly .btn-group.open .dropdown-toggle{outline:0}.thenly .btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);*padding-top:3px;*padding-bottom:3px}.thenly .btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px}.thenly .btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.thenly .btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px}.thenly .btn-group.open{*z-index:2000}.thenly .btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.thenly .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 6px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 6px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.thenly .btn .caret{margin-top:7px;margin-left:0}.thenly .btn:hover .caret,.thenly .open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.thenly .btn-mini .caret{margin-top:5px}.thenly .btn-small .caret{margin-top:6px}.thenly .btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000}.thenly .btn-primary .caret,.thenly .btn-warning .caret,.thenly .btn-danger .caret,.thenly .btn-info .caret,.thenly .btn-success .caret,.thenly .btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.thenly .pull-right{float:right}.thenly .pull-left{float:left}.thenly .hide{display:none}.thenly .show{display:block}.thenly .invisible{visibility:hidden}.thenly .btn-info,.thenly .btn-info:hover,.thenly .btn-info:active,.thenly .btn-info.active,.thenly .btn-info.active:hover{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75)}.thenly .btn-toolbar .btn.btn-mini{top:5px}.thenly ul.dropdown-menu li{list-style-type:none!important}.thenly small{margin:0!important}.thenly tr{background:none!important}.tooltip{position:absolute;z-index:2020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.ai1ec-loading{position:absolute;z-index:9;top:0;left:0;width:100%;height:100%;background:url(../img/ajax-loader.gif) no-repeat center center;display:none}.ai1ec-label{padding:0 .2em;font-size:9pt;font-weight:bold;color:#999!important}.ai1ec-category{cursor:pointer;font-size:.9em;border:1px solid #dcdcdc;text-shadow:0 1px 0 #fff;padding:2pt 3pt!important;margin:.2em!important;text-decoration:none!important;text-transform:uppercase;letter-spacing:1pt;white-space:nowrap;color:#7f7f7f!important;background:#f0f0f0;border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em}.ai1ec-category:hover{color:#333!important;background:#dcdcdc}.ai1ec-category.ai1ec-selected{background:#e0efff;border-color:#b7daff;color:#787e85!important}.ai1ec-category.ai1ec-selected:hover{background:#b7daff;color:#333!important}.ai1ec-category-color{-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),inset 0 -1px 2px rgba(0,0,0,0.5);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),inset 0 -1px 2px rgba(0,0,0,0.5);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),inset 0 -1px 2px rgba(0,0,0,0.5);display:inline-block;height:.9em;margin:0 1px;width:.9em}.ai1ec-tag{color:#507295!important;line-height:1.3em;cursor:pointer;white-space:nowrap;margin:.1em .2em;padding:.1em .2em;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;display:inline-block}.ai1ec-tag:hover{color:#354c63!important;text-decoration:none}.ai1ec-tag.ai1ec-selected{background:#e0efff}.ai1ec-subscribe-google img{background:none!important;border:none!important;float:left;height:32px!important;margin:-8px .5em -10px 0!important;padding:0!important;width:30px!important}.ai1ec-agenda-widget-view{font-size:.8em!important;overflow:hidden}.ai1ec-agenda-widget-view div{margin:0}.ai1ec-agenda-widget-view .ai1ec-no-results{font-style:italic;font-size:1.4em!important}.ai1ec-agenda-widget-view>ol{margin:0!important;padding:0!important}.ai1ec-agenda-widget-view li{list-style:none!important;border:none!important}.ai1ec-agenda-widget-view .ai1ec-date-events{overflow:hidden;margin:0 .5em 0 0!important;padding:0!important}.ai1ec-agenda-widget-view .ai1ec-date{border-top:1px solid #e5e5e5!important;background:rgba(242,242,242,0.8);background:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),color-stop(1em,#f2f2f2),to(rgba(242,242,242,0)));background:-webkit-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-moz-linear-gradient(top,#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-ms-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:-o-linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background:linear-gradient(#f2f2f2,#f2f2f2 1em,rgba(242,242,242,0));background-repeat:no-repeat;margin:0!important;overflow:hidden;padding:0!important}.ai1ec-agenda-widget-view .ai1ec-date.ai1ec-today{border-top:1px solid #f0f0aa!important;background:rgba(244,244,191,0.8);background:-webkit-gradient(linear,0 0,0 100%,from(#f4f4bf),color-stop(1em,#f4f4bf),to(rgba(244,244,191,0)));background:-webkit-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-moz-linear-gradient(top,#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-ms-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:-o-linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background:linear-gradient(#f4f4bf,#f4f4bf 1em,rgba(244,244,191,0));background-repeat:no-repeat}.ai1ec-agenda-widget-view h3.ai1ec-date-title{border:2px solid #8ba5c0;-webkit-border-radius:0 0 .5em .5em;-moz-border-radius:0 0 .5em .5em;border-radius:0 0 .5em .5em;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.08);-moz-box-shadow:0 2px 2px rgba(0,0,0,0.08);box-shadow:0 2px 2px rgba(0,0,0,0.08);color:#525252;float:left;font-size:1em;font-weight:normal;background-color:#f9f9f9;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(1em,#fff),to(#e0e0e0));background-image:-webkit-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:-moz-linear-gradient(top,#fff,#fff 1em,#e0e0e0);background-image:-ms-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:-o-linear-gradient(#fff,#fff 1em,#e0e0e0);background-image:linear-gradient(#fff,#fff 1em,#e0e0e0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e0e0e0',GradientType=0);line-height:1.1em;margin:0 .5em .5em!important;padding:0!important;text-align:center;text-shadow:0 1px 0 #fff;width:3.5em}.ai1ec-agenda-widget-view .ai1ec-month{text-shadow:0 -1px 0 rgba(0,0,0,0.25);background:#8ba5c0;font-size:.9em!important;padding:.1em 0 .2em;text-transform:uppercase;letter-spacing:.2em;color:#fff}.ai1ec-agenda-widget-view .ai1ec-day{font-size:1.7em!important;padding:.3em 0 .2em!important}.ai1ec-agenda-widget-view .ai1ec-weekday{font-size:.9em!important;line-height:1.5em}.ai1ec-agenda-widget-view .ai1ec-event{clear:right;font-size:1.2em;line-height:1.3em;margin:.5em 0!important;overflow:hidden;padding:0!important;position:relative}.ai1ec-agenda-widget-view .ai1ec-event a{color:#507295;display:block;background:#fff;border:1px solid #d4d4d4;-webkit-border-radius:.4em;-moz-border-radius:.4em;border-radius:.4em;padding:.2em .4em!important;text-decoration:none!important}.ai1ec-agenda-widget-view .ai1ec-event a:hover{border-color:#aeaeae;color:#354c63;text-decoration:none!important}.ai1ec-agenda-widget-view .ai1ec-event .ai1ec-event-time{font-weight:bold}.ai1ec-agenda-widget-view .ai1ec-event .ai1ec-event-title{font-weight:normal}.ai1ec-agenda-widget-view .ai1ec-event.ai1ec-allday a{background:#507295;border:1px solid transparent;color:#fff}.ai1ec-agenda-widget-view .ai1ec-event.ai1ec-allday a:hover{background:#354c63}.ai1ec-agenda-widget-view .ai1ec-event.ai1ec-allday a .ai1ec-event-time{color:#fff}.ai1ec-agenda-widget-view .ai1ec-event .ai1ec-category-colors{font-size:.9em}.ai1ec-agenda-widget-view .ai1ec-event .ai1ec-category-colors .ai1ec-category-color{margin:0 0 -0.1em;padding:1px}.ai1ec-agenda-widget-view .ai1ec-subscribe-google img{width:19px!important;height:20px!important;margin:-5px .5em -5px 0!important}
themes-ai1ec/vortex/css/print.css ADDED
@@ -0,0 +1 @@
 
1
+ body{background:white;color:black;margin:0}#header,#navigation,#comments,#sidebar,#subcontent,#footer{display:none}#wpadminbar,footer{display:none}#page>header{display:none}#content{margin-top:-60px!important}*,.ai1ec-agenda-view .ai1ec-date{background:white!important;color:black!important}.thenly table.ai1ec-calendar-toolbar{display:none}.thenly .ai1ec-agenda-view .ai1ec-event.ai1ec-expanded{box-shadow:none;border:2px solid gray!important;background:none!important}.thenly .ai1ec-agenda-view h3.ai1ec-date-title{border:2px solid gray!important}.thenly ol.ai1ec-agenda-view h3.ai1ec-date-title{margin-top:.5em!important;border-radius:0}.thenly h3.ai1ec-date-title{width:5em;color:black}.thenly h3.ai1ec-date-title .ai1ec-month{display:inline;float:right;color:black}.thenly h3.ai1ec-date-title .ai1ec-day{padding:0!important;font-size:1em!important;color:black}.thenly h3.ai1ec-date-title .ai1ec-weekday{display:inline;float:left;color:black}.thenly div.ai1ec-event-click,.thenly div.ai1ec-categories{display:none}.thenly div.ai1ec-event-summary,.thenly div.ai1ec-event-summary div.ai1ec-event-click,.thenly div.ai1ec-event-description{display:block!important}.thenly ol.ai1ec-agenda-view div.ai1ec-event-summary div.ai1ec-event-title{display:inline}.thenly ol.ai1ec-agenda-view div.ai1ec-event-summary div.ai1ec-event-time{display:inline}.thenly a.ai1ec-button{display:none}.thenly ol.ai1ec-agenda-view div.ai1ec-event-description{padding:0!important}.thenly ol.ai1ec-agenda-view div.ai1ec-event-overlay{display:none}.thenly .entry-meta{display:none}.thenly #ai1ec-today,.thenly #ai1ec-expand-all,.thenly #ai1ec-collapse-all,.thenly #ai1ec-prev-page,.thenly #ai1ec-next-page{display:none}.thenly .ai1ec-subscribe,.thenly .ai1ec-subscribe-google{display:none}
themes-ai1ec/vortex/event-excerpt.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <div class="thenly ai1ec-excerpt">
2
+ <div class="ai1ec-time"><span class="ai1ec-label"><?php _e( 'When:', AI1EC_PLUGIN_NAME ) ?></span> <?php echo $event->timespan_html ?></div>
3
+ <?php if( $location ): ?>
4
+ <div class="ai1ec-location"><span class="ai1ec-label"><?php _e( 'Where:', AI1EC_PLUGIN_NAME ) ?></span> <?php echo $location ?></div>
5
+ <?php endif ?>
6
+ </div>
{app/view → themes-ai1ec/vortex}/event-map.php RENAMED
@@ -1,11 +1,11 @@
1
  <?php if( $hide_maps_until_clicked ) : ?>
2
- <div class="ai1ec-gmap-placeholder"><strong><?php _e( 'Click to view map', AI1EC_PLUGIN_NAME ) ?></strong></div>
3
  <?php endif; ?>
4
  <div class="ai1ec-gmap-container<?php echo $hide_maps_until_clicked ? ' ai1ec-gmap-container-hidden' : '' ?>">
5
  <div id="ai1ec-gmap-canvas"></div>
6
  <input type="hidden" id="ai1ec-gmap-address" value="<?php echo esc_attr( $address ) ?>" />
7
- <a class="ai1ec-gmap-link ai1ec-button"
8
  href="<?php echo $gmap_url_link ?>" target="_blank">
9
- <?php _e( 'View Full-Size Map »', AI1EC_PLUGIN_NAME ) ?>
10
  </a>
11
  </div>
1
  <?php if( $hide_maps_until_clicked ) : ?>
2
+ <div class="ai1ec-gmap-placeholder"><strong><i class="icon-map-marker"></i> <?php _e( 'Click to view map', AI1EC_PLUGIN_NAME ) ?></strong></div>
3
  <?php endif; ?>
4
  <div class="ai1ec-gmap-container<?php echo $hide_maps_until_clicked ? ' ai1ec-gmap-container-hidden' : '' ?>">
5
  <div id="ai1ec-gmap-canvas"></div>
6
  <input type="hidden" id="ai1ec-gmap-address" value="<?php echo esc_attr( $address ) ?>" />
7
+ <a class="ai1ec-gmap-link btn btn-mini"
8
  href="<?php echo $gmap_url_link ?>" target="_blank">
9
+ <?php _e( 'View Full-Size Map', AI1EC_PLUGIN_NAME ) ?> <i class="icon-arrow-right"></i>
10
  </a>
11
  </div>
themes-ai1ec/vortex/event-multi.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <table class="thenly ai1ec-event ai1ec-multi-event ai1ec-event-id-<?php echo $event->post_id ?> <?php if( $event->multiday ) echo 'ai1ec-multiday' ?> <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
2
+ <tbody>
3
+ <tr>
4
+ <th scope="row" class="ai1ec-time"><?php _e( 'When:', AI1EC_PLUGIN_NAME ); ?></th>
5
+ <td class="ai1ec-time">
6
+ <a class="ai1ec-calendar-link btn btn-mini pull-right" href="<?php echo $calendar_url; ?>">
7
+ <?php _e( 'View in Calendar »', AI1EC_PLUGIN_NAME ); ?>
8
+ </a>
9
+ <?php echo $event->timespan_html; ?>
10
+ </td>
11
+ </tr>
12
+ <?php if( $recurrence ): ?>
13
+ <tr>
14
+ <th scope="row" class="ai1ec-recurrence"><?php _e( 'Repeats:', AI1EC_PLUGIN_NAME ); ?></th>
15
+ <td class="ai1ec-recurrence" colspan="2"><?php echo $recurrence ?></td>
16
+ </tr>
17
+ <?php endif; ?>
18
+ <tr>
19
+ <?php if( $location ): ?>
20
+ <th scope="row" class="ai1ec-location"><?php _e( 'Where:', AI1EC_PLUGIN_NAME ); ?></th>
21
+ <td class="ai1ec-location">
22
+ <?php if( $event->show_map ): ?>
23
+ <a class="btn ai1ec-gmap-link" href="<?php the_permalink(); ?>#ai1ec-event">
24
+ <?php _e( 'View Map »', AI1EC_PLUGIN_NAME ); ?>
25
+ </a>
26
+ <?php endif; ?>
27
+ <?php echo $location; ?>
28
+ </td>
29
+ <?php endif; ?>
30
+ </tr>
31
+ <tr>
32
+ <?php if( $event->cost ): ?>
33
+ <th scope="row" class="ai1ec-cost"><?php _e( 'Cost:', AI1EC_PLUGIN_NAME ); ?></th>
34
+ <td class="ai1ec-cost"><?php echo esc_html( $event->cost ); ?></td>
35
+ <?php endif; ?>
36
+ </tr>
37
+ <tr>
38
+ <?php if( $contact ): ?>
39
+ <th scope="row" class="ai1ec-contact"><?php _e( 'Contact:', AI1EC_PLUGIN_NAME ); ?></th>
40
+ <td class="ai1ec-contact"><?php echo $contact; ?></td>
41
+ <?php endif; ?>
42
+ </tr>
43
+ <tr>
44
+ <?php if( $categories ): ?>
45
+ <th scope="row" class="ai1ec-categories"><?php _e( 'Categories:', AI1EC_PLUGIN_NAME ); ?></th>
46
+ <td class="ai1ec-categories"><?php echo $categories; ?></td>
47
+ <?php endif; ?>
48
+ </tr>
49
+ <tr>
50
+ <?php if( $tags ): ?>
51
+ <th scope="row" class="ai1ec-tags"><?php _e( 'Tags:', AI1EC_PLUGIN_NAME ); ?></th>
52
+ <td class="ai1ec-tags"><?php echo $tags; ?></td>
53
+ <?php endif; ?>
54
+ </tr>
55
+ </tbody>
56
+ </table>
{app/view → themes-ai1ec/vortex}/event-single-footer.php RENAMED
@@ -5,7 +5,8 @@
5
  esc_attr( str_replace( 'http://', 'webcal://', $event->ical_feed_url ) ) ) ?>
6
  <?php if( $event->ical_source_url ): ?>
7
  <a href="<?php echo esc_attr( $event->ical_source_url ) ?>" target="_blank">
8
- <?php _e( 'View original post »', AI1EC_PLUGIN_NAME ) ?>
 
9
  </a>
10
  <?php endif ?>
11
  </p>
5
  esc_attr( str_replace( 'http://', 'webcal://', $event->ical_feed_url ) ) ) ?>
6
  <?php if( $event->ical_source_url ): ?>
7
  <a href="<?php echo esc_attr( $event->ical_source_url ) ?>" target="_blank">
8
+ <?php _e( 'View original post', AI1EC_PLUGIN_NAME ) ?>
9
+ <i class="icon-external-link"></i>
10
  </a>
11
  <?php endif ?>
12
  </p>
{app/view → themes-ai1ec/vortex}/event-single.php RENAMED
@@ -1,11 +1,11 @@
1
  <a name="ai1ec-event"></a>
2
- <table class="ai1ec-full-event ai1ec-single-event ai1ec-event-id-<?php echo $event->post_id ?> <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
3
  <tbody>
4
  <tr>
5
  <th scope="row" class="ai1ec-time"><?php _e( 'When:', AI1EC_PLUGIN_NAME ) ?></th>
6
  <td colspan="2" class="ai1ec-time">
7
- <a class="ai1ec-button ai1ec-calendar-link" href="<?php echo $calendar_url ?>">
8
- <?php _e( 'Back to Calendar »', AI1EC_PLUGIN_NAME ) ?>
9
  </a>
10
  <?php echo $event->timespan_html ?>
11
  </td>
@@ -27,14 +27,14 @@
27
  <td rowspan="5" class="ai1ec-map <?php if( $map ) echo 'ai1ec-has-map' ?>">
28
  <?php echo $map ?>
29
  <?php if( $show_subscribe_buttons ) : ?>
30
- <a class="ai1ec-button ai1ec-subscribe"
31
  href="<?php echo esc_attr( $subscribe_url ) ?>"
32
  title="<?php _e( 'Add this event to your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ) ?>" />
33
  <?php _e( '✔ Add to Calendar', AI1EC_PLUGIN_NAME ) ?></a>
34
- <a class="ai1ec-button ai1ec-subscribe-google" target="_blank"
35
  href="<?php echo esc_attr( $google_url ) ?>"
36
  title="<?php _e( 'Add this event to your Google Calendar', AI1EC_PLUGIN_NAME ) ?>" />
37
- <img src="<?php echo AI1EC_IMAGE_URL ?>/google-calendar.png" />
38
  <?php _e( 'Add to Google Calendar', AI1EC_PLUGIN_NAME ) ?>
39
  </a>
40
  <?php endif ?>
@@ -61,7 +61,7 @@
61
  <tr>
62
  <th scope="row" class="ai1ec-tags">
63
  <?php if( $tags ): ?>
64
- <?php _e( 'Tags:', AI1EC_PLUGIN_NAME ) ?>
65
  <?php endif ?>
66
  </th>
67
  <td class="ai1ec-tags"><?php echo $tags ?></td>
1
  <a name="ai1ec-event"></a>
2
+ <table class="thenly ai1ec-full-event ai1ec-single-event ai1ec-event-id-<?php echo $event->post_id ?> <?php if( $event->multiday ) echo 'ai1ec-multiday' ?> <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
3
  <tbody>
4
  <tr>
5
  <th scope="row" class="ai1ec-time"><?php _e( 'When:', AI1EC_PLUGIN_NAME ) ?></th>
6
  <td colspan="2" class="ai1ec-time">
7
+ <a class="ai1ec-calendar-link btn pull-right" href="<?php echo $calendar_url ?>">
8
+ <i class="icon-arrow-left"></i> <?php _e( 'Back to Calendar', AI1EC_PLUGIN_NAME ) ?>
9
  </a>
10
  <?php echo $event->timespan_html ?>
11
  </td>
27
  <td rowspan="5" class="ai1ec-map <?php if( $map ) echo 'ai1ec-has-map' ?>">
28
  <?php echo $map ?>
29
  <?php if( $show_subscribe_buttons ) : ?>
30
+ <a class="btn btn-small ai1ec-subscribe"
31
  href="<?php echo esc_attr( $subscribe_url ) ?>"
32
  title="<?php _e( 'Add this event to your favourite calendar program (iCal, Outlook, etc.)', AI1EC_PLUGIN_NAME ) ?>" />
33
  <?php _e( '✔ Add to Calendar', AI1EC_PLUGIN_NAME ) ?></a>
34
+ <a class="btn btn-small ai1ec-subscribe-google" target="_blank"
35
  href="<?php echo esc_attr( $google_url ) ?>"
36
  title="<?php _e( 'Add this event to your Google Calendar', AI1EC_PLUGIN_NAME ) ?>" />
37
+ <img src="<?php echo $this->get_theme_img_url( 'google-calendar.png' ) ?>" />
38
  <?php _e( 'Add to Google Calendar', AI1EC_PLUGIN_NAME ) ?>
39
  </a>
40
  <?php endif ?>
61
  <tr>
62
  <th scope="row" class="ai1ec-tags">
63
  <?php if( $tags ): ?>
64
+ <i class="icon-tags"></i> <?php _e( 'Tags:', AI1EC_PLUGIN_NAME ) ?>
65
  <?php endif ?>
66
  </th>
67
  <td class="ai1ec-tags"><?php echo $tags ?></td>
themes-ai1ec/vortex/font/fontawesome-webfont.eot ADDED
Binary file
themes-ai1ec/vortex/font/fontawesome-webfont.svg ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG webfont generated by Font Squirrel.
6
+ Designer : Dave Gandy
7
+ Foundry : Fort Awesome
8
+ </metadata>
9
+ <defs>
10
+ <font id="FontAwesomeRegular" horiz-adv-x="900" >
11
+ <font-face units-per-em="1000" ascent="750" descent="-250" />
12
+ <missing-glyph horiz-adv-x="250" />
13
+ <glyph unicode="&#xd;" horiz-adv-x="250" />
14
+ <glyph horiz-adv-x="0" />
15
+ <glyph horiz-adv-x="0" />
16
+ <glyph unicode=" " horiz-adv-x="250" />
17
+ <glyph unicode="&#x09;" horiz-adv-x="250" />
18
+ <glyph unicode="&#xa0;" horiz-adv-x="250" />
19
+ <glyph unicode="&#x2000;" horiz-adv-x="375" />
20
+ <glyph unicode="&#x2001;" horiz-adv-x="751" />
21
+ <glyph unicode="&#x2002;" horiz-adv-x="375" />
22
+ <glyph unicode="&#x2003;" horiz-adv-x="751" />
23
+ <glyph unicode="&#x2004;" horiz-adv-x="250" />
24
+ <glyph unicode="&#x2005;" horiz-adv-x="187" />
25
+ <glyph unicode="&#x2006;" horiz-adv-x="125" />
26
+ <glyph unicode="&#x2007;" horiz-adv-x="125" />
27
+ <glyph unicode="&#x2008;" horiz-adv-x="93" />
28
+ <glyph unicode="&#x2009;" horiz-adv-x="150" />
29
+ <glyph unicode="&#x200a;" horiz-adv-x="41" />
30
+ <glyph unicode="&#x202f;" horiz-adv-x="150" />
31
+ <glyph unicode="&#x205f;" horiz-adv-x="187" />
32
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0v0v0v0v0z" />
33
+ <glyph unicode="&#xf000;" horiz-adv-x="750" d="M3 727q10 23 34 23h675q25 0 35 -23t-8 -41l-298 -298v-313h121q16 0 27 -11t11 -26q0 -16 -11 -27t-27 -11h-375q-15 0 -26 11t-11 27q0 15 11 26t26 11h122v313l-298 298q-18 18 -8 41z" />
34
+ <glyph unicode="&#xf001;" horiz-adv-x="688" d="M0 112q0 24 11 44.5t30 35.5t45 24t55 9q13 0 24.5 -2t22.5 -5v388l500 144v-525q0 -23 -11 -43.5t-30 -36t-45 -24.5t-55 -9t-54.5 9t-44.5 24.5t-30 36t-11 43.5t11 43.5t30 35.5t44.5 24t54.5 9q24 0 47 -6v248l-312 -90v-377q0 -23 -11 -43.5t-30 -35.5t-45 -24 t-55 -9t-55 9t-45 24t-30 35.5t-11 43.5z" />
35
+ <glyph unicode="&#xf002;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM194 437q0 25 9.5 46.5t25.5 37.5t37.5 25.5t46.5 9.5q10 0 16.5 -7t6.5 -17t-6.5 -16.5t-16.5 -6.5 q-30 0 -51 -21t-21 -51q0 -10 -6.5 -16.5t-16.5 -6.5t-17 6.5t-7 16.5z" />
36
+ <glyph unicode="&#xf003;" d="M0 56v587v32v19q0 23 16.5 39.5t39.5 16.5h19h750h19q23 0 39.5 -16.5t16.5 -39.5v-19v-30v-589q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v416q-15 -15 -28 -24q-29 -21 -61 -46t-64 -49q-19 -14 -36.5 -28t-32.5 -25q-3 -2 -6 -4.5 t-7 -5.5q-14 -11 -29.5 -22.5t-33.5 -22t-37.5 -17t-40.5 -6.5q-20 0 -39.5 6.5t-37 17t-33.5 22t-29 22.5q-4 3 -7 5.5t-6 4.5q-15 11 -32.5 25t-36.5 28q-32 24 -64 49t-61 46q-13 9 -28 24v-416zM75 643q0 -14 6 -30t16.5 -32t23 -30t26.5 -24q23 -17 49 -37l52 -38 q26 -20 50 -39t44 -34l22 -17q14 -11 28.5 -21t29 -17.5t27.5 -7.5h1h1q13 0 27.5 7.5t29 17.5t28.5 21l22 17q20 15 44 34t50 39l52 38q26 20 49 37q13 10 26 24t23.5 30t16.5 32t6 30v32h-750v-32z" />
37
+ <glyph unicode="&#xf004;" horiz-adv-x="846" d="M0 519q0 64 20 108t52.5 71.5t73.5 39.5t83 12q30 0 59 -10t54 -25t45.5 -32.5t35.5 -32.5q15 15 35.5 32.5t45.5 32.5t54 25t59 10q42 0 83 -12t73.5 -39.5t52.5 -71.5t20 -108q0 -44 -16.5 -83.5t-36 -69.5t-37 -48t-18.5 -19l-289 -288q-11 -11 -26 -11t-26 11 l-290 288q-1 1 -18 19t-36.5 48t-36 69.5t-16.5 83.5z" />
38
+ <glyph unicode="&#xf005;" horiz-adv-x="787" d="M0.5 465q4.5 13 25.5 16l238 35l106 215q10 20 23.5 20t22.5 -20l107 -215l237 -35q22 -3 26 -16t-11 -28l-172 -168l40 -236q4 -22 -7 -30t-30 3l-213 111l-212 -111q-20 -11 -31 -3t-7 30l41 236l-172 168q-16 15 -11.5 28z" />
39
+ <glyph unicode="&#xf006;" horiz-adv-x="787" d="M0.5 465q4.5 13 25.5 16l238 34l106 216q9 19 23 19t23 -19l107 -216l237 -34q22 -3 26 -16t-11 -28l-172 -168l40 -236q3 -16 -2 -24.5t-16 -8.5q-7 0 -19 5l-213 112l-212 -112q-12 -5 -19 -5q-11 0 -16 8.5t-3 24.5l41 236l-172 168q-16 15 -11.5 28zM136 421l100 -98 l29 -27l-7 -39l-24 -139l124 66l35 18l35 -18l124 -66l-23 139l-7 39l28 27l101 98l-139 20l-39 6l-18 35l-62 126l-62 -126l-17 -35l-39 -6z" />
40
+ <glyph unicode="&#xf007;" d="M0 34v7q11 19 19.5 40t17.5 42t19.5 40t25.5 34q7 7 15.5 13.5t19.5 10.5t23.5 5t25.5 3q37 6 77.5 12.5t78.5 12.5q4 17 7 34.5t8 33.5q-8 11 -16 21.5t-15.5 23t-13.5 28.5t-9 37q-2 11 -5 32.5t-6 44t-5.5 41t-2.5 22.5q0 25 10.5 56t33 58t58 45.5t84.5 18.5 t84.5 -18.5t58 -45.5t33 -58t10.5 -56q0 -4 -2.5 -22.5t-5.5 -41t-6 -44t-5 -32.5q-3 -21 -9 -37t-13.5 -28.5t-16 -23t-15.5 -21.5q5 -16 8 -33.5t7 -34.5q38 -6 78.5 -12.5t77.5 -12.5q13 -2 25.5 -3t23.5 -5t19.5 -10.5t15.5 -13.5q15 -15 25.5 -34t19.5 -40t17.5 -42 t19.5 -40v-7q-14 -8 -26.5 -18.5t-30.5 -15.5h-786q-18 5 -30.5 15.5t-26.5 18.5z" />
41
+ <glyph unicode="&#xf008;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM56 75q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5 v-75zM56 250q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM56 425q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM56 600 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM225 75q0 -8 5.5 -13.5t13.5 -5.5h412q8 0 13.5 5.5t5.5 13.5v250q0 8 -5.5 13.5t-13.5 5.5h-412q-8 0 -13.5 -5.5t-5.5 -13.5v-250zM225 425 q0 -8 5.5 -13.5t13.5 -5.5h412q8 0 13.5 5.5t5.5 13.5v250q0 8 -5.5 13.5t-13.5 5.5h-412q-8 0 -13.5 -5.5t-5.5 -13.5v-250zM731 75q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 250 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 425q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75zM731 600 q0 -8 5.5 -13.5t13.5 -5.5h75q8 0 13.5 5.5t5.5 13.5v75q0 8 -5.5 13.5t-13.5 5.5h-75q-8 0 -13.5 -5.5t-5.5 -13.5v-75z" />
42
+ <glyph unicode="&#xf009;" d="M0 38v262q0 16 11 27t27 11h337q16 0 27 -11t11 -27v-262q0 -16 -11 -27t-27 -11h-337q-16 0 -27 11t-11 27zM0 450v263q0 15 11 26t27 11h337q16 0 27 -11t11 -26v-263q0 -16 -11 -26.5t-27 -10.5h-337q-16 0 -27 10.5t-11 26.5zM488 38v262q0 16 10.5 27t26.5 11h338 q15 0 26 -11t11 -27v-262q0 -16 -11 -27t-26 -11h-338q-16 0 -26.5 11t-10.5 27zM488 450v263q0 15 10.5 26t26.5 11h338q15 0 26 -11t11 -26v-263q0 -16 -11 -26.5t-26 -10.5h-338q-16 0 -26.5 10.5t-10.5 26.5z" />
43
+ <glyph unicode="&#xf00a;" d="M0 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM0 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM0 580v133q0 15 11 26t27 11 h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110 q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM325 580v133q0 15 11 26t27 11h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM650 38v132q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-175 q-16 0 -27 11t-11 27zM650 320v110q0 16 11 26.5t27 10.5h175q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27zM650 580v133q0 15 11 26t27 11h175q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-175q-16 0 -27 11t-11 27z" />
44
+ <glyph unicode="&#xf00b;" d="M0 38v132q0 16 11 26.5t27 10.5h145q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM0 320v110q0 16 11 26.5t27 10.5h145q15 0 26 -10.5t11 -26.5v-110q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM0 580v133q0 15 11 26t27 11 h145q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-145q-16 0 -27 11t-11 27zM295 38v132q0 16 11 26.5t27 10.5h530q15 0 26 -10.5t11 -26.5v-132q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27zM295 320v110q0 16 11 26.5t27 10.5h530q15 0 26 -10.5t11 -26.5v-110 q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27zM295 580v133q0 15 11 26t27 11h530q15 0 26 -11t11 -26v-133q0 -16 -11 -27t-26 -11h-530q-16 0 -27 11t-11 27z" />
45
+ <glyph unicode="&#xf00c;" d="M0 312.5q0 16.5 11 27.5l85 85q11 11 27.5 11t27.5 -11l178 -178q11 -11 27.5 -11t27.5 11l364 364q11 11 27.5 11t27.5 -11l85 -85q11 -11 11 -27.5t-11 -27.5l-444 -444q-11 -11 -30.5 -19t-35.5 -8h-43q-17 0 -36.5 8t-30.5 19l-257 258q-11 11 -11 27.5z" />
46
+ <glyph unicode="&#xf00d;" horiz-adv-x="750" d="M0 94q0 19 14 33l248 249l-248 244q-14 14 -14 33t14 33l49 49q14 14 33 14t33 -14l246 -246l246 246q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-248 -249l248 -244q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-246 247l-247 -247 q-14 -14 -32.5 -14t-32.5 14l-49 49q-14 14 -14 33z" />
47
+ <glyph unicode="&#xf00e;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM188 422v31q0 7 4.5 11.5t10.5 4.5h78v78q0 6 4.5 10.5t11.5 4.5h31q7 0 11.5 -4.5t4.5 -10.5v-78h78 q16 0 16 -16v-31q0 -16 -16 -16h-78v-78q0 -16 -16 -16h-31q-16 0 -16 16v78h-78q-6 0 -10.5 4.5t-4.5 11.5z" />
48
+ <glyph unicode="&#xf010;" horiz-adv-x="750" d="M0 437q0 65 24.5 122t67 99.5t99.5 67t122 24.5q64 0 121 -24.5t99.5 -67t67 -99.5t24.5 -122q0 -48 -13.5 -91t-38.5 -81l168 -167q9 -10 9 -23t-9 -22l-44 -44q-9 -9 -22 -9t-22 9l-168 168q-38 -25 -81 -38.5t-91 -13.5q-65 0 -122 24.5t-99.5 67t-67 99t-24.5 121.5z M125 437q0 -39 14.5 -73t40 -59.5t60 -40t73.5 -14.5t73 14.5t59.5 40t40 59.5t14.5 73t-14.5 73t-40 59.5t-59.5 40.5t-73 15t-73.5 -15t-60 -40.5t-40 -59.5t-14.5 -73zM188 422v31q0 7 4.5 11.5t10.5 4.5h219q16 0 16 -16v-31q0 -16 -16 -16h-219q-6 0 -10.5 4.5 t-4.5 11.5z" />
49
+ <glyph unicode="&#xf011;" horiz-adv-x="713" d="M0 356q0 89 41 166.5t115 128.5q6 3 14 3q7 -1 12 -8l42 -62q10 -16 -5 -26q-51 -35 -78.5 -88t-27.5 -114q0 -50 19 -94.5t52 -77.5t77.5 -52t94.5 -19q51 0 95.5 19t77.5 52t52 77.5t19 94.5q0 61 -28 114t-79 88q-6 3 -8 12q-1 6 3 14l43 62q5 6 12 7.5t14 -2.5 q73 -51 114.5 -128.5t41.5 -166.5q0 -74 -28 -138.5t-76.5 -113t-113.5 -76.5t-139 -28t-138.5 28t-113 76.5t-76.5 113t-28 138.5zM300 394v337q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-337q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19z" />
50
+ <glyph unicode="&#xf012;" d="M0 19v127q0 8 5.5 13.5t13.5 5.5h94q8 0 13 -5.5t5 -13.5v-127q0 -8 -5 -13.5t-13 -5.5h-94q-19 0 -19 19zM192 19v212q0 8 5.5 13.5t13.5 5.5h94q8 0 13 -5.5t5 -13.5v-212q0 -8 -5 -13.5t-13 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5zM384 19v330q0 8 5.5 13.5t13.5 5.5h94 q8 0 13.5 -5.5t5.5 -13.5v-330q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5zM577 19v486q0 8 5 13.5t13 5.5h94q8 0 13.5 -5.5t5.5 -13.5v-486q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13 5.5t-5 13.5zM769 19v712q0 19 19 19h93q19 0 19 -19v-712 q0 -19 -19 -19h-93q-19 0 -19 19z" />
51
+ <glyph unicode="&#xf013;" horiz-adv-x="748" d="M0 320v111q0 7 7 9q19 5 39.5 8t40.5 5q4 0 8 0.5t9 1.5q5 14 10.5 27.5t12.5 27.5q-12 17 -26.5 36.5t-30.5 37.5q-5 5 0 12q19 23 40 44t44 40q5 5 12 0q11 -11 22.5 -20t23.5 -17q7 -5 14 -10.5t14 -10.5q26 14 55 23q3 28 6 51.5t8 45.5q2 8 9 8h111q9 0 9 -8 q4 -19 6.5 -38t5.5 -39l3 -20q14 -5 27.5 -10t26.5 -13q7 5 13 9.5t12 9.5q13 10 26 19t25 20q6 6 12 -1l11 -11q5 -5 11 -10q15 -14 30 -29.5t29 -32.5q4 -6 0 -12q-13 -15 -26 -32.5t-30 -40.5q15 -29 24 -58q12 -3 24.5 -4.5t25.5 -3.5q11 -2 23.5 -3.5t23.5 -3.5 q7 -2 7 -9v-111q0 -7 -7 -9q-18 -5 -38 -7.5t-40 -4.5q-5 -1 -9.5 -1.5t-9.5 -1.5q-5 -14 -10.5 -27.5t-12.5 -27.5q12 -17 26.5 -36.5t30.5 -37.5q5 -5 0 -12q-38 -47 -84 -84q-5 -5 -12 0q-11 11 -22.5 20t-23.5 17q-7 5 -14 10.5t-14 10.5q-26 -14 -55 -23 q-2 -23 -5.5 -48t-9.5 -49q-2 -8 -9 -8h-111q-7 0 -9 8q-3 19 -5.5 38t-5.5 39l-3 20q-14 5 -27.5 10t-26.5 13q-6 -5 -12.5 -9.5t-12.5 -9.5q-26 -18 -51 -39q-6 -6 -12 1q-5 5 -11 10.5t-11 10.5q-15 14 -30 29.5t-29 32.5q-5 6 0 12q15 18 29 37t27 36q-15 29 -24 58 q-12 3 -24.5 4.5t-24.5 3.5t-24.5 3.5t-23.5 3.5q-7 2 -7 9zM261 375q0 -24 9 -44.5t24.5 -35.5t36 -24t43.5 -9t43.5 9t35.5 24t24 35.5t9 44.5q0 23 -9 43.5t-24 35.5t-35.5 24t-43.5 9t-43.5 -9t-36 -24t-24.5 -35.5t-9 -43.5z" />
52
+ <glyph unicode="&#xf014;" horiz-adv-x="648" d="M0 582q0 8 0.5 16t0.5 17q11 6 32.5 10t47 7t52.5 5t49 3q-2 16 -1 32t7 33q1 4 6 11.5t18.5 15t40 13t71.5 5.5t71.5 -5.5t40 -13t18 -15.5t6.5 -12q6 -17 7 -32.5t-1 -31.5q22 -1 49 -3t53 -5t47 -7t32 -10q1 -9 1 -17v-16v-16q0 -8 -1 -17q-10 -6 -30.5 -10t-45.5 -7 t-51 -5t-48 -3t-37 -1.5t-16 -0.5l-95 -1h-13h-28q-19 0 -54 1q-2 0 -16.5 0.5t-36.5 1.5t-48 3t-51 5t-45.5 7t-30.5 10q0 9 -0.5 17t-0.5 16zM67 484q41 -5 84.5 -7.5t75.5 -3.5q9 -1 23 -1h74h73q14 0 23 1q33 1 76.5 3.5t84.5 7.5q-5 -76 -8 -154.5t-7 -154.5 q-1 -19 -1.5 -42.5t-2 -45.5t-6 -40.5t-14.5 -28.5q-12 -11 -42 -14.5t-58 -3.5h-236q-29 0 -58.5 3.5t-41.5 14.5q-10 10 -14.5 28.5t-6 40.5t-2 45.5t-1.5 42.5q-4 76 -7.5 154.5t-7.5 154.5zM147 383q1 -15 1 -28t1 -22q0 -11 1 -19q2 -34 3.5 -68t3.5 -67q1 -8 1 -17 v-20v-12q0 -6 0.5 -14t1.5 -19q1 -8 9.5 -14t13.5 -6q5 -1 10 -1t8 -1h11q5 0 5 19v286q0 8 -5.5 13.5t-13.5 5.5l-33 2q-8 0 -13 -5t-5 -13zM255.5 657q0.5 -6 1.5 -15q9 1 20 1h47l67 -1q1 9 1.5 15t-0.5 11q-11 3 -29.5 4.5t-38.5 1.5t-38.5 -1.5t-29.5 -4.5 q-1 -5 -0.5 -11zM292 94q0 -8 5 -13.5t13 -5.5h28q8 0 13.5 5.5t5.5 13.5v285q0 8 -11 13t-14 5h-15q-3 0 -14 -5t-11 -13v-285zM432 94q0 -19 4 -19h11q3 1 13 1.5t15 0.5q5 1 8.5 6.5t4.5 13.5q0 11 0.5 19t0.5 14q0 7 1 12v20q0 9 1 17q2 33 3 66.5t3 67.5q0 9 1 20 q1 9 1.5 22t1.5 28q0 8 -5 13t-13 5l-33 -2q-8 0 -13 -5.5t-5 -13.5v-286z" />
53
+ <glyph unicode="&#xf015;" d="M1 384.5q3 11.5 13 19.5l412 338q11 8 24 8t24 -8l126 -104v58q0 19 19 19h112q19 0 19 -19v-180l136 -112q10 -8 13 -19.5t-1 -22.5q-10 -24 -36 -24h-75v-300q0 -16 -10.5 -27t-26.5 -11h-206v225h-188v-225h-206q-16 0 -27 11t-11 27v300h-75q-25 0 -35 24 q-4 11 -1 22.5z" />
54
+ <glyph unicode="&#xf016;" horiz-adv-x="600" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h219v-269q0 -23 16.5 -39.5t39.5 -16.5h269v-369q0 -23 -16.5 -39.5t-39.5 -16.5h-488q-23 0 -39.5 16.5t-16.5 39.5zM331 481v266h3l263 -263v-3h-266z" />
55
+ <glyph unicode="&#xf017;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM319 375v150q0 23 16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5v-127l90 -89q17 -17 17 -40t-17 -40q-8 -8 -18.5 -12t-21.5 -4t-21.5 4t-18.5 12l-106 106q-1 1 -1 2t-1 2 q-7 7 -10 14q-4 9 -4 22z" />
56
+ <glyph unicode="&#xf018;" d="M1 17l290 716q3 7 10.5 12t15.5 5h95l-4 -83h84l-4 83h95q8 0 15.5 -5t10.5 -12l290 -716q3 -7 -0.5 -12t-11.5 -5h-361l-13 250h-126l-13 -250h-361q-8 0 -11.5 5t-0.5 12zM394 389h112l-10 202h-92z" />
57
+ <glyph unicode="&#xf019;" d="M0 19v300q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-169h600v169q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-300q0 -19 -19 -19h-862q-19 0 -19 19zM169 461q3 8 19 8h150v244q0 15 10.5 26t26.5 11h150q16 0 27 -11t11 -26v-244h150q15 0 18 -8 t-8 -19l-246 -247q-11 -11 -27 -11t-27 11l-246 247q-11 11 -8 19z" />
58
+ <glyph unicode="&#xf01a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 83.5t-84 56t-102 20.5t-102 -20.5t-83.5 -56t-56 -83.5t-20.5 -102zM206 349q4 10 24 10h79v185q0 8 5.5 13.5t13.5 5.5h94q8 0 13.5 -5.5t5.5 -13.5v-185h79q20 0 24 -10t-10 -24l-136 -136q-9 -9 -23 -9q-13 0 -23 9l-136 136q-14 14 -10 24z " />
59
+ <glyph unicode="&#xf01b;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 83.5t-84 56t-102 20.5t-102 -20.5t-83.5 -56t-56 -83.5t-20.5 -102zM206 401q-4 10 10 24l136 136q10 9 23 9q12 0 23 -9l136 -136q14 -14 10 -24t-24 -10h-79v-185q0 -8 -5.5 -13.5t-13.5 -5.5h-94q-8 0 -13.5 5.5t-5.5 13.5v185h-79 q-20 0 -24 10z" />
60
+ <glyph unicode="&#xf01c;" d="M0 38v282q0 16 4.5 37t10.5 35l139 324q6 14 21.5 24t30.5 10h488q15 0 30.5 -10t21.5 -24l139 -324q6 -14 10.5 -35t4.5 -37v-282q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM116 339h189l56 -113h187l57 113h179q-1 2 -1 4.5t-1 4.5l-125 290h-414l-125 -291 q-1 -1 -1 -3.5t-1 -4.5z" />
61
+ <glyph unicode="&#xf01d;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM258 220v310q0 9 8 14q8 4 15 0l269 -156q8 -3 8 -13t-8 -13l-269 -156q-4 -2 -8 -2q-3 0 -7 2q-8 5 -8 14z" />
62
+ <glyph unicode="&#xf01e;" horiz-adv-x="747" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5q66 0 127.5 -23t112.5 -65l76 76q16 16 27 11.5t11 -27.5v-217q0 -15 -11 -26q-10 -10 -25 -10l-217 -1q-23 0 -27.5 11.5t11.5 27.5l75 75q-35 26 -75.5 41t-84.5 15q-54 0 -102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102 t20.5 -102t56 -83.5t83.5 -56t102 -20.5q49 0 93.5 17t79.5 47.5t58 72t29 90.5q1 6 7 12q7 5 14 4l75 -10q8 -1 12.5 -7t3.5 -14q-9 -69 -42 -128.5t-83 -103t-113.5 -68.5t-133.5 -25q-78 0 -146 29.5t-119 80.5t-80.5 119t-29.5 146z" />
63
+ <glyph unicode="&#xf021;" d="M3 160l70 206q4 13 18 20q15 6 28 2l206 -70q21 -7 21.5 -19t-19.5 -22l-95 -47q24 -36 57.5 -63t75.5 -41q51 -18 103 -13.5t97.5 26.5t80.5 61t53 90q2 8 8.5 11t14.5 1l71 -24q17 -7 12 -24q-25 -74 -75 -129t-114.5 -86.5t-139 -37.5t-147.5 19q-63 21 -113.5 62 t-84.5 98l-97 -47q-20 -11 -29.5 -2.5t-1.5 29.5zM95 495q25 73 75 128.5t114.5 87.5t138.5 38t148 -19q63 -22 113 -63t85 -98l97 48q20 10 29.5 1.5t1.5 -29.5l-70 -205q-4 -14 -18 -21q-15 -6 -28 -2l-206 70q-21 7 -21.5 19t19.5 22l95 47q-24 36 -58 63t-76 41 q-51 18 -103 13.5t-97 -26.5t-80 -61t-53 -90q-2 -8 -9 -11t-14 -1l-71 25q-8 2 -11 9t-1 14z" />
64
+ <glyph unicode="&#xf022;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v525h-750v-525zM150 169v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75 q-19 0 -19 19zM150 319v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19zM150 469v37q0 19 19 19h75q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-75q-19 0 -19 19zM338 169v37q0 8 5 13.5t13 5.5h375 q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5zM338 319v37q0 8 5 13.5t13 5.5h375q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5zM338 469v37q0 8 5 13.5t13 5.5h375q19 0 19 -19v-37q0 -19 -19 -19h-375q-8 0 -13 5.5t-5 13.5z" />
65
+ <glyph unicode="&#xf023;" horiz-adv-x="750" d="M0 56v300q0 23 16.5 40t39.5 17h57v85q0 52 20.5 98t56 80t83.5 54t102 20t102 -20t84 -54t56.5 -80t20.5 -98v-85h56q23 0 39.5 -17t16.5 -40v-300q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5zM225 413h300v85q0 29 -12 54.5t-32 44.5t-47.5 30 t-58.5 11t-58.5 -11t-47.5 -30t-32 -44.5t-12 -54.5v-85z" />
66
+ <glyph unicode="&#xf024;" d="M0 675q0 31 22 53t53 22t53 -22t22 -53q0 -20 -10 -36.5t-27 -27.5v-592q0 -8 -5.5 -13.5t-13.5 -5.5h-38q-8 0 -13 5.5t-5 13.5v592q-17 11 -27.5 27.5t-10.5 36.5zM150 203v364q0 16 9.5 32t23.5 24q51 27 92 42t70 22q34 8 61 9q33 0 60.5 -5.5t52.5 -14.5t48.5 -21 t48.5 -25q31 -14 71 -16q34 -2 80 7.5t101 42.5q14 8 23 3t9 -21v-365q0 -15 -9 -31.5t-23 -24.5q-55 -33 -101 -42.5t-80 -7.5q-40 2 -71 16q-25 13 -48.5 25t-48.5 21t-52.5 14.5t-60.5 5.5q-27 -1 -61 -9q-29 -7 -70 -22t-92 -43q-14 -8 -23.5 -2t-9.5 22z" />
67
+ <glyph unicode="&#xf025;" d="M0 356q0 54 18.5 104.5t50 94t75 79.5t93.5 62t104.5 40t108.5 14t108.5 -14t104.5 -40t93.5 -62t75 -79.5t50 -94t18.5 -104.5q0 -87 -36 -165l-13 -28l-81 -12q-13 -49 -52.5 -81t-92.5 -32v-19q0 -8 -5.5 -13.5t-13.5 -5.5h-38q-8 0 -13 5.5t-5 13.5v337q0 8 5 13.5 t13 5.5h38q8 0 13.5 -5.5t5.5 -13.5v-18q42 0 75.5 -21t53.5 -54l19 2q15 43 15 91q0 58 -31 109.5t-80 89.5t-109 60.5t-118 22.5t-118 -22.5t-108.5 -60.5t-79.5 -89.5t-31 -109.5q0 -46 14 -91l19 -2q20 33 53.5 54t75.5 21v18q0 8 5.5 13.5t13.5 5.5h38q8 0 13 -5.5 t5 -13.5v-337q0 -8 -5 -13.5t-13 -5.5h-38q-8 0 -13.5 5.5t-5.5 13.5v19q-53 0 -92.5 32t-52.5 81l-81 12l-13 28q-36 78 -36 165z" />
68
+ <glyph unicode="&#xf026;" horiz-adv-x="425" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5z" />
69
+ <glyph unicode="&#xf027;" horiz-adv-x="600" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5zM482 205q-4 15 4 29q39 67 39 141q0 73 -39 141q-8 14 -4 29t18 23t28.5 4t22.5 -18q49 -87 49 -179t-49 -179 q-11 -19 -33 -19q-8 0 -18 5q-14 8 -18 23z" />
70
+ <glyph unicode="&#xf028;" d="M0 286v178q0 8 5.5 13.5t13.5 5.5h196l153 153q23 23 39.5 16t16.5 -39v-476q0 -32 -16.5 -39t-39.5 16l-153 153h-196q-8 0 -13.5 5.5t-5.5 13.5zM482 205q-4 15 4 29q39 67 39 141q0 73 -39 141q-8 14 -4 29t18 23t28.5 4t22.5 -18q49 -87 49 -179t-49 -179 q-11 -19 -33 -19q-8 0 -18 5q-14 8 -18 23zM603 117q-3 15 5 29q67 105 67 229t-67 229q-8 14 -5 29t17 23t29 5t23 -17q38 -61 58 -129t20 -140t-20 -140t-58 -129q-5 -9 -14 -13.5t-18 -4.5q-11 0 -20 6q-14 8 -17 23zM723.5 30q-2.5 15 5.5 28q48 72 72 152t24 165 t-24 165t-72 152q-8 13 -5.5 28t16.5 24q13 8 28 5t24 -16q54 -81 81 -171.5t27 -186.5t-27 -186.5t-81 -171.5q-12 -17 -32 -17q-11 0 -20 6q-14 9 -16.5 24z" />
71
+ <glyph unicode="&#xf029;" horiz-adv-x="750" d="M0 0v341h341v-341h-341zM0 409v341h341v-341h-341zM68 68h205v205h-205v-205zM68 477h205v205h-205v-205zM136 136v69h69v-69h-69zM136 545v68h69v-68h-69zM409 0v341h204v-68h69v68h68v-205h-205v68h-68v-204h-68zM409 409v341h341v-341h-341zM477 477h205v205h-205 v-205zM545 0v68h68v-68h-68zM545 545v68h68v-68h-68zM682 0v68h68v-68h-68z" />
72
+ <glyph unicode="&#xf02a;" d="M0 0v750h75v-750h-75zM111 0v750h18v-750h-18zM174 0v750h57v-750h-57zM266 0v750h38v-750h-38zM349 0v750h37v-750h-37zM441 0v750h18v-750h-18zM495 0v750h75v-750h-75zM596 0v750h38v-750h-38zM688 0v750h19v-750h-19zM771 0v750h18v-750h-18zM825 0v750h75v-750h-75z " />
73
+ <glyph unicode="&#xf02b;" horiz-adv-x="750" d="M0 474v218q0 24 17 41t41 17h218q24 0 53 -12t46 -29l358 -358q17 -17 17 -41t-17 -41l-252 -252q-17 -17 -41 -17t-41 17l-358 358q-17 17 -29 46t-12 53zM94 600q0 -23 16.5 -39.5t39.5 -16.5t39.5 16.5t16.5 39.5t-16.5 39.5t-39.5 16.5t-39.5 -16.5t-16.5 -39.5z" />
74
+ <glyph unicode="&#xf02c;" horiz-adv-x="898" d="M0 475v217q0 24 17 41t41 17h217q24 0 53.5 -11.5t45.5 -29.5l321 -358q16 -17 16.5 -41t-16.5 -41l-252 -251q-17 -17 -41 -17.5t-41 17.5l-320 358q-16 18 -28.5 46.5t-12.5 52.5zM94 600q0 -23 16.5 -39.5t39.5 -16.5t39.5 16.5t16.5 39.5t-16.5 39.5t-39.5 16.5 t-39.5 -16.5t-16.5 -39.5zM379 749h83q24 0 53.5 -12t45.5 -29l321 -358q16 -18 16.5 -41.5t-16.5 -40.5l-252 -251q-17 -17 -41 -17.5t-41 17.5l-6 7l246 245q17 17 16.5 41t-16.5 41l-320 358q-15 16 -40.5 27t-48.5 13z" />
75
+ <glyph unicode="&#xf02d;" horiz-adv-x="835" d="M5 152q1 8 2 15.5t2 16.5q0 5 -2 10t-1 10q1 8 7.5 15.5t12.5 17.5q11 18 22 44t16 45q2 8 -0.5 15t-0.5 13q2 8 8 13.5t10 11.5q5 9 10.5 20.5t10.5 24t8 24.5t4 20t-1 16t0 14q3 8 10 13t12 12q5 6 10.5 17t11 24t9.5 25.5t5 22.5q1 6 -2 12t-1 13t9 14.5t13 15.5 q8 12 14 28.5t14.5 30t22.5 21t38 0.5l-1 -2q15 5 26 5h381q38 0 58 -28q20 -26 9 -63l-138 -442q-9 -31 -38 -52.5t-62 -21.5h-436q-5 0 -10 -1t-9 -6q-6 -10 0 -27q8 -21 29.5 -37t42.5 -16h462q14 0 28 10.5t18 23.5l151 482q2 8 2.5 14.5t-0.5 13.5q20 -7 30 -21 q20 -26 9 -63l-138 -442q-9 -32 -38 -53t-62 -21h-462q-20 0 -39 7t-36 19t-30 28.5t-20 35.5q-12 33 -1 62zM244 469q-5 -19 13 -19h300q8 0 15 5.5t9 13.5l12 37q2 8 -1.5 13.5t-11.5 5.5h-300q-8 0 -15.5 -5.5t-9.5 -13.5zM278 581q-2 -8 1.5 -13t11.5 -5h300q8 0 15 5 t10 13l11 38q2 8 -1.5 13.5t-11.5 5.5h-300q-8 0 -15 -5.5t-10 -13.5z" />
76
+ <glyph unicode="&#xf02e;" horiz-adv-x="600" d="M0 54v641q0 17 9 30.5t25 20.5q5 2 10 3t11 1h490q5 0 10.5 -1t10.5 -3q16 -7 25 -20.5t9 -30.5v-641q0 -17 -9 -30.5t-25 -19.5q-15 -7 -31.5 -3.5t-27.5 15.5l-207 207l-207 -207q-11 -12 -27.5 -15.5t-31.5 3.5q-16 7 -25 20t-9 30z" />
77
+ <glyph unicode="&#xf02f;" d="M0 19v169q0 23 9 43.5t24.5 35.5t36 24t43.5 9h675q23 0 43.5 -9t35.5 -24t24 -35.5t9 -43.5v-169q0 -19 -19 -19h-862q-19 0 -19 19zM131 94q0 -8 5.5 -13t13.5 -5h600q8 0 13.5 5t5.5 13v19q0 8 -5.5 13.5t-13.5 5.5h-600q-8 0 -13.5 -5.5t-5.5 -13.5v-19zM150 356v357 q0 15 11 26t27 11h318v-187q0 -24 16.5 -40.5t39.5 -16.5h188v-150h-600zM562 563v187l188 -187h-188z" />
78
+ <glyph unicode="&#xf030;" d="M0 56v525q0 23 16.5 40t39.5 17h179l28 61q9 21 32.5 36t46.5 15h216q23 0 46.5 -15t32.5 -36l28 -61h179q23 0 39.5 -17t16.5 -40v-525q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM216 319q0 -49 18.5 -91.5t50 -74.5t74.5 -50.5t91 -18.5 t91 18.5t74.5 50.5t50 74.5t18.5 91.5q0 48 -18.5 91t-50 74.5t-74.5 50t-91 18.5t-91 -18.5t-74.5 -50t-50 -74.5t-18.5 -91zM291 319q0 33 12.5 62t34 50.5t50.5 34t62 12.5t62 -12.5t50.5 -34t34 -50.5t12.5 -62t-12.5 -62t-34 -51t-50.5 -34.5t-62 -12.5t-62 12.5 t-50.5 34.5t-34 51t-12.5 62z" />
79
+ <glyph unicode="&#xf031;" horiz-adv-x="803" d="M0 0l1 39q5 2 14.5 4t23.5 4q45 9 53 16q8 5 24 33l114 300l135 354h36h26l5 -10l99 -235q16 -38 31 -74t29 -71t25.5 -63.5t20.5 -50.5q6 -14 14 -34t18 -46q11 -32 31 -73q12 -24 17 -28q10 -9 33 -12q12 -1 24 -4.5t26 -8.5q3 -18 3 -27v-5q0 -3 -1 -8q-21 0 -44 1 t-48 3q-26 2 -48.5 3t-42.5 1h-39q-16 0 -26 -1l-97 -5l-28 -1q0 10 0.5 19.5t1.5 18.5l63 13q28 7 33 12q6 4 6 13q0 7 -3 15l-23 56l-44 111l-218 1q-6 -14 -18 -47t-32 -87q-11 -31 -11 -41q0 -13 8 -21q7 -5 19.5 -8.5t30.5 -6.5q7 -2 41 -6v-29q0 -8 -1 -13 q-17 0 -59 2.5t-109 7.5l-24 -4q-21 -4 -40.5 -5.5t-39.5 -1.5h-10zM268 320q66 -1 105.5 -2t51.5 0l14 1q-9 25 -20 54.5t-25 63.5t-25 59.5t-19 42.5z" />
80
+ <glyph unicode="&#xf032;" horiz-adv-x="693" d="M0 0l1 46q13 3 33 6q19 3 34 6.5t27 8.5q4 7 6.5 13t3.5 12q3 16 4 39.5t1 54.5l-1 243q-1 19 -1.5 68t-2.5 130q-2 43 -6 53q-2 4 -6 5q-10 7 -34 8q-11 0 -56 6l-2 41l128 3l187 6h22q4 1 8 1h6q3 0 10.5 -0.5t19.5 -0.5h37q45 0 94 -13q9 -2 21 -6.5t26 -12.5 q31 -15 51 -37q22 -23 32 -51q5 -14 7.5 -28.5t2.5 -30.5q0 -35 -16 -63q-15 -28 -46 -51q-8 -6 -26.5 -15t-47.5 -23q87 -20 131 -71q45 -51 45 -115q0 -35 -14 -79q-11 -32 -35 -57q-32 -35 -69 -53q-38 -17 -100 -29q-34 -6 -97 -5l-97 2q-31 1 -67.5 -1t-79.5 -5 q-12 -1 -45.5 -2t-88.5 -3zM262 693q0 -6 0.5 -15.5t1.5 -21.5q1 -25 2 -58.5t0 -77.5v-48v-38q12 -2 25.5 -3t28.5 -1q86 0 130 32t44 110q0 55 -42 91q-41 37 -126 37q-26 0 -64 -7zM266 223l2 -132q0 -8 5 -21q36 -16 69 -16q64 0 107 20q40 19 60 55q9 18 14 40t5 49 q0 55 -21 88q-29 46 -69 61q-39 16 -122 16q-18 0 -30 -1.5t-20 -3.5v-70v-85z" />
81
+ <glyph unicode="&#xf033;" horiz-adv-x="515" d="M0 0l9 41q6 2 15.5 4.5t22.5 5.5q20 5 34.5 9.5t24.5 9.5q14 19 20 50l14 67l28 131l6 31q11 58 20 87t9 31l15 76l8 31l11 66l4 24v19q-22 11 -72 14q-7 0 -11.5 0.5t-8.5 0.5l10 51l159 -7q15 -1 24 -1h13q17 0 43.5 1t64.5 3q20 2 33.5 3t18.5 1q-1 -5 -1.5 -9.5 t-1.5 -9.5q-2 -5 -4 -11l-3 -14q-24 -8 -54 -15q-32 -8 -51 -15q-6 -16 -12 -43q-3 -12 -4.5 -22t-2.5 -18q-11 -49 -19.5 -86t-13.5 -63l-31 -152l-19 -77l-21 -115l-7 -22v-5q0 -3 1 -8q17 -4 31.5 -6.5t28.5 -4.5q2 0 10.5 -1t22.5 -3q-1 -9 -1.5 -16t-1.5 -13 q-1 -3 -2 -8t-3 -11q-4 0 -7 -0.5t-5 -0.5q-9 -1 -14 -1h-7h-5q-4 0 -9 2q-4 0 -22 2t-51 6l-99 1q-30 0 -88 -6q-19 -2 -31 -3t-18 -1z" />
82
+ <glyph unicode="&#xf034;" d="M0 562q7 18 17 54t22 90q4 16 6.5 26.5t4.5 15.5h28q2 -3 3 -5l2 -4q14 -28 20 -35q8 -2 63 -2q17 0 32.5 0.5t29.5 0.5l10 1l55 1l104 -1h141l27 5q5 4 13 26l2 6q1 3 3 8l21 1h5q3 0 8 -1q1 -19 0.5 -47.5t0.5 -67.5v-49v-28q0 -7 -0.5 -13.5t-1.5 -11.5 q-10 -4 -18 -5.5t-15 -3.5q-13 25 -26 63q-14 40 -18 45q-6 7 -13 10q-5 2 -30 2h-67h-15q-8 0 -17 -2q-3 -21 -3 -35l1 -74v-163l1 -175v-72q0 -35 5 -57q4 -2 10.5 -4t16.5 -4q2 0 10.5 -2t24.5 -6q13 -5 24 -9q2 -10 2 -16v-9v-5q0 -4 -1 -9h-17q-23 0 -43 1t-37 3 t-46.5 3t-72.5 1q-8 0 -28 -2t-53 -5q-14 -1 -22 -1.5t-12 -0.5q0 5 -0.5 8t-0.5 5l-1 12v5q9 15 39 24q46 13 66 24q2 5 3 12.5t2 15.5q2 33 3 86t0 125l-2 209q-1 44 -1 69.5t-2 35.5q0 4 -3 7q-2 3 -6 3q-8 2 -31 2h-62q-44 0 -58 -10q-20 -14 -59 -75q-11 -17 -17 -17 q-11 6 -17.5 11.5t-9.5 9.5zM675.5 112.5q2.5 6.5 15.5 6.5h59v512h-59q-13 0 -15.5 6.5t6.5 16.5l90 90q7 6 16 6q7 0 15 -6l90 -90q9 -10 6.5 -16.5t-16.5 -6.5h-58v-512h58q14 0 16.5 -6.5t-6.5 -15.5l-90 -91q-8 -6 -16 -6t-15 6l-90 91q-9 9 -6.5 15.5z" />
83
+ <glyph unicode="&#xf035;" horiz-adv-x="750" d="M0 114q0 9 6 15l91 90q9 10 15.5 7t6.5 -16v-59h512v59q0 13 6.5 16t16.5 -7l90 -90q6 -6 6 -15t-6 -15l-90 -91q-10 -9 -16.5 -6.5t-6.5 16.5v58h-512v-58q0 -14 -6.5 -16.5t-15.5 6.5l-91 91q-6 6 -6 15zM0 602q7 14 16.5 42.5t21.5 71.5q3 13 5.5 21t4.5 13h27 q4 -6 5 -7q13 -23 18 -28q1 0 17.5 -0.5t38.5 -0.5h44h36h60l9 1h53h99h203l26 3q6 5 12 22q1 2 2 4.5t3 6.5h19h14v-92v-39v-22q0 -6 -0.5 -10.5t-1.5 -9.5q-16 -5 -31 -7q-12 18 -25 50q-13 29 -17 36q-6 5 -13 7q-3 1 -20.5 1.5t-41.5 0.5h-50h-48h-14q-8 0 -17 -1 q-1 -9 -1.5 -16t-0.5 -12l2 -217l-1 -58q0 -30 6 -45q6 -3 26 -6q2 0 10 -2t22 -5q7 -2 13 -3.5t11 -3.5q1 -8 1.5 -12.5t0.5 -6.5t-0.5 -5t-0.5 -7h-16q-46 0 -77 3q-32 3 -115 3q-7 0 -26 -1.5t-51 -3.5q-13 -1 -21 -1.5t-12 -0.5q0 8 -1 10v10v4q10 13 36 19q44 10 64 20 q2 4 3 9.5t2 12.5q0 9 0.5 34.5t0.5 58.5t-0.5 69.5t-1 68t-1 52.5t-0.5 23q0 4 -3 6q-1 1 -6 3q-7 1 -29 1h-60q-10 0 -30.5 -0.5t-41.5 -1t-38 -2t-20 -3.5q-20 -12 -57 -60q-10 -14 -16 -14q-11 5 -17 9.5t-9 7.5z" />
84
+ <glyph unicode="&#xf036;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h525q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h750q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-750q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h450q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-450q-16 0 -27 11t-11 26z" />
85
+ <glyph unicode="&#xf037;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM38 450v56q0 16 10.5 27t26.5 11h750q16 0 27 -11t11 -27v-56q0 -16 -11 -26.5t-27 -10.5h-750q-16 0 -26.5 10.5t-10.5 26.5zM150 244v56q0 16 11 27t27 11h525 q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM188 656v57q0 15 10.5 26t26.5 11h450q16 0 27 -11t11 -26v-57q0 -15 -11 -26t-27 -11h-450q-16 0 -26.5 11t-10.5 26z" />
86
+ <glyph unicode="&#xf038;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM75 450v56q0 16 11 27t27 11h750q15 0 26 -11t11 -27v-56q0 -16 -11 -26.5t-26 -10.5h-750q-16 0 -27 10.5t-11 26.5zM300 244v56q0 16 11 27t27 11h525 q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-525q-16 0 -27 11t-11 27zM375 656v57q0 15 11 26t27 11h450q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-450q-16 0 -27 11t-11 26z" />
87
+ <glyph unicode="&#xf039;" d="M0 38v56q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h825q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-825q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h825q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-825q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h825q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-825q-16 0 -27 11t-11 26z" />
88
+ <glyph unicode="&#xf03a;" d="M0 38v56q0 15 11 26t27 11h75q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-75q-16 0 -27 11t-11 27zM0 244v56q0 16 11 27t27 11h75q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-75q-16 0 -27 11t-11 27zM0 450v56q0 16 11 27t27 11h75q15 0 26 -11t11 -27v-56 q0 -16 -11 -26.5t-26 -10.5h-75q-16 0 -27 10.5t-11 26.5zM0 656v57q0 15 11 26t27 11h75q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-75q-16 0 -27 11t-11 26zM225 38v56q0 15 11 26t27 11h600q15 0 26 -11t11 -26v-56q0 -16 -11 -27t-26 -11h-600q-16 0 -27 11 t-11 27zM225 244v56q0 16 11 27t27 11h600q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-600q-16 0 -27 11t-11 27zM225 450v56q0 16 11 27t27 11h600q15 0 26 -11t11 -27v-56q0 -16 -11 -26.5t-26 -10.5h-600q-16 0 -27 10.5t-11 26.5zM225 656v57q0 15 11 26t27 11h600 q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-600q-16 0 -27 11t-11 26z" />
89
+ <glyph unicode="&#xf03b;" d="M0 369v37q0 19 19 19h104v75q0 15 8 18t19 -8l105 -105q8 -8 8 -18q0 -9 -8 -17l-105 -105q-11 -11 -19 -8t-8 19v74h-104q-19 0 -19 19zM300 19v712q0 19 19 19h37q19 0 19 -19v-712q0 -19 -19 -19h-37q-19 0 -19 19zM450 38v56q0 15 11 26t27 11h375q15 0 26 -11 t11 -26v-56q0 -16 -11 -27t-26 -11h-375q-16 0 -27 11t-11 27zM450 244v56q0 16 11 27t27 11h300q15 0 26 -11t11 -27v-56q0 -16 -11 -27t-26 -11h-300q-16 0 -27 11t-11 27zM450 450v56q0 16 11 27t27 11h337q16 0 27 -11t11 -27v-56q0 -16 -11 -26.5t-27 -10.5h-337 q-16 0 -27 10.5t-11 26.5zM450 656v57q0 15 11 26t27 11h262q16 0 27 -11t11 -26v-57q0 -15 -11 -26t-27 -11h-262q-16 0 -27 11t-11 26z" />
90
+ <glyph unicode="&#xf03c;" d="M0 38v56q0 15 11 26t26 11h375q16 0 27 -11t11 -26v-56q0 -16 -11 -27t-27 -11h-375q-15 0 -26 11t-11 27zM0 244v56q0 16 11 27t26 11h300q16 0 27 -11t11 -27v-56q0 -16 -11 -27t-27 -11h-300q-15 0 -26 11t-11 27zM0 450v56q0 16 11 27t26 11h338q15 0 26 -11t11 -27 v-56q0 -16 -11 -26.5t-26 -10.5h-338q-15 0 -26 10.5t-11 26.5zM0 656v57q0 15 11 26t26 11h263q15 0 26 -11t11 -26v-57q0 -15 -11 -26t-26 -11h-263q-15 0 -26 11t-11 26zM525 19v712q0 19 19 19h37q8 0 13.5 -5.5t5.5 -13.5v-712q0 -8 -5.5 -13.5t-13.5 -5.5h-37 q-19 0 -19 19zM637 363q0 8 7 17l106 105q11 11 18.5 8t7.5 -19v-74h105q8 0 13.5 -5.5t5.5 -13.5v-37q0 -8 -5.5 -13.5t-13.5 -5.5h-105v-75q0 -15 -7.5 -18.5t-18.5 7.5l-106 106q-7 9 -7 18z" />
91
+ <glyph unicode="&#xf03d;" d="M-2 113v525q0 23 9 43.5t24.5 35.5t36 24t43.5 9h375q23 0 43.5 -9t36 -24t24.5 -35.5t9 -43.5v-169l251 272q9 9 20 9q5 0 11 -2q18 -8 18 -28v-690q0 -20 -18 -28q-17 -7 -31 7l-251 272v-168q0 -23 -9 -43.5t-24.5 -36t-36 -24.5t-43.5 -9h-375q-23 0 -43.5 9 t-36 24.5t-24.5 36t-9 43.5z" />
92
+ <glyph unicode="&#xf03e;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 75h750v600h-750v-600zM150 150v51l135 176l92 -76l173 262l200 -207v-206h-600zM150 524q0 32 22 54t54 22q31 0 53 -22 t22 -54q0 -31 -22 -53t-53 -22q-32 0 -54 22t-22 53z" />
93
+ <glyph unicode="&#xf040;" horiz-adv-x="750" d="M0 0l67 204l423 423l137 -137l-423 -423zM140 199q0 -6 5 -11q4 -4 11 -4q6 0 10 4l337 337q10 10 0 21q-5 5 -11 5t-10 -5l-337 -336q-5 -5 -5 -11zM538 675l58 58q17 17 41 17t41 -17l28 -27l27 -28q17 -17 17 -41t-17 -41l-58 -58z" />
94
+ <glyph unicode="&#xf041;" horiz-adv-x="530" d="M0 485q0 55 21 103t57 84t84 57t103 21t103 -21t84 -57t57 -84t21 -103q0 -40 -12 -75t-30 -67l-179 -311q-18 -32 -44 -32t-44 32l-179 311q-18 32 -30 67.5t-12 74.5zM134 485q0 -27 10 -51t28 -42t42 -28t51 -10t51 10t41.5 28t28 42t10.5 51t-10.5 51t-28 41.5 t-41.5 28t-51 10.5t-51 -10.5t-42 -28t-28 -41.5t-10 -51z" />
95
+ <glyph unicode="&#xf042;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5v525q-54 0 -102 -20.5 t-83.5 -56.5t-56 -84t-20.5 -102z" />
96
+ <glyph unicode="&#xf043;" horiz-adv-x="531" d="M0 266q0 39 11 75t31 67q10 16 33 47t50.5 72.5t53.5 90.5t42 102q5 17 17.5 24.5t26.5 5.5q15 2 27.5 -5.5t17.5 -24.5q16 -53 42 -102t53.5 -90.5t50.5 -72.5t33 -47q20 -31 31 -67t11 -75q0 -55 -21 -103.5t-57 -84.5t-84.5 -57t-103.5 -21t-103 21t-84 57t-57 84.5 t-21 103.5zM116 207q0 -28 19.5 -47t47.5 -19q27 0 46.5 19t19.5 47q0 18 -10 36q-3 4 -9 11.5t-12.5 18t-13 23t-10.5 25.5q-4 9 -11 7q-9 2 -11 -7q-4 -13 -11 -25.5t-13.5 -23t-12.5 -18t-8 -11.5q-11 -17 -11 -36z" />
97
+ <glyph unicode="&#xf044;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h525q2 0 5 -0.5t5 -0.5l-93 -93h-442q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v217l94 94v-311q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-525 q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM308 158l53 161l318 318l108 -108l-318 -318zM423 307q3 -4 8 -4t8 4l250 249q9 9 0 17t-17 0l-249 -249q-9 -9 0 -17zM733 691l45 46q14 14 33 14t32 -14l22 -22l22 -22q13 -14 13.5 -32.5t-13.5 -32.5l-46 -45z" />
98
+ <glyph unicode="&#xf045;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h408q-3 -15 -3 -31v-25q-80 -10 -151 -38h-254q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v54q8 5 15.5 10.5t15.5 13.5l63 62v-140q0 -31 -12 -58t-32.5 -47.5 t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM188 190v18q0 81 27.5 152.5t84.5 125t143.5 84.5t204.5 32v113q0 28 14 34t34 -14l191 -191q13 -12 13 -32q0 -19 -13 -31l-191 -191q-20 -20 -34 -14t-14 34v127q-101 0 -178 -21t-130 -57t-83 -85 t-38 -105q-2 -13 -15 -13q-12 0 -14 13q-2 11 -2 21z" />
99
+ <glyph unicode="&#xf046;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h525q13 0 25 -3l-91 -91h-459q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v159l94 94v-253q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12 t-47.5 32.5t-32 47.5t-12 58zM188 472q0 16 11 27l48 48q11 11 27 11t27 -11l166 -166l319 320q11 11 27.5 11t27.5 -11l48 -48q11 -11 11 -27t-11 -27l-347 -347l-48 -48q-11 -11 -27 -11t-27 11l-49 48l-192 193q-11 11 -11 27z" />
100
+ <glyph unicode="&#xf047;" horiz-adv-x="750" d="M0 375q0 12 8 20l121 120q12 13 21 9t9 -21v-80h169v168h-81q-17 0 -21 9t9 21l120 121q8 8 20 8t20 -8l121 -121q12 -12 8.5 -21t-21.5 -9h-81v-168h169v80q0 17 9 21t21 -9l121 -120q8 -8 8 -20t-8 -20l-121 -120q-12 -13 -21 -9.5t-9 21.5v83h-169v-171h81 q18 0 21.5 -9t-8.5 -21l-121 -121q-8 -8 -20 -8t-20 8l-120 121q-13 12 -9 21t21 9h81v171h-169v-83q0 -17 -9 -21t-21 9l-121 120q-8 8 -8 20z" />
101
+ <glyph unicode="&#xf048;" horiz-adv-x="525" d="M0 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675zM150 375q0 13 8 21l319 345q7 9 20 9q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22z" />
102
+ <glyph unicode="&#xf049;" d="M0 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675zM150 375q0 13 8 21l319 345q7 9 20 9q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22zM525 375q0 13 8 21l319 345q7 9 20 9 q3 0 11 -2q17 -9 17 -29v-689q0 -20 -17 -28q-19 -7 -31 7l-319 344q-8 9 -8 22z" />
103
+ <glyph unicode="&#xf04a;" horiz-adv-x="750" d="M0 374.5q0 12.5 8 21.5l319 345q7 9 20 9q5 0 11 -3q17 -7 17 -28v-689q0 -20 -17 -28q-18 -8 -31 7l-319 344q-8 9 -8 21.5zM375 374.5q0 12.5 8 21.5l319 345q7 9 20 9q5 0 11 -3q17 -7 17 -28v-689q0 -20 -17 -28q-18 -8 -31 7l-319 344q-8 9 -8 21.5z" />
104
+ <glyph unicode="&#xf04b;" horiz-adv-x="659" d="M0 34v682q0 19 17 29q18 11 34 0l591 -340q17 -12 17 -30t-17 -30l-591 -340q-8 -5 -17 -5t-17 5q-17 10 -17 29z" />
105
+ <glyph unicode="&#xf04c;" horiz-adv-x="750" d="M0 34v682q0 14 10 24t24 10h239q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-239q-14 0 -24 10t-10 24zM443 34v682q0 14 10 24t24 10h239q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-239q-14 0 -24 10t-10 24z" />
106
+ <glyph unicode="&#xf04d;" horiz-adv-x="750" d="M0 34v682q0 14 10 24t24 10h682q14 0 24 -10t10 -24v-682q0 -14 -10 -24t-24 -10h-682q-14 0 -24 10t-10 24z" />
107
+ <glyph unicode="&#xf04e;" horiz-adv-x="750" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28z" />
108
+ <glyph unicode="&#xf050;" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM750 37q0 -15 11 -26t26 -11h75 q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675z" />
109
+ <glyph unicode="&#xf051;" horiz-adv-x="525" d="M0 30v690q0 19 17 28q19 7 31 -7l319 -344q8 -9 8 -22t-8 -22l-319 -344q-8 -9 -20 -9q-3 0 -11 2q-17 8 -17 28zM375 37q0 -15 11 -26t26 -11h75q16 0 27 11t11 26v675q0 16 -11 27t-27 11h-75q-15 0 -26 -11t-11 -27v-675z" />
110
+ <glyph unicode="&#xf052;" horiz-adv-x="750" d="M0 34v97q0 14 10 24t24 10h682q14 0 24 -10t10 -24v-97q0 -14 -10 -24t-24 -10h-682q-14 0 -24 10t-10 24zM3 290q-9 21 7 37l341 341q10 10 24 10t24 -10l341 -341q16 -16 7 -37q-8 -21 -31 -21h-682q-23 0 -31 21z" />
111
+ <glyph unicode="&#xf053;" horiz-adv-x="471" d="M0 373.5q0 18.5 14 32.5l328 329q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-248 -249l248 -244q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-328 329q-14 14 -14 32.5z" />
112
+ <glyph unicode="&#xf054;" horiz-adv-x="471" d="M0 95q0 19 14 33l248 248l-248 245q-14 14 -14 32.5t14 32.5l49 50q14 14 33 14t33 -14l328 -329q14 -14 14 -33t-14 -33l-328 -328q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14 33z" />
113
+ <glyph unicode="&#xf055;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM159 338q0 -7 4.5 -11.5t10.5 -4.5h147v-161q0 -7 4.5 -11.5t10.5 -4.5h78 q6 0 10.5 4.5t4.5 11.5v161h147q6 0 10.5 4.5t4.5 11.5v74q0 6 -4.5 10.5t-10.5 4.5h-147v162q0 7 -4.5 11.5t-10.5 4.5h-78q-6 0 -10.5 -4.5t-4.5 -11.5v-162h-147q-6 0 -10.5 -4.5t-4.5 -10.5v-74z" />
114
+ <glyph unicode="&#xf056;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM159 338q0 -7 4.5 -11.5t10.5 -4.5h402q6 0 10.5 4.5t4.5 11.5v74q0 6 -4.5 10.5 t-10.5 4.5h-402q-6 0 -10.5 -4.5t-4.5 -10.5v-74z" />
115
+ <glyph unicode="&#xf057;" horiz-adv-x="750" d="M0 376q0 72 27.5 141t82.5 124t124 82t141 27t141 -27t124 -82t82.5 -124t27.5 -141t-27.5 -141t-82.5 -124t-124 -82.5t-141 -27.5t-141 27.5t-124 82.5t-82.5 124t-27.5 141zM185 240l55 -54q5 -5 11 -5t11 5l114 114l103 -104q5 -5 11 -5t11 5l53 53q11 11 0 22 l-104 103l115 115q11 11 0 22l-55 55q-11 11 -22 0l-114 -115l-104 104q-11 11 -22 0l-52 -53q-5 -5 -5 -11t5 -11l103 -103l-114 -115q-10 -10 0 -22z" />
116
+ <glyph unicode="&#xf058;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM112 351.5q0 -9.5 7 -16.5l150 -150q7 -6 18 -11t21 -5h25q10 0 21 5t18 11l259 259 q7 7 7 16.5t-7 15.5l-50 50q-6 7 -15.5 7t-16.5 -7l-212 -213q-7 -7 -16.5 -7t-15.5 7l-104 104q-7 7 -16.5 7t-15.5 -7l-50 -49q-7 -7 -7 -16.5z" />
117
+ <glyph unicode="&#xf059;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM250 531l44 -55q6 -4 10 -5q6 0 10 4q8 6 18 11q8 4 18.5 7.5t21.5 3.5 q20 0 33 -10.5t13 -26.5q0 -17 -11.5 -30.5t-28.5 -28.5q-11 -9 -22 -19.5t-20 -24t-15 -30t-6 -37.5v-30q0 -5 4.5 -9.5t9.5 -4.5h77q6 0 10 4.5t4 9.5v25q0 18 12 31t29 28q12 10 24 21.5t21.5 26.5t16 33t6.5 42q0 32 -13 57t-34.5 41.5t-48.5 25t-54 8.5 q-30 0 -53.5 -7.5t-40 -16.5t-25 -17t-9.5 -9q-9 -9 -1 -18zM315 132q0 -5 4.5 -9.5t9.5 -4.5h77q6 0 10 4.5t4 9.5v74q0 14 -14 14h-77q-5 0 -9.5 -4t-4.5 -10v-74z" />
118
+ <glyph unicode="&#xf05a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM269 418q0 -14 14 -14h40v-192h-37q-5 0 -9.5 -4.5t-4.5 -9.5v-66q0 -5 4.5 -9.5 t9.5 -4.5h189q5 0 9.5 4.5t4.5 9.5v66q0 5 -4.5 9.5t-9.5 4.5h-36v271q0 6 -4.5 10t-9.5 4h-142q-14 0 -14 -14v-65zM322 555q0 -6 4.5 -10.5t10.5 -4.5h88q5 0 9.5 4.5t4.5 10.5v77q0 6 -4.5 10t-9.5 4h-88q-6 0 -10.5 -4t-4.5 -10v-77z" />
119
+ <glyph unicode="&#xf05b;" horiz-adv-x="750" d="M0 338v75q0 8 5.5 13t13.5 5h80q9 41 29 77.5t48.5 65t65 48.5t77.5 29v80q0 19 19 19h75q8 0 13 -5.5t5 -13.5v-80q41 -9 77.5 -29t65 -48.5t48.5 -65t29 -77.5h80q8 0 13.5 -5t5.5 -13v-75q0 -19 -19 -19h-80q-9 -41 -29 -77.5t-48.5 -65t-65 -48.5t-77.5 -29v-80 q0 -8 -5 -13.5t-13 -5.5h-75q-19 0 -19 19v80q-41 9 -77.5 29t-65 48.5t-48.5 65t-29 77.5h-80q-19 0 -19 19zM178 319q14 -52 51.5 -89.5t89.5 -51.5v85q0 8 5.5 13t13.5 5h75q8 0 13 -5t5 -13v-85q52 14 89.5 51.5t51.5 89.5h-84q-19 0 -19 19v75q0 8 5.5 13t13.5 5h84 q-14 52 -51.5 89.5t-89.5 51.5v-84q0 -8 -5 -13.5t-13 -5.5h-75q-19 0 -19 19v84q-52 -14 -89.5 -51.5t-51.5 -89.5h85q8 0 13 -5t5 -13v-75q0 -8 -5 -13.5t-13 -5.5h-85z" />
120
+ <glyph unicode="&#xf05c;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM212 466q0 8 5 14l53 53q6 5 14 5t13 -5l78 -78l78 78q6 5 14 5t13 -5l53 -53q5 -6 5 -14t-5 -13l-78 -78l78 -78q12 -14 0 -27l-53 -53q-14 -12 -27 0l-78 78l-78 -78 q-5 -5 -13 -5t-14 5l-53 53q-12 13 0 27l79 78l-79 78q-5 5 -5 13z" />
121
+ <glyph unicode="&#xf05d;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -54 20.5 -102t56 -83.5t83.5 -56t102 -20.5t102 20.5t84 56t56.5 83.5 t20.5 102t-20.5 102t-56.5 84t-84 56.5t-102 20.5t-102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM156 352q0 8 5 13l53 53q5 5 13 5t14 -5l83 -84q13 -12 27 0l158 159q6 5 14 5t13 -5l53 -53q5 -5 5 -13t-5 -14l-192 -192q-6 -5 -15 -9t-17 -4h-55q-8 0 -17 4t-15 9 l-117 117q-5 6 -5 14z" />
122
+ <glyph unicode="&#xf05e;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM113 375q0 -39 10.5 -74.5t30.5 -66.5l362 362q-31 20 -66.5 31t-74.5 11 q-54 0 -102 -20.5t-83.5 -56.5t-56 -84t-20.5 -102zM234 154q31 -20 66.5 -30.5t74.5 -10.5q54 0 102 20.5t84 56t56.5 83.5t20.5 102q0 39 -11 74.5t-31 66.5z" />
123
+ <glyph unicode="&#xf060;" horiz-adv-x="750" d="M0 375q0 19 14 33l328 329q14 14 33 14t33 -14l49 -49q14 -14 14 -33t-14 -33l-165 -165h411q20 0 33.5 -13.5t13.5 -33.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-412l165 -165q14 -14 14 -33t-14 -33l-49 -49q-14 -14 -33 -14t-33 14l-328 328q-14 14 -14 33z" />
124
+ <glyph unicode="&#xf061;" horiz-adv-x="750" d="M0 341v70q0 19 13.5 32.5t32.5 13.5h412l-165 165q-14 14 -14 33t14 33l49 49q14 14 33 14t33 -14l328 -329q14 -14 14 -32.5t-14 -32.5l-328 -329q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14 33t14 33l165 165h-412q-19 0 -32.5 13.5t-13.5 33.5z" />
125
+ <glyph unicode="&#xf062;" horiz-adv-x="750" d="M-0.5 375q-0.5 19 13.5 33l329 328q14 14 33 14t33 -14l328 -328q14 -14 14 -33t-14 -33l-49 -49q-14 -14 -32.5 -14t-32.5 14l-166 165v-412q0 -19 -13.5 -32.5t-32.5 -13.5h-70q-20 0 -33 13.5t-13 32.5v412l-165 -165q-14 -14 -33 -14t-33 14l-49 49q-14 14 -14.5 33z " />
126
+ <glyph unicode="&#xf063;" horiz-adv-x="750" d="M0 374q0 19 14 33l49 49q14 14 33 14t33 -14l165 -165v412q0 19 13.5 32.5t32.5 13.5h70q20 0 33 -13.5t13 -32.5v-412l166 165q14 14 32.5 14t32.5 -14l50 -49q14 -14 14 -33t-14 -33l-329 -328q-14 -14 -33 -14t-33 14l-328 328q-14 14 -14 33z" />
127
+ <glyph unicode="&#xf064;" d="M0 66q0 102 35 192t106.5 157.5t181 107t259.5 40.5v143q0 35 17.5 42.5t43.5 -17.5l240 -241q17 -16 17 -40q0 -23 -17 -40l-240 -241q-25 -25 -43 -17.5t-18 42.5v161q-128 -1 -225 -27.5t-164 -72t-105 -107t-48 -132.5q-2 -16 -18 -16h-1q-16 0 -18 16q-3 25 -3 50z " />
128
+ <glyph unicode="&#xf065;" horiz-adv-x="750" d="M0 42v255q0 26 13 31.5t32 -12.5l81 -81l134 134q6 6 15 6t16 -6l78 -78q6 -7 6 -16t-6 -15l-134 -134l81 -81q19 -19 13 -32t-32 -13h-254q-18 0 -30 12q-13 13 -13 30zM375 475q0 9 6 15l134 134l-81 81q-19 19 -13 32t32 13h254q18 0 30 -12q13 -13 13 -30v-255 q0 -26 -13 -31.5t-32 12.5l-81 81l-134 -133q-6 -7 -15 -7t-16 7l-78 77q-6 7 -6 16z" />
129
+ <glyph unicode="&#xf066;" horiz-adv-x="750" d="M0 99q0 9 6 16l134 133l-81 81q-19 19 -13 32t32 13h254q19 0 30 -12q13 -13 13 -30v-255q0 -26 -13 -31.5t-32 13.5l-81 81l-134 -134q-6 -7 -15 -7t-16 7l-78 78q-6 6 -6 15zM375 417v255q0 26 13 31.5t32 -13.5l81 -81l134 134q6 7 15 7t16 -7l78 -78q6 -6 6 -15 t-6 -16l-134 -133l81 -81q19 -19 13 -32t-32 -13h-254q-20 0 -30 12q-13 13 -13 30z" />
130
+ <glyph unicode="&#xf067;" horiz-adv-x="750" d="M0 340v70q0 19 13.5 32.5t32.5 13.5h248v247q0 20 13 33.5t33 13.5h70q19 0 32.5 -13.5t13.5 -32.5v-248h248q19 0 32.5 -13.5t13.5 -32.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-248v-247q0 -20 -13.5 -33.5t-32.5 -13.5h-70q-19 0 -32.5 13.5t-13.5 32.5v248h-247 q-20 0 -33.5 13t-13.5 33z" />
131
+ <glyph unicode="&#xf068;" horiz-adv-x="750" d="M0 340v70q0 19 13.5 32.5t32.5 13.5h658q19 0 32.5 -13.5t13.5 -32.5v-70q0 -19 -13.5 -32.5t-32.5 -13.5h-657q-20 0 -33.5 13t-13.5 33z" />
132
+ <glyph unicode="&#xf069;" horiz-adv-x="697" d="M1 497q-5 18 5 35l35 61q10 17 28.5 21.5t35.5 -4.5l162 -94v187q0 20 13.5 33.5t33.5 13.5h69q20 0 33.5 -13.5t13.5 -32.5v-188l162 94q17 9 35.5 4.5t28.5 -21.5l34 -61q10 -17 5.5 -35t-21.5 -28l-163 -94l163 -94q17 -10 21.5 -28t-4.5 -35l-35 -61 q-10 -17 -28.5 -21.5t-35.5 4.5l-162 94v-187q0 -20 -13.5 -33.5t-33.5 -13.5h-69q-20 0 -33.5 13.5t-13.5 32.5v188l-162 -94q-17 -10 -35.5 -5t-28.5 22l-35 61q-9 17 -4.5 35t21.5 28l163 94l-163 94q-17 10 -22 28z" />
133
+ <glyph unicode="&#xf06a;" horiz-adv-x="750" d="M0 375q0 78 29.5 146t80.5 119t119 80.5t146 29.5t146 -29.5t119 -80.5t80.5 -119t29.5 -146t-29.5 -146t-80.5 -119t-119 -80.5t-146 -29.5t-146 29.5t-119 80.5t-80.5 119t-29.5 146zM316 613l6 -347q2 -14 15 -14h76q14 0 14 14l7 347q1 5 -4 10q-3 4 -10 4h-90 q-7 0 -10 -4q-4 -4 -4 -10zM319 125q0 -14 14 -14h85q5 0 9.5 4t4.5 10v82q0 6 -4.5 10t-9.5 4h-85q-14 0 -14 -14v-82z" />
134
+ <glyph unicode="&#xf06b;" d="M0 281v188q0 8 5.5 13.5t13.5 5.5h258q-27 0 -51 10t-42 28t-28.5 42t-10.5 51t10.5 51t28.5 41.5t42 28t51 10.5q29 0 55 -11.5t43 -33.5l75 -97l75 97q17 22 43 33.5t55 11.5q27 0 51 -10.5t42 -28t28.5 -41.5t10.5 -51t-10.5 -51t-28.5 -42t-42 -28t-51 -10h258 q8 0 13.5 -5.5t5.5 -13.5v-188q0 -8 -5.5 -13t-13.5 -5h-56v-207q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5v207h-56q-8 0 -13.5 5t-5.5 13zM220 619q0 -23 17 -39.5t40 -16.5h113l-73 94q-5 5 -15 11.5t-25 6.5q-23 0 -40 -16.5t-17 -39.5zM356 105 q0 -15 11 -26t27 -11h112q16 0 27 11t11 26v383h-188v-383zM509 563h114q23 0 40 16.5t17 39.5t-17 39.5t-40 16.5q-15 0 -25 -6.5t-15 -11.5z" />
135
+ <glyph unicode="&#xf06c;" d="M3 78q9 25 25.5 41.5t33.5 30.5q14 11 24 20.5t13 20.5q1 2 0 5t-5 11q-2 6 -5 13.5t-5 16.5q-12 75 6.5 139t56.5 114.5t91 86.5t111 56q38 14 83.5 16.5t95.5 3.5q28 0 59.5 1t60.5 5.5t53.5 13.5t39.5 25q10 10 18.5 19.5t18 16.5t20.5 11.5t27 4.5q23 0 33 -21 q62 -121 32 -283q-42 -228 -272 -347q-110 -57 -220 -57q-36 0 -72.5 6t-71.5 19q-11 4 -21.5 9.5t-21.5 10.5q-13 8 -26.5 14.5t-22.5 7.5q-5 -1 -11.5 -8t-13 -16.5t-12.5 -19t-10 -15.5q-6 -11 -12 -20t-11 -16q-11 -14 -29 -14h-2q-28 2 -39 17.5t-14 23.5q-13 18 -5 37 zM188.5 253.5q1.5 -15.5 13.5 -26.5q10 -9 24 -9q18 0 28 13q42 48 85.5 82t90.5 54.5t99.5 29t114.5 6.5q15 -2 26.5 9.5t12.5 26.5q0 16 -10.5 27.5t-26.5 11.5q-69 3 -130 -7t-116 -34t-104.5 -63t-97.5 -94q-11 -11 -9.5 -26.5z" />
136
+ <glyph unicode="&#xf06d;" horiz-adv-x="675" d="M0 214q0 58 30.5 119.5t82.5 111.5q-11 -75 0.5 -120.5t30.5 -71.5q22 -30 53 -44q-24 105 -14 204q4 42 15.5 87.5t34 90t58.5 85.5t89 74q-23 -49 -22 -90t11 -71q11 -35 34 -64q16 -19 30.5 -37.5t25 -42.5t16.5 -56.5t6 -78.5q-9 20 -27 32t-41 12q-32 0 -53.5 -22 t-21.5 -53q0 -16 5.5 -30t17 -25t30 -17t44.5 -6q44 4 77 31q13 12 25.5 29.5t20.5 43t10 60t-5 80.5h-1q52 -50 82.5 -111.5t30.5 -119.5q0 -54 -26.5 -94t-72.5 -66.5t-107 -40t-131 -13.5t-131.5 13.5t-107.5 40t-72.5 66.5t-26.5 94z" />
137
+ <glyph unicode="&#xf06e;" d="M0 352.5q0 21.5 12 40.5q38 61 87 109.5t105.5 82t118.5 51t127 17.5q66 0 128 -17.5t118 -50.5t105 -81.5t88 -110.5q11 -19 11 -40.5t-11 -39.5q-39 -62 -88 -110.5t-105 -81.5t-118 -50.5t-128 -17.5q-65 0 -127 17.5t-118.5 51t-105.5 82t-87 109.5q-12 18 -12 39.5z M75 353q32 -51 73 -93t89 -71t101.5 -45t111.5 -16t111.5 16t101.5 45t89 71t73 93q-39 63 -91.5 110.5t-115.5 76.5q25 -29 39 -65t14 -78q0 -47 -17.5 -87.5t-48.5 -71.5t-72 -48.5t-87 -17.5q-47 0 -87.5 17.5t-71.5 48.5t-48.5 71.5t-17.5 87.5q0 38 12.5 72.5 t33.5 62.5q-57 -29 -106 -74.5t-86 -104.5zM300 397q0 -11 8 -19.5t20 -8.5t20 8.5t8 19.5q0 38 26 64t64 26q12 0 20 8.5t8 19.5q0 12 -8 20t-20 8q-30 0 -57 -11.5t-46.5 -31t-31 -46.5t-11.5 -57z" />
138
+ <glyph unicode="&#xf070;" d="M0 374.5q0 21.5 12 40.5q38 61 87 109.5t105.5 82t118.5 51t127 17.5q26 0 51.5 -3.5t50.5 -8.5l43 77q4 7 12 9q6 3 14 -1l65 -37q7 -4 9.5 -11.5t-1.5 -14.5l-378 -675q-3 -7 -11 -9q-2 -1 -5 -1t-9 2l-66 37q-7 4 -9 11.5t2 14.5l32 56q-71 33 -131.5 87t-106.5 127 q-12 18 -12 39.5zM75 375q40 -64 93.5 -112t117.5 -77l28 51q-42 31 -67.5 78t-25.5 104q0 38 12.5 72.5t33.5 63.5q-57 -30 -106 -75t-86 -105zM300 419q0 -11 8 -19.5t20 -8.5t20 8.5t8 19.5q0 38 26 64t64 26q12 0 20 8.5t8 19.5q0 12 -8 20t-20 8q-30 0 -57 -11.5 t-46.5 -31t-31 -46.5t-11.5 -57zM453 75l43 78q102 12 186.5 70.5t142.5 151.5q-53 83 -128 138l37 67q45 -32 84 -73t71 -92q11 -19 11 -40.5t-11 -39.5q-78 -124 -191.5 -191.5t-244.5 -68.5zM528 210l139 249q2 -10 3 -19.5t1 -20.5q0 -36 -10.5 -68.5t-29.5 -59.5 t-45.5 -48t-57.5 -33z" />
139
+ <glyph unicode="&#xf071;" horiz-adv-x="850" d="M5 23.5q-14 23.5 6 56.5l368 637q18 33 46 33q26 0 46 -33l368 -637q19 -33 5.5 -56.5t-51.5 -23.5h-736q-38 0 -52 23.5zM160 113h530l-265 459zM370 434q0 6 4 10t9 4h84q5 0 9 -4t4 -10l-7 -182q0 -12 -13 -12h-70q-13 0 -13 12zM372 189q0 13 13 13h78q13 0 13 -13 l1 -49q0 -13 -13 -13h-78q-13 0 -13 13z" />
140
+ <glyph unicode="&#xf072;" d="M1 212l34 144q2 8 2 18t-2 18l-34 144q-2 8 2 13.5t12 5.5h45q8 0 17 -4.5t14 -10.5l85 -110q44 9 92 14t94 5h12l-61 283q-2 8 2.5 13t12.5 5h64q8 0 16 -4.5t12 -11.5l164 -285h157q29 0 58 -6.5t51.5 -17t36.5 -24t13 -27.5q1 -14 -13 -27.5t-36.5 -24t-51.5 -17 t-58 -6.5h-158l-163 -283q-4 -7 -12 -11.5t-16 -4.5h-64q-8 0 -12.5 5t-2.5 13l61 281h-12q-46 0 -94 5.5t-92 13.5l-85 -110q-12 -14 -31 -14h-45q-8 0 -12 5t-2 13z" />
141
+ <glyph unicode="&#xf073;" horiz-adv-x="750" d="M0 56v549q0 23 16.5 39.5t39.5 16.5h36v-69q0 -28 19.5 -47.5t47.5 -19.5h15q28 0 48 19.5t20 47.5v69h58v-69q0 -28 19.5 -47.5t47.5 -19.5h16q28 0 47.5 19.5t19.5 47.5v69h58v-69q0 -28 20 -47.5t48 -19.5h15q28 0 47.5 19.5t19.5 47.5v69h36q23 0 39.5 -16.5 t16.5 -39.5v-549q0 -23 -16.5 -39.5t-39.5 -16.5h-638q-23 0 -39.5 16.5t-16.5 39.5zM75 75h600v398h-600v-398zM129 592v128q0 12 9 21t21 9h15q13 0 21.5 -9t8.5 -21v-128q0 -12 -8.5 -20.5t-21.5 -8.5h-15q-12 0 -21 8.5t-9 20.5zM177 158q0 36 20 58.5t43.5 39t43.5 32 t20 36.5q0 20 -11.5 29t-28.5 9q-11 0 -20.5 -4.5t-16.5 -11.5q-4 -4 -7 -8t-6 -9l-34 23q7 14 20 27q11 11 27.5 19t40.5 8q35 0 61 -20.5t26 -58.5q0 -21 -9 -36.5t-23 -28t-30 -22.5t-30 -20t-23.5 -21t-9.5 -25h92v34h42v-73h-185q-1 6 -1.5 12t-0.5 11zM338 592v128 q0 12 8.5 21t20.5 9h16q12 0 21 -9t9 -21v-128q0 -12 -9 -20.5t-21 -8.5h-16q-12 0 -20.5 8.5t-8.5 20.5zM397 330v71h187v-34l-117 -232h-51l107 212q3 8 6 11l3 4v1q-3 0 -5 -1h-13h-75v-32h-42zM546 592v128q0 12 8.5 21t21.5 9h15q12 0 21 -9t9 -21v-128q0 -12 -9 -20.5 t-21 -8.5h-15q-13 0 -21.5 8.5t-8.5 20.5z" />
142
+ <glyph unicode="&#xf074;" d="M0 122v75q0 19 19 19h107q25 0 48.5 15.5t45.5 41t44 58.5t44 68q27 43 56 85.5t62 75.5t72 53.5t88 20.5h99v90q0 20 12 24t29 -10l163 -135q11 -9 11 -23q0 -13 -11 -22l-163 -136q-17 -14 -29 -10t-12 24v86h-99q-26 0 -49 -15.5t-45.5 -41t-44.5 -58.5t-44 -68 q-27 -44 -55.5 -86t-61.5 -75t-72.5 -53.5t-87.5 -20.5h-107q-8 0 -13.5 5t-5.5 13zM0 541v75q0 8 5.5 13.5t13.5 5.5h107q52 0 93.5 -23.5t76.5 -61.5q-18 -25 -34 -49.5t-31 -47.5q-25 31 -50.5 50t-54.5 19h-107q-8 0 -13.5 5.5t-5.5 13.5zM417 190q17 24 33 48.5 t31 48.5q25 -31 50.5 -50t54.5 -19h99v94q0 20 12 24t29 -10l163 -136q11 -9 11 -22q0 -14 -11 -23l-163 -135q-17 -14 -29 -10t-12 24v82h-99q-53 0 -93.5 23t-75.5 61z" />
143
+ <glyph unicode="&#xf075;" d="M0 421q0 68 35.5 128t96.5 104.5t143 70.5t175 26t175 -26t143 -70.5t96.5 -104.5t35.5 -128t-35.5 -128t-96.5 -104.5t-143 -70.5t-175 -26q-44 0 -84 6q-42 -32 -90.5 -55t-103.5 -35l-24 -4q-12 -2 -25 -4q-16 -2 -20 14v1q-2 7 3 11l9 10q10 11 19.5 21.5t17 24.5 t14 32.5t11.5 45.5q-81 45 -129 112.5t-48 148.5z" />
144
+ <glyph unicode="&#xf076;" horiz-adv-x="750" d="M0 311v139q0 8 5.5 13.5t13.5 5.5h187q8 0 13.5 -5.5t5.5 -13.5v-139q0 -13 11 -28t30.5 -28t47 -21.5t61.5 -8.5t61.5 8.5t47 21.5t30.5 28t11 28v139q0 8 5.5 13.5t13.5 5.5h187q8 0 13.5 -5.5t5.5 -13.5v-139q0 -65 -29.5 -121.5t-80.5 -98.5t-119 -66.5t-146 -24.5 t-146 24.5t-119 66.5t-80.5 98.5t-29.5 121.5zM0 544v187q0 19 19 19h187q19 0 19 -19v-187q0 -19 -19 -19h-187q-19 0 -19 19zM525 544v187q0 19 19 19h187q19 0 19 -19v-187q0 -19 -19 -19h-187q-19 0 -19 19z" />
145
+ <glyph unicode="&#xf077;" horiz-adv-x="750" d="M-0.5 173.5q-0.5 18.5 13.5 32.5l329 329q14 14 33 14t33 -14l328 -329q14 -14 14 -32.5t-14 -32.5l-49 -50q-14 -14 -33 -14t-33 14l-248 249l-244 -249q-14 -14 -33 -14t-33 14l-49 50q-14 14 -14.5 32.5z" />
146
+ <glyph unicode="&#xf078;" horiz-adv-x="750" d="M0 448.5q0 18.5 14 32.5l49 50q14 14 33 14t33 -14l248 -249l244 249q14 14 33 14t33 -14l49 -50q14 -14 14.5 -32.5t-13.5 -32.5l-329 -329q-14 -14 -33 -14t-33 14l-328 329q-14 14 -14 32.5z" />
147
+ <glyph unicode="&#xf079;" d="M1 502.5q-6 14.5 13 34.5l181 199q12 14 30 14t30 -14l181 -199q19 -20 13 -34.5t-32 -14.5h-117v-319h81q4 -5 6.5 -9.5t7.5 -9.5l119 -131h-327q-15 0 -26 11t-11 26v432h-117q-26 0 -32 14.5zM386 731h326q16 0 27 -11t11 -26v-431h117q26 0 32 -15t-13 -35l-181 -199 q-12 -14 -30 -14t-30 14l-181 199q-19 20 -13 35t32 15h117v318h-81q-4 5 -6.5 9.5t-7.5 9.5z" />
148
+ <glyph unicode="&#xf07a;" d="M0 694v37q0 19 19 19h113q8 0 18.5 -2t17.5 -4q3 -2 7 -7t7.5 -11.5t6 -13t3.5 -10.5l13 -61h658q17 0 28 -13t8 -29l-53 -282q-3 -12 -13 -20.5t-24 -8.5h-529l17 -82q2 -8 8.5 -13t14.5 -5h418q8 0 13.5 -5.5t5.5 -13.5v-38q0 -8 -5.5 -13t-13.5 -5h-80h-318h-51 q-8 0 -18 1.5t-17 4.5q-3 1 -7 6.5t-7.5 12t-6 13t-3.5 10.5l-105 496q-2 8 -8.5 13t-14.5 5h-83q-19 0 -19 19zM284 56q0 23 16.5 40t39.5 17q24 0 40.5 -17t16.5 -40t-16.5 -39.5t-40.5 -16.5q-23 0 -39.5 16.5t-16.5 39.5zM602 56q0 23 16.5 40t39.5 17t39.5 -17 t16.5 -40t-16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5z" />
149
+ <glyph unicode="&#xf07b;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h338q23 0 39.5 -16.5t16.5 -39.5t16.5 -39.5t39.5 -16.5h338q23 0 39.5 -17t16.5 -40v-525q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5z" />
150
+ <glyph unicode="&#xf07c;" d="M0 185v509q0 23 16.5 39.5t39.5 16.5h338q23 0 39.5 -16.5t16.5 -39.5t16.5 -39.5t39.5 -16.5h216q23 0 39.5 -17t16.5 -40v-108h-600q-18 0 -35 -6t-32 -16.5t-26 -25t-17 -31.5zM21 0l120 371q3 11 15 19t23 8h721l-127 -370q-3 -11 -15 -19.5t-23 -8.5h-714z" />
151
+ <glyph unicode="&#xf07d;" horiz-adv-x="375" d="M0.5 187q4.5 11 27.5 11h95v354h-95q-23 0 -27.5 10.5t11.5 26.5l150 151q10 10 26 10q15 0 25 -10l150 -151q16 -15 11.5 -26t-27.5 -11h-95v-354h95q23 0 27.5 -10.5t-11.5 -26.5l-150 -151q-10 -10 -26 -10q-15 0 -25 10l-150 151q-16 15 -11.5 26z" />
152
+ <glyph unicode="&#xf07e;" horiz-adv-x="750" d="M0 357q0 15 10 25l151 151q15 15 26 10.5t11 -26.5v-96h354v96q0 22 10.5 26.5t26.5 -11.5l151 -150q10 -10 10 -25t-10 -25l-151 -151q-15 -16 -26 -11t-11 27v96h-354v-96q0 -22 -10.5 -26.5t-26.5 11.5l-151 150q-10 10 -10 25z" />
153
+ <glyph unicode="&#xf080;" d="M0 56v638q0 23 17 39.5t40 16.5h787q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-787q-23 0 -40 16.5t-17 39.5zM75 75h750v600h-750v-600zM150 129v177h99v-177h-99zM317 129v379h98v-379h-98zM485 129v289h99v-289h-99zM651 129v450h99v-450h-99z " />
154
+ <glyph unicode="&#xf081;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t36 7.5h563q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-563q-19 0 -36 7.5t-29.5 20t-20 29.5t-7.5 37zM98 273q39 -54 97 -82.5t127 -28.5q47 0 90 13t78 36t60.5 55t37.5 70q40 3 63 28 q7 7 2 16q-4 9 -15 7h-2q11 11 15 22q4 10 -4 16q-7 7 -16 1q-4 -2 -14.5 -5t-22.5 -3q-2 0 -3.5 0.5t-3.5 0.5q0 1 -0.5 2t-0.5 2q-8 30 -28 54t-46 35q2 2 3 4t3 4q3 8 0 16q-1 3 -6 8t-17 4q-1 2 -3 4q-6 6 -12 4q-12 -2 -24 -6l-1 1q-7 4 -15 -1q-29 -18 -48 -49 t-33 -66q-17 15 -28 20q-30 17 -63 31t-75 30q-7 2 -12 -2q-5 -3 -7 -10q-1 -13 4 -28.5t19 -30.5q-12 -3 -10 -16q6 -33 33 -49l-6 -6q-7 -7 -2 -16q2 -6 13 -18.5t32 -18.5q-3 -6 -3 -11t1 -7q3 -16 19 -24q-18 -12 -38.5 -16.5t-41.5 -3t-40.5 10t-34.5 22.5q-4 4 -9.5 4 t-9.5 -4q-11 -9 -2 -19z" />
155
+ <glyph unicode="&#xf082;" horiz-adv-x="750" d="M1 94v562q0 19 7.5 36.5t20 30t29.5 20t36 7.5h563q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-237v314h84q6 0 10.5 4t4.5 10l6 82q0 7 -4 12q-5 5 -11 5h-90v36q0 20 5 26.5t26 6.5q12 0 27 -2t29 -5q3 0 6.5 0.5t5.5 2.5 q5 3 7 11l11 79q2 14 -12 17q-44 12 -92 12q-147 0 -147 -143v-41h-50q-16 0 -16 -16v-82q0 -6 4.5 -10.5t11.5 -4.5h50v-314h-192q-19 0 -36 7.5t-29.5 20t-20 29.5t-7.5 37z" />
156
+ <glyph unicode="&#xf083;" d="M0 56v638q0 23 16.5 39.5t39.5 16.5h788q23 0 39.5 -16.5t16.5 -39.5v-638q0 -23 -16.5 -39.5t-39.5 -16.5h-788q-23 0 -39.5 16.5t-16.5 39.5zM75 78h750v56h-750v-56zM75 559h750v113h-467l-7 -45h-276v-68zM130 655h154v45h-154v-45zM272 346q0 -37 14 -69.5t38 -56.5 t56.5 -38t69.5 -14t69.5 14t56.5 38t38 56.5t14 69.5t-14 69.5t-38 56.5t-56.5 38t-69.5 14t-69.5 -14t-56.5 -38t-38 -56.5t-14 -69.5zM328 346q0 25 9.5 47.5t26 39t39 26t47.5 9.5t47.5 -9.5t39 -26t26 -39t9.5 -47.5t-9.5 -47.5t-26 -39t-39 -26t-47.5 -9.5t-47.5 9.5 t-39 26t-26 39t-9.5 47.5zM363 346q0 -8 6 -14t14 -6q9 0 15 6t6 14q0 20 13.5 33t32.5 13v1q9 0 15 6t6 14q0 9 -6 15t-15 6q-36 0 -61.5 -26t-25.5 -62z" />
157
+ <glyph unicode="&#xf084;" d="M0.5 391.5q-2.5 52.5 14 108.5t53.5 107q36 51 83.5 85t98 48t99.5 8t90 -35q36 -26 57 -63.5t27.5 -82.5t-1.5 -93.5t-32 -95.5l195 -139l47 65l-49 35q-7 5 -8.5 13t3.5 15l23 32q5 7 13 8.5t15 -3.5l163 -116q7 -5 8 -13t-4 -15l-23 -33q-5 -7 -13 -8.5t-15 3.5 l-48 35l-47 -65l116 -83q20 -14 24.5 -39t-10.5 -45q-14 -20 -38.5 -24t-44.5 10l-376 269q-37 -38 -80.5 -61.5t-88 -31.5t-87 -0.5t-78.5 33.5q-41 29 -62.5 74t-24 97.5zM109 374.5q3 -19.5 13.5 -37t27.5 -29.5t37 -16.5t39.5 -1t37 14t29.5 27.5q17 24 18 53t-12 54 q28 -5 55 5.5t45 35.5q12 17 16.5 37t1 39.5t-14 37t-27.5 29.5t-37 16.5t-39.5 1t-37 -14t-29.5 -27.5q-17 -25 -18.5 -54t12.5 -54q-28 5 -55 -5.5t-45 -35.5q-12 -17 -16 -36.5t-1 -39z" />
158
+ <glyph unicode="&#xf085;" d="M0 391v84q0 6 5 6q14 4 29.5 6t30.5 4q4 0 7 0.5t7 0.5q6 21 17 42q-9 14 -20 28t-23 28q-5 5 0 9q14 17 30 33.5t33 30.5q6 4 9 -1q8 -8 17 -14.5t18 -13.5l21 -15q21 11 42 17q2 21 4.5 39t6.5 35q0 5 6 5h84q7 0 7 -6q2 -14 4.5 -28.5t4.5 -29.5l2 -15q20 -6 41 -17 q8 7 19 14q10 8 19.5 15t18.5 15q6 4 9 -1q5 -4 9 -8l8 -8l22 -22q12 -12 23 -25q3 -5 0 -9q-10 -11 -20 -24.5t-23 -30.5q6 -11 10.5 -22t8.5 -22q8 -2 17.5 -3t19.5 -3l18 -2q9 -1 17 -3q6 -2 6 -7v-84q0 -5 -5 -7q-14 -3 -29.5 -5t-30.5 -4q-4 0 -14 -2q-6 -20 -17 -41 q9 -14 20 -28t23 -28q4 -5 0 -9q-14 -17 -30 -33.5t-33 -30.5q-6 -4 -9 1q-8 7 -17 14t-18 13q-5 5 -10.5 8.5t-10.5 7.5q-21 -11 -42 -17q-2 -17 -4 -36.5t-7 -37.5q-2 -5 -7 -5h-84q-6 0 -6 5q-3 14 -5 29l-4 30l-2 15q-20 6 -41 17q-5 -4 -9.5 -7t-9.5 -7 q-10 -8 -19.5 -15t-18.5 -15q-6 -4 -9 1q-5 4 -8 8l-9 8q-11 11 -22.5 22t-22.5 25q-4 4 0 8q12 14 22.5 28.5t19.5 27.5q-10 20 -18 44q-8 2 -17.5 3t-19.5 3l-18 2q-9 1 -18 3q-5 2 -5 7zM197 432q0 -35 25 -60t60 -25t60 25t25 60t-25 60t-60 25t-60 -25t-25 -60z M524 188q-2 6 4 8q11 4 21 8t21 8q1 5 1.5 9t2.5 9t3.5 8.5t3.5 8.5q-7 10 -13 19.5t-12 19.5q-3 5 2 8l62 56q4 4 9 1q9 -7 17.5 -14t17.5 -15q18 7 35 8q5 11 10.5 21t10.5 19q3 5 8 3l80 -25q5 -2 5 -8q-2 -11 -4 -21.5t-4 -21.5q8 -6 14 -13t11 -15q12 1 23 1.5t22 0.5 q5 0 7 -5l18 -83q2 -5 -4 -7q-11 -5 -21 -8.5t-21 -7.5q-1 -5 -1.5 -9t-2.5 -9t-3.5 -8.5t-3.5 -7.5q7 -10 13.5 -19.5t11.5 -19.5q2 -5 -2 -8l-62 -57q-4 -4 -9 0q-8 7 -17 14t-17 14q-20 -7 -37 -8q-5 -11 -10 -21t-10 -19q-3 -5 -8 -3l-80 25q-5 2 -5 8q2 11 3.5 22 t3.5 22q-14 12 -24 27q-12 -2 -23.5 -2.5t-22.5 0.5q-5 0 -7 5zM560 607q0 5 5 7q10 2 20 4.5t20 4.5q2 4 3 8t3 8t4.5 7t4.5 7q-5 10 -9 19.5t-8 18.5q-2 4 2 8l64 42q5 3 8 -1q8 -7 14.5 -14.5t13.5 -15.5q16 3 33 3q12 18 24 33q3 3 8 2l69 -34q5 -3 3 -8 q-2 -10 -5.5 -19t-6.5 -19q10 -13 18 -29q11 -1 21.5 -1.5t20.5 -2.5q5 -2 5 -6l5 -77q0 -4 -5 -6q-10 -2 -19.5 -4.5t-20.5 -4.5q-2 -4 -3 -7.5t-3 -7.5q-3 -7 -8 -14q5 -10 9 -19.5t8 -18.5q2 -5 -3 -8l-63 -42q-5 -3 -8 1q-13 12 -28 30q-8 -2 -16.5 -3t-17.5 0 q-6 -9 -12 -17.5t-12 -16.5q-3 -3 -8 -1l-69 34q-5 2 -3 7q3 10 6 19.5t7 19.5q-6 6 -10.5 13t-8.5 15q-11 1 -21.5 1.5t-20.5 2.5q-5 0 -5 6zM658 203q-7 -22 3.5 -42.5t33.5 -27.5q22 -8 42.5 2.5t27.5 33.5q8 22 -2.5 42.5t-33.5 28.5q-22 7 -42.5 -3.5t-28.5 -33.5z M681 564q7 -20 26 -30q20 -9 40 -2.5t29 25.5q10 20 3 40t-26 29q-19 10 -39 3t-30 -26t-3 -39z" />
159
+ <glyph unicode="&#xf086;" d="M0 483q0 55 29 103.5t78.5 85t116 57.5t142.5 21t142.5 -21t116 -57.5t78 -85t28.5 -103.5q0 -56 -28.5 -104.5t-78 -84.5t-116 -57t-142.5 -21q-18 0 -35 1.5t-34 3.5q-34 -26 -73 -45t-84 -29q-20 -5 -40 -6q-12 -2 -16 11v1q-2 5 1.5 9t7.5 8q17 17 30 37t21 64 q-66 36 -105 91t-39 121zM305 136q8 4 12 7q13 -2 25 -2h24q93 0 173 26.5t139.5 72.5t93.5 108.5t34 134.5q0 19 -3 39q45 -36 71 -81.5t26 -98.5q0 -66 -39 -120.5t-105 -91.5q8 -44 21 -63.5t30 -36.5q4 -5 7.5 -9t1.5 -9q-1 -6 -6 -9.5t-10 -2.5q-11 2 -20.5 3.5 t-19.5 3.5q-88 19 -157 73q-17 -2 -34 -3.5t-35 -1.5q-66 0 -123.5 16t-105.5 45z" />
160
+ <glyph unicode="&#xf087;" horiz-adv-x="783" d="M0.5 222q-1.5 56 2 112t12.5 105q45 3 94 3t90 -10q6 -38 10 -91t5.5 -110t0.5 -111t-5 -94q-18 -2 -41.5 -2.5t-49 0.5t-50 1.5t-44.5 0.5q-10 38 -16.5 89t-8 107zM91 101q0 -16 11 -27t27 -11t26.5 11t10.5 27q0 15 -10.5 26t-26.5 11t-27 -11t-11 -26zM240 412 q22 10 35.5 19.5t24.5 21t22.5 26t30.5 34.5q16 16 28.5 26.5t23 20t19 20t17.5 25.5q16 29 21 65t13 68q0 7 7 11q19 3 35 -3.5t28 -17.5t19.5 -26t10.5 -28q6 -33 -1.5 -59.5t-19 -50.5t-22 -46.5t-11.5 -47.5q21 -9 51.5 -9.5t63.5 1t64 1.5t52 -8.5t28.5 -29t-5.5 -59.5 q0 -2 -2.5 -5.5t-5 -8t-4.5 -8.5l-2 -3q11 -11 16 -23t5 -20q1 -39 -32 -68q10 -15 11 -31.5t-4 -31.5t-14.5 -26.5t-21.5 -17.5q6 -34 -6 -58t-35.5 -38.5t-56.5 -20.5t-69 -6t-72.5 5t-67.5 14q-20 6 -39 14t-38.5 15t-41 11t-45.5 0q2 39 2.5 85t-1 93.5t-4.5 92.5t-7 82 z" />
161
+ <glyph unicode="&#xf088;" horiz-adv-x="783" d="M1 452q-1 21 7.5 37.5t24.5 30.5q-9 15 -10 31.5t3.5 31.5t14 26.5t21.5 17.5q-6 34 6 58t35.5 38.5t56.5 20.5t69 6t72.5 -5t67.5 -14q20 -6 39 -14t38.5 -15t41 -10.5t45.5 0.5q-2 -39 -2.5 -85.5t1 -94t4 -92.5t7.5 -82q-22 -10 -35.5 -19.5t-24 -21t-22.5 -26 t-31 -33.5q-15 -17 -27.5 -27.5t-23 -20t-19.5 -19.5t-18 -26q-16 -29 -20.5 -65t-13.5 -68q0 -8 -7 -11q-20 -3 -35.5 3.5t-27.5 17.5t-19.5 25.5t-10.5 28.5q-6 33 1.5 59.5t19 50.5t22 47t11.5 48q-21 9 -51.5 9t-63.5 -1.5t-63.5 -1.5t-52 8.5t-29 29t5.5 59.5 q1 1 3.5 5.5t5 8.5t3.5 8l2 3q-11 11 -16 23t-5 20zM568 630q1 54 5 94q18 2 42 2.5t49.5 0t50 -1.5t44.5 -1q10 -38 16 -89t7.5 -106.5t-2 -112t-12.5 -105.5q-45 -3 -93.5 -3t-90.5 10q-6 38 -10 91t-5.5 110t-0.5 111zM617 650q0 -16 11 -27t27 -11q15 0 26 11t11 27 q0 15 -11 26t-26 11q-16 0 -27 -11t-11 -26z" />
162
+ <glyph unicode="&#xf089;" horiz-adv-x="393" d="M0.5 465q4.5 13 25.5 16l238 34l106 216q9 19 23 19v-633l-212 -112q-20 -10 -31 -2t-7 30l41 236l-172 168q-16 15 -11.5 28z" />
163
+ <glyph unicode="&#xf08a;" horiz-adv-x="846" d="M0 519q0 64 20.5 108t53 71.5t73.5 39.5t82 12q30 0 59 -10t54 -25t45.5 -32.5t35.5 -32.5q15 15 36 32.5t46 32.5t53.5 25t58.5 10q42 0 83 -12t73.5 -39.5t52.5 -71.5t20 -108q0 -44 -16.5 -83.5t-36 -69.5t-37 -48t-18.5 -19l-288 -288q-13 -11 -27 -11q-15 0 -26 11 l-290 288q-1 1 -18 19t-36.5 48t-36 69.5t-16.5 83.5zM75 519q0 -32 13 -61.5t29 -53t29 -37.5l14 -14l263 -263l263 262q1 1 14 15t29 37.5t29 53t13 61.5q0 48 -14 78.5t-36.5 48t-50 23.5t-53.5 6q-25 0 -50.5 -12t-48 -29t-40 -34.5t-26.5 -28.5q-11 -14 -29 -14t-29 14 q-9 11 -26.5 28.5t-40 34.5t-48 29t-50.5 12q-26 0 -53.5 -6t-50 -23.5t-36.5 -48t-14 -78.5z" />
164
+ <glyph unicode="&#xf08b;" horiz-adv-x="825" d="M0 150v450q0 31 12 58t32.5 47.5t47.5 32.5t58 12h225v-94h-225q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h225v-94h-225q-31 0 -58 12t-47.5 32.5t-32.5 47.5t-12 58zM248 285v180q0 16 11 26.5t27 10.5h209v143q0 20 19 28q19 7 32 -7l270 -270 q9 -9 9 -21.5t-9 -20.5l-270 -270q-9 -9 -21 -9q-5 0 -11 2q-19 8 -19 28v142h-209q-16 0 -27 11t-11 27z" />
165
+ <glyph unicode="&#xf08c;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t37 7.5h562q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-562q-39 0 -66.5 27.5t-27.5 66.5zM101 582q0 -28 19.5 -47.5t46.5 -19.5q28 0 47.5 19.5t19.5 47.5q0 27 -19.5 46.5t-47.5 19.5 q-27 0 -46.5 -19.5t-19.5 -46.5zM104 117q0 -5 4.5 -9.5t9.5 -4.5h98q6 0 10 4.5t4 9.5v345q0 14 -14 14h-98q-5 0 -9.5 -4t-4.5 -10v-345zM283 117q0 -5 4.5 -9.5t9.5 -4.5h98q6 0 10 4.5t4 9.5v187q0 28 8 47q15 31 55 31q32 0 42 -19q7 -11 7 -35v-211q0 -5 4 -9.5 t10 -4.5h100q6 0 10 4.5t4 9.5v233q0 72 -42 104q-40 31 -103 31q-50 0 -85 -23q-4 -3 -13 -12v12q0 14 -14 14h-95q-5 0 -9.5 -4t-4.5 -10v-345z" />
166
+ <glyph unicode="&#xf08d;" d="M1 461q4 38 21 80.5t47 82.5t65.5 68.5t71.5 43t68.5 14t56.5 -18.5q25 -18 34.5 -49.5t5.5 -70.5l141 -105q52 29 101.5 33.5t84.5 -21.5q25 -19 37.5 -50.5t11.5 -70.5t-14.5 -83.5t-39.5 -88.5l201 -193q5 -5 6 -12t-4 -12q-5 -8 -15 -8q-3 0 -9 2l-242 138 q-35 -37 -73.5 -63t-75.5 -38t-71 -9.5t-60 22.5q-35 26 -45 74.5t4 106.5l-141 106q-36 -15 -69 -15t-58 18q-24 18 -34 49.5t-6 69.5zM80 417.5q1 -7.5 8 -12.5q8 -7 22 -7q15 0 31.5 8t33.5 22t33.5 31.5t31.5 37.5q5 6 4 13.5t-8 12.5q-6 5 -13.5 4t-12.5 -8 q-37 -49 -65.5 -67.5t-34.5 -16.5q-6 5 -13.5 4t-12.5 -8q-5 -6 -4 -13.5zM219 368l170 -127q6 -4 11 -4q10 0 15 8q5 6 4 13.5t-7 12.5l-163 121q-15 -14 -30 -24zM393 141q-10 -16 4 -27q13 -10 33 -10q19 0 41 10t44.5 27t44.5 39t41 47q5 7 4 14.5t-8 12.5 q-6 5 -13.5 3.5t-12.5 -7.5q-24 -32 -48 -54.5t-45 -35.5t-36.5 -17t-22.5 2q-6 5 -13.5 3.5t-12.5 -7.5z" />
167
+ <glyph unicode="&#xf08e;" d="M0 150v450q0 31 12 58.5t32 47.5t47.5 32t58.5 12h284q-1 -7 -2 -13.5t-1 -14.5v-43q0 -11 3 -23h-284q-23 0 -39.5 -16.5t-16.5 -39.5v-450q0 -23 16.5 -39.5t39.5 -16.5h525q23 0 39.5 16.5t16.5 39.5v166q20 -15 44 -24t50 -10v-132q0 -31 -12 -58t-32.5 -47.5 t-47.5 -32.5t-58 -12h-525q-31 0 -58.5 12t-47.5 32.5t-32 47.5t-12 58zM338 255q0 12 8 20l376 377h-131q-12 0 -20 8t-8 20v42q-1 11 7.5 19.5t20.5 8.5h281q11 0 19.5 -8.5t8.5 -19.5v-42v-239q0 -12 -8.5 -20.5t-19.5 -7.5h-42q-12 0 -20 8t-8 20v131l-377 -376 q-8 -8 -20 -8t-20 8l-39 39q-8 8 -8 20z" />
168
+ <glyph unicode="&#xf090;" horiz-adv-x="825" d="M0 285v180q0 16 11 26.5t27 10.5h209v143q0 20 18 28q19 7 33 -7l270 -270q8 -9 8 -21.5t-8 -20.5l-270 -270q-9 -9 -21 -9q-4 0 -12 2q-18 8 -18 28v142h-209q-16 0 -27 11t-11 27zM450 0v94h225q23 0 39.5 16.5t16.5 39.5v450q0 23 -16.5 39.5t-39.5 16.5h-225v94h225 q31 0 58 -12t47.5 -32t32.5 -47.5t12 -58.5v-450q0 -31 -12 -58t-32.5 -47.5t-47.5 -32.5t-58 -12h-225z" />
169
+ <glyph unicode="&#xf091;" horiz-adv-x="825" d="M0 509v91q0 16 11 26.5t27 10.5h158q-1 6 -1 13v11v2q0 26 2 43t7.5 26.5t15.5 13.5t27 4h331q16 0 26.5 -4t16 -13.5t7.5 -26.5t2 -43v-13q0 -6 -1 -13h158q16 0 27 -10.5t11 -26.5v-91q0 -31 -22 -64t-59.5 -62.5t-88 -52t-108.5 -31.5q-25 -5 -44.5 -20.5t-19.5 -34.5 q0 -17 8.5 -25t19 -15t19.5 -15.5t11 -25.5q2 -11 -1 -23q-2 -7 11.5 -11.5t33 -9t40 -11t31.5 -16.5q6 -5 9.5 -19.5t4.5 -31.5q1 -16 -3 -28.5t-14 -12.5h-481q-10 0 -14 12.5t-3 28.5q1 17 4.5 31.5t9.5 19.5q11 10 31 16.5t39.5 11t33.5 9t12 11.5t-2 12v11 q1 17 10.5 25.5t20.5 15.5t19.5 15t8.5 25q0 19 -19.5 34.5t-45.5 20.5q-57 10 -107.5 32.5t-88 51.5t-59.5 62t-22 64zM75 509q0 -10 11.5 -26.5t33 -34.5t52 -35t68.5 -29q-12 39 -21.5 85.5t-16.5 92.5h-127v-53zM585 384q38 12 68.5 29t52 35t33 34.5t11.5 26.5v53h-128 q-6 -46 -15.5 -92.5t-21.5 -85.5z" />
170
+ <glyph unicode="&#xf092;" horiz-adv-x="750" d="M0 94v562q0 19 7.5 36.5t20 30t29.5 20t37 7.5h562q39 0 66.5 -27.5t27.5 -66.5v-562q0 -20 -7.5 -37t-20 -29.5t-30 -20t-36.5 -7.5h-562q-39 0 -66.5 27.5t-27.5 66.5zM94 321q0 -44 11 -82.5t41.5 -67t85.5 -45t143 -16.5t142.5 16.5t85.5 45t42 67t11 82.5 q0 73 -46 127q4 16 5 36t-1.5 39t-7.5 36t-12 29h-14q-42 -2 -74 -22t-63 -37l-7 1q-8 0 -18.5 1t-22 1.5t-20.5 0.5q-18 0 -35 -1t-33 -3q-31 17 -63 37t-74 22h-14q-8 -12 -12.5 -29t-7 -36t-1.5 -39t5 -36q-46 -54 -46 -127zM183 289q15 60 84 67q13 2 27 1.5t30 -1.5 q7 0 25.5 -1t25.5 -1t25.5 1t25.5 1q16 1 30 1.5t26 -1.5q70 -7 85 -67q8 -33 -3 -61.5t-24 -41.5q-20 -20 -66 -32t-99 -12t-99 12t-66 32q-13 13 -24 41.5t-3 61.5zM242 265q0 -23 11 -39t27 -16t27 16t11 39t-11 38.5t-27 15.5t-27 -15.5t-11 -38.5zM432 265 q0 -23 11 -39t27 -16t27 16t11 39t-11 38.5t-27 15.5t-27 -15.5t-11 -38.5z" />
171
+ <glyph unicode="&#xf093;" d="M0 19v300q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-169h600v169q0 8 5.5 13.5t13.5 5.5h112q8 0 13.5 -5.5t5.5 -13.5v-300q0 -19 -19 -19h-862q-19 0 -19 19zM169 473.5q-3 7.5 8 18.5l246 247q11 11 27 11t27 -11l247 -247q11 -11 7.5 -18.5t-18.5 -7.5 h-150v-244q0 -16 -11 -27t-27 -11h-150q-16 0 -26.5 11t-10.5 27v244h-150q-16 0 -19 7.5z" />
172
+ <glyph unicode="&#xf094;" horiz-adv-x="786" d="M1 251q-1 17 0.5 33.5t3.5 36.5q2 17 3.5 35t4.5 32q7 32 15 62.5t22 57.5q10 20 22 39.5t26 38.5q5 7 10.5 12t11.5 10l22 22q11 11 24 21t28 18t32 16q16 8 33 14.5t35 13.5q34 14 76 25l1 1q22 6 41.5 8.5t38.5 2.5q29 0 55 -4.5t52 -9.5q20 -4 41.5 -7.5t45.5 -3.5h1 q14 0 30.5 2.5t32.5 2.5q12 0 22 -3t16 -12q11 -15 12.5 -35t-0.5 -37t-4 -34.5t1 -35.5q2 -11 5.5 -19t7.5 -18q4 -9 5.5 -19.5t3.5 -20.5q9 -51 7.5 -95.5t-11.5 -83t-27.5 -72.5t-39.5 -65q-18 -24 -38.5 -47.5t-45 -44.5t-54 -38t-65.5 -29q-37 -13 -77.5 -16.5 t-77.5 -5.5h-15q-51 0 -95 8t-94 8h-2q-17 0 -37.5 -5t-40.5 -6h-1q-18 0 -32 8.5t-21 20.5q-10 17 -8.5 35.5t6.5 33.5t5 32.5t-2.5 37t-6 39.5t-4.5 40z" />
173
+ <glyph unicode="&#xf095;" horiz-adv-x="1000" />
174
+ </font>
175
+ </defs></svg>
themes-ai1ec/vortex/font/fontawesome-webfont.svgz ADDED
Binary file
themes-ai1ec/vortex/font/fontawesome-webfont.ttf ADDED
Binary file
themes-ai1ec/vortex/font/fontawesome-webfont.woff ADDED
Binary file
themes-ai1ec/vortex/functions.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @file
4
+ *
5
+ * Attaches theme-specific JS.
6
+ */
7
+
8
+ /**
9
+ * Load theme-specific JS.
10
+ */
11
+ function ai1ec_vortex_scripts() {
12
+ $vortex_url = apply_filters(
13
+ 'ai1ec_template_root_url',
14
+ apply_filters( 'ai1ec_template', 'vortex' )
15
+ );
16
+
17
+ wp_enqueue_script( 'ai1ec-vortex-general', "$vortex_url/js/general.min.js" );
18
+ }
19
+ add_action( 'wp_print_scripts', 'ai1ec_vortex_scripts' );
themes-ai1ec/vortex/img/agenda-view.png ADDED
Binary file
themes-ai1ec/vortex/img/ajax-loader.gif ADDED
Binary file
{img → themes-ai1ec/vortex/img}/google-calendar.png RENAMED
File without changes
{img → themes-ai1ec/vortex/img}/ics-icon.png RENAMED
File without changes
themes-ai1ec/vortex/img/month-view.png ADDED
Binary file
themes-ai1ec/vortex/img/oneday-view.png ADDED
Binary file
themes-ai1ec/vortex/img/week-view.png ADDED
Binary file
themes-ai1ec/vortex/index.php ADDED
File without changes
themes-ai1ec/vortex/js/bootstrap-dropdown.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ============================================================
2
+ * bootstrap-dropdown.js v2.0.2
3
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
+ * ============================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ============================================================ */
19
+
20
+ if ( ! jQuery.fn.dropdown ) {
21
+ !function( $ ){
22
+
23
+ "use strict"
24
+
25
+ /* DROPDOWN CLASS DEFINITION
26
+ * ========================= */
27
+
28
+ var toggle = '[data-toggle="dropdown"]'
29
+ , Dropdown = function ( element ) {
30
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
31
+ $('html').on('click.dropdown.data-api', function () {
32
+ $el.parent().removeClass('open')
33
+ })
34
+ }
35
+
36
+ Dropdown.prototype = {
37
+
38
+ constructor: Dropdown
39
+
40
+ , toggle: function ( e ) {
41
+ var $this = $(this)
42
+ , selector = $this.attr('data-target')
43
+ , $parent
44
+ , isActive
45
+
46
+ if (!selector) {
47
+ selector = $this.attr('href')
48
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
49
+ }
50
+
51
+ $parent = $(selector)
52
+ $parent.length || ($parent = $this.parent())
53
+
54
+ isActive = $parent.hasClass('open')
55
+
56
+ clearMenus()
57
+ !isActive && $parent.toggleClass('open')
58
+
59
+ return false
60
+ }
61
+
62
+ }
63
+
64
+ function clearMenus() {
65
+ $(toggle).parent().removeClass('open')
66
+ }
67
+
68
+
69
+ /* DROPDOWN PLUGIN DEFINITION
70
+ * ========================== */
71
+
72
+ $.fn.dropdown = function ( option ) {
73
+ return this.each(function () {
74
+ var $this = $(this)
75
+ , data = $this.data('dropdown')
76
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
77
+ if (typeof option == 'string') data[option].call($this)
78
+ })
79
+ }
80
+
81
+ $.fn.dropdown.Constructor = Dropdown
82
+
83
+
84
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
85
+ * =================================== */
86
+
87
+ $(function () {
88
+ $('html').on('click.dropdown.data-api', clearMenus)
89
+ $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
90
+ })
91
+
92
+ }( window.jQuery );
93
+ }
themes-ai1ec/vortex/js/bootstrap-tooltip.js ADDED
@@ -0,0 +1,272 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===========================================================
2
+ * bootstrap-tooltip.js v2.0.2
3
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
+ * Inspired by the original jQuery.tipsy by Jason Frame
5
+ * ===========================================================
6
+ * Copyright 2012 Twitter, Inc.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================== */
20
+
21
+ if ( ! jQuery.fn.tooltip ) {
22
+ !function( $ ) {
23
+
24
+ "use strict"
25
+
26
+ /* TOOLTIP PUBLIC CLASS DEFINITION
27
+ * =============================== */
28
+
29
+ var Tooltip = function ( element, options ) {
30
+ this.init('tooltip', element, options)
31
+ }
32
+
33
+ Tooltip.prototype = {
34
+
35
+ constructor: Tooltip
36
+
37
+ , init: function ( type, element, options ) {
38
+ var eventIn
39
+ , eventOut
40
+
41
+ this.type = type
42
+ this.$element = $(element)
43
+ this.options = this.getOptions(options)
44
+ this.enabled = true
45
+
46
+ if (this.options.trigger != 'manual') {
47
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
48
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
49
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
50
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
51
+ }
52
+
53
+ this.options.selector ?
54
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
55
+ this.fixTitle()
56
+ }
57
+
58
+ , getOptions: function ( options ) {
59
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
60
+
61
+ if (options.delay && typeof options.delay == 'number') {
62
+ options.delay = {
63
+ show: options.delay
64
+ , hide: options.delay
65
+ }
66
+ }
67
+
68
+ return options
69
+ }
70
+
71
+ , enter: function ( e ) {
72
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
73
+
74
+ if (!self.options.delay || !self.options.delay.show) {
75
+ self.show()
76
+ } else {
77
+ self.hoverState = 'in'
78
+ setTimeout(function() {
79
+ if (self.hoverState == 'in') {
80
+ self.show()
81
+ }
82
+ }, self.options.delay.show)
83
+ }
84
+ }
85
+
86
+ , leave: function ( e ) {
87
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
88
+
89
+ if (!self.options.delay || !self.options.delay.hide) {
90
+ self.hide()
91
+ } else {
92
+ self.hoverState = 'out'
93
+ setTimeout(function() {
94
+ if (self.hoverState == 'out') {
95
+ self.hide()
96
+ }
97
+ }, self.options.delay.hide)
98
+ }
99
+ }
100
+
101
+ , show: function () {
102
+ var $tip
103
+ , inside
104
+ , pos
105
+ , actualWidth
106
+ , actualHeight
107
+ , placement
108
+ , tp
109
+
110
+ if (this.hasContent() && this.enabled) {
111
+ $tip = this.tip()
112
+ this.setContent()
113
+
114
+ if (this.options.animation) {
115
+ $tip.addClass('fade')
116
+ }
117
+
118
+ placement = typeof this.options.placement == 'function' ?
119
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
120
+ this.options.placement
121
+
122
+ inside = /in/.test(placement)
123
+
124
+ $tip
125
+ .remove()
126
+ .css({ top: 0, left: 0, display: 'block' })
127
+ .appendTo(inside ? this.$element : document.body)
128
+
129
+ pos = this.getPosition(inside)
130
+
131
+ actualWidth = $tip[0].offsetWidth
132
+ actualHeight = $tip[0].offsetHeight
133
+
134
+ switch (inside ? placement.split(' ')[1] : placement) {
135
+ case 'bottom':
136
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
137
+ break
138
+ case 'top':
139
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
140
+ break
141
+ case 'left':
142
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
143
+ break
144
+ case 'right':
145
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
146
+ break
147
+ }
148
+
149
+ $tip
150
+ .css(tp)
151
+ .addClass(placement)
152
+ .addClass('in')
153
+ }
154
+ }
155
+
156
+ , setContent: function () {
157
+ var $tip = this.tip()
158
+ $tip.find('.tooltip-inner').html(this.getTitle())
159
+ $tip.removeClass('fade in top bottom left right')
160
+ }
161
+
162
+ , hide: function () {
163
+ var that = this
164
+ , $tip = this.tip()
165
+
166
+ $tip.removeClass('in')
167
+
168
+ function removeWithAnimation() {
169
+ var timeout = setTimeout(function () {
170
+ $tip.off($.support.transition.end).remove()
171
+ }, 500)
172
+
173
+ $tip.one($.support.transition.end, function () {
174
+ clearTimeout(timeout)
175
+ $tip.remove()
176
+ })
177
+ }
178
+
179
+ $.support.transition && this.$tip.hasClass('fade') ?
180
+ removeWithAnimation() :
181
+ $tip.remove()
182
+ }
183
+
184
+ , fixTitle: function () {
185
+ var $e = this.$element
186
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
187
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
188
+ }
189
+ }
190
+
191
+ , hasContent: function () {
192
+ return this.getTitle()
193
+ }
194
+
195
+ , getPosition: function (inside) {
196
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
197
+ width: this.$element[0].offsetWidth
198
+ , height: this.$element[0].offsetHeight
199
+ })
200
+ }
201
+
202
+ , getTitle: function () {
203
+ var title
204
+ , $e = this.$element
205
+ , o = this.options
206
+
207
+ title = $e.attr('data-original-title')
208
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
209
+
210
+ title = (title || '').toString().replace(/(^\s*|\s*$)/, "")
211
+
212
+ return title
213
+ }
214
+
215
+ , tip: function () {
216
+ return this.$tip = this.$tip || $(this.options.template)
217
+ }
218
+
219
+ , validate: function () {
220
+ if (!this.$element[0].parentNode) {
221
+ this.hide()
222
+ this.$element = null
223
+ this.options = null
224
+ }
225
+ }
226
+
227
+ , enable: function () {
228
+ this.enabled = true
229
+ }
230
+
231
+ , disable: function () {
232
+ this.enabled = false
233
+ }
234
+
235
+ , toggleEnabled: function () {
236
+ this.enabled = !this.enabled
237
+ }
238
+
239
+ , toggle: function () {
240
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
241
+ }
242
+
243
+ }
244
+
245
+
246
+ /* TOOLTIP PLUGIN DEFINITION
247
+ * ========================= */
248
+
249
+ $.fn.tooltip = function ( option ) {
250
+ return this.each(function () {
251
+ var $this = $(this)
252
+ , data = $this.data('tooltip')
253
+ , options = typeof option == 'object' && option
254
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
255
+ if (typeof option == 'string') data[option]()
256
+ })
257
+ }
258
+
259
+ $.fn.tooltip.Constructor = Tooltip
260
+
261
+ $.fn.tooltip.defaults = {
262
+ animation: true
263
+ , delay: 0
264
+ , selector: false
265
+ , placement: 'top'
266
+ , trigger: 'hover'
267
+ , title: ''
268
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
269
+ }
270
+
271
+ }( window.jQuery );
272
+ }
themes-ai1ec/vortex/js/build-js.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ if which -s uglifyjs; then
4
+ cat bootstrap-*.js general.js | uglifyjs -nc > general.min.js
5
+ uglifyjs -nc calendar.js > calendar.min.js
6
+ uglifyjs -nc event.js > event.min.js
7
+ else
8
+ echo 'Error: uglifyjs not found. Install Node.js then: npm install -g uglify-js';
9
+ exit 1;
10
+ fi
{js → themes-ai1ec/vortex/js}/calendar.js RENAMED
@@ -1,627 +1,860 @@
1
- // Used to ensure that Entities used in L10N strings are correct
2
- function ai1ec_convert_entities( o ) {
3
- var c, v;
4
-
5
- c = function( s ) {
6
- if( /&[^;]+;/.test( s ) ) {
7
- var e = document.createElement( 'div' );
8
- e.innerHTML = s;
9
- return ! e.firstChild ? s : e.firstChild.nodeValue;
10
- }
11
- return s;
12
- }
13
-
14
- if( typeof o === 'string' ) {
15
- return c( o );
16
- } else if( typeof o === 'object' ) {
17
- for( v in o ) {
18
- if( typeof o[v] === 'string' ) {
19
- o[v] = c( o[v] );
20
- }
21
- }
22
- }
23
- return o;
24
- }
25
-
26
- jQuery( document ).ready( function( $ ) {
27
-
28
- // =====================================
29
- // = Calendar CSS selector replacement =
30
- // =====================================
31
-
32
- if( ai1ec_calendar.selector != undefined && ai1ec_calendar.selector != '' &&
33
- $( ai1ec_calendar.selector ).length == 1 )
34
- {
35
- // Try to find an <h#> element containing the title
36
- var $title = $( ":header:contains(" + ai1ec_calendar.title + "):first" );
37
- // If none found, create one
38
- if( ! $title.length ) {
39
- $title = $( '<h1 class="page-title"></h1>' );
40
- $title.text( ai1ec_calendar.title ); // Do it this way to automatically generate HTML entities
41
- }
42
-
43
- var $calendar = $( '#ai1ec-container' )
44
- .detach()
45
- .before( $title );
46
-
47
- $( ai1ec_calendar.selector )
48
- .empty()
49
- .append( $calendar )
50
- .hide()
51
- .css( 'visibility', 'visible' )
52
- .fadeIn( 'fast' );
53
- }
54
-
55
- // =================================
56
- // = General script initialization =
57
- // =================================
58
-
59
- // Variable storing currently displayed view
60
- var current_hash = '';
61
- // An array caching the IDs of all event posts in the currently active view
62
- var post_ids;
63
-
64
- // Check whether appropriate classes have been added to <body> (some themes
65
- // don't respect the WP body_class() function). If not, add them, or our app
66
- // won't function properly.
67
- var classes = $('body').attr( 'class' );
68
- if( classes == undefined ) classes = '';
69
- if( classes.match( /\s?\bai1ec-[\w-]+\b/ ) == null ) {
70
- // Add action body class(es)
71
- classes += ' ' + ai1ec_calendar.body_class;
72
- $('body').attr( 'class', classes );
73
- }
74
-
75
- /**
76
- * Function used to update view if user has clicked back/forward in the
77
- * browser.
78
- */
79
- function check_hash() {
80
- var live_hash = document.location.hash;
81
- var default_hash = ai1ec_convert_entities( ai1ec_calendar.default_hash );
82
- // If current_hash doesn't match live hash, and the document's live hash
83
- // isn't empty, or if it is, the current_hash isn't equivalent to empty
84
- // (i.e., default hash), the page needs to be updated.
85
- if( current_hash != live_hash &&
86
- ( live_hash != '' || current_hash != default_hash ) ) {
87
- // If hash is empty, resort to original requested action
88
- var hash = live_hash;
89
- if( ! hash )
90
- hash = default_hash;
91
- load_view( hash );
92
- }
93
- }
94
-
95
- // Monitor browser navigation between different URL #hash values
96
- setInterval( check_hash, 300 );
97
-
98
- /**
99
- * Load a calendar view represented by the given hash value.
100
- */
101
- function load_view( hash ) {
102
-
103
- // Reveal loader behind view
104
- $('#ai1ec-calendar-view-loading').fadeIn( 'fast' );
105
- $('#ai1ec-calendar-view').fadeTo( 'fast', 0.3,
106
- // After loader is visible, fetch new content
107
- function() {
108
- var query = hash.substring( 1 );
109
-
110
- // Fetch AJAX result
111
- $.post( ai1ec_calendar.ajaxurl, query, function( data )
112
- {
113
- // Replace action body class with new one
114
- var classes = $('body').attr( 'class' );
115
- classes = classes.replace( /\s?\bai1ec-[\w-]+\b/g, '' );
116
- classes += ' ' + data.body_class;
117
- $('body').attr( 'class', classes );
118
-
119
- // Animate vertical height of container between HTML replacement
120
- var $container = $('#ai1ec-calendar-view-container');
121
- $container.height( $container.height() );
122
- var new_height =
123
- $('#ai1ec-calendar-view')
124
- .html( data.html )
125
- .height();
126
- $container.animate( { height: new_height }, { complete: function() {
127
- // Restore height to automatic upon animation completion for
128
- // proper page layout.
129
- $container.height( 'auto' );
130
- } } );
131
-
132
- // Hide loader
133
- $('#ai1ec-calendar-view-loading').fadeOut( 'fast' );
134
- $('#ai1ec-calendar-view').fadeTo( 'fast', 1.0 );
135
-
136
- // Do any general view initialization after loading
137
- initialize_view();
138
- },
139
- 'json'
140
- );
141
- } );
142
-
143
- // Update stored hash
144
- current_hash = hash;
145
- }
146
-
147
- // Register navigation click handlers
148
- $('a.ai1ec-load-view').live( 'click', function() {
149
- // Load requested view
150
- load_view( $(this).attr( 'href' ) );
151
- } );
152
-
153
- // *** Month/week views ***
154
-
155
- /**
156
- * Callback for mouseenter event on .ai1ec-event element
157
- */
158
- function show_popup() {
159
- var $popup = $(this).prev();
160
-
161
- // If not already done, position popup so that it does not exceed
162
- // right/left bounds of container.
163
- if( ! $popup.data( 'ai1ec_offset' ) ) {
164
- // Keep popup hidden but positionable
165
- $popup.css( 'visibility', 'hidden' ).show();
166
-
167
- var $container = $('#ai1ec-calendar-view-container');
168
- var popup_width = $popup.width();
169
- var popup_offset = $popup.offset();
170
- var container_offset = $container.offset();
171
- var container_x2 = container_offset.left + $container.width();
172
-
173
- // Respect right-side bounds
174
- if( popup_offset.left + popup_width > container_x2 )
175
- $popup.offset( { left: container_x2 - popup_width, top: popup_offset.top } );
176
- // Respect leflt-side bounds
177
- if( $( '.ai1ec-event-summary', $popup ).offset().left < container_offset.left )
178
- $popup.addClass( 'ai1ec-shifted-right' );
179
-
180
- // Restore popup to 'display: none'
181
- $popup.hide().css( 'visibility', 'visible' );
182
- // Flag the object so we don't calculate twice.
183
- $popup.data( 'ai1ec_offset', true );
184
- }
185
-
186
- // Display popup
187
- $popup
188
- .fadeIn( 100,
189
- // Don't handle special case in touch environment (unneeded, interferes)
190
- Modernizr.touch
191
- ? null
192
- : function() {
193
- // Special case - check if the mouse cursor is still in the pop-up.
194
- if( ! $(this).data( 'ai1ec_mouseinside' ) ) {
195
- $(this).each( hide_popup );
196
- }
197
- }
198
- );
199
-
200
- // If in touch environment, hide any previously popped up events (required
201
- // since we don't use mouseleave event for this in touch environments) and
202
- // then return false from "click" handler to prevent following of link.
203
- if( Modernizr.touch ) {
204
- $('.ai1ec-month-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup')
205
- .not( $popup )
206
- .fadeOut( 100, function() { $(this).parent().css( { zIndex: 'auto' } ); } );
207
- return false;
208
- }
209
- }
210
- function hide_popup() {
211
- $(this)
212
- .fadeOut( 100, function() { $(this).parent().css( { zIndex: 'auto' } ); } )
213
- .data( 'ai1ec_mouseinside', false );
214
- }
215
-
216
- // Register popup click (for touch devices) or hover (for non-touch devices)
217
- // handlers for month/week views
218
- $('.ai1ec-month-view .ai1ec-event, .ai1ec-1day-view .ai1ec-event, .ai1ec-week-view .ai1ec-event')
219
- .live( Modernizr.touch ? 'click' : 'mouseenter', show_popup );
220
- // Only hide popups on mouseleave for mouse-based devices (doesn't work
221
- // properly in touch-based devices for some reason).
222
- if( ! Modernizr.touch ) {
223
- $('.ai1ec-month-view .ai1ec-event-popup, .ai1ec-1day-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup')
224
- .live( 'mouseleave', hide_popup )
225
- .live( 'mousemove', function() {
226
- // Track whether popup contains mouse cursor
227
- $(this).data( 'ai1ec_mouseinside', true );
228
- } );
229
- }
230
- // Hide any popups that were visible when the window lost focus
231
- if( $('.ai1ec-month-view, .ai1ec-1day-view, .ai1ec-week-view').length ) {
232
- $(window).blur( function() {
233
- $('.ai1ec-event-popup:visible').each( hide_popup );
234
- } );
235
- }
236
-
237
- // ======================================
238
- // = Week / Day view hover-raise effect =
239
- // ======================================
240
- $( '.ai1ec-1day-view .ai1ec-1day a.ai1ec-event-container, .ai1ec-week-view .ai1ec-week a.ai1ec-event-container' )
241
- .live( 'mouseenter',
242
- function() {
243
- $(this).delay( 500 ).queue( function() { $(this).css( 'z-index', 5 ) } );
244
- } )
245
- .live( 'mouseleave',
246
- function() {
247
- $(this).clearQueue().css( 'z-index', 'auto' );
248
- } );
249
-
250
- /**
251
- * Trims date boxes for which there are too many listed events.
252
- */
253
- function truncate_month_view()
254
- {
255
- if( $( '.ai1ec-month-view' ).length )
256
- {
257
- // First undo any previous truncation
258
- $( '.ai1ec-day .ai1ec-obscured' ).removeClass( 'ai1ec-obscured' );
259
- $( '.ai1ec-day .ai1ec-scroll-up, .ai1ec-day .ai1ec-scroll-down' ).remove();
260
-
261
- // Now set up truncation on any days with max visible events.
262
- $( '.ai1ec-month-view .ai1ec-day' ).each( function()
263
- {
264
- var max_visible = 8;
265
- var $events = $( '.ai1ec-event-container:visible', this );
266
-
267
- if( $events.length > max_visible )
268
- {
269
- /**
270
- * Scroll up by one event.
271
- */
272
- function scroll_up( $el ) {
273
- if( ! $el.hasClass( 'ai1ec-disabled' ) ) {
274
- var $first_visible =
275
- $el.siblings( '.ai1ec-event-container:not(.ai1ec-obscured)' )
276
- .last().addClass( 'ai1ec-obscured' ).end()
277
- .first().prev( '.ai1ec-event-container' ).removeClass( 'ai1ec-obscured' );
278
- if( $first_visible.prev( '.ai1ec-event-container' ).length == 0 )
279
- $el.addClass( 'ai1ec-disabled' );
280
- $el.parent().find( '.ai1ec-scroll-down' ).removeClass( 'ai1ec-disabled' );
281
- }
282
- }
283
-
284
- /**
285
- * Scroll down by one event.
286
- */
287
- function scroll_down( $el ) {
288
- if( ! $el.hasClass( 'ai1ec-disabled' ) ) {
289
- var $last_visible =
290
- $el.siblings( '.ai1ec-event-container:not(.ai1ec-obscured)' )
291
- .first().addClass( 'ai1ec-obscured' ).end()
292
- .last().next( '.ai1ec-event-container' ).removeClass( 'ai1ec-obscured' );
293
- if( $last_visible.next( '.ai1ec-event-container' ).length == 0 )
294
- $el.addClass( 'ai1ec-disabled' );
295
- $el.parent().find( '.ai1ec-scroll-up' ).removeClass( 'ai1ec-disabled' );
296
- }
297
- }
298
-
299
- /**
300
- * Mouse button held down on a scroll button.
301
- */
302
- function scroll_hold( $el, func ) {
303
- $el.delay( 100 ).queue( function( next ) {
304
- func( $el );
305
- scroll_hold( $el, func );
306
- next();
307
- } );
308
- }
309
- /**
310
- * Mouse button let go of a scroll button.
311
- */
312
- function scroll_cancel() {
313
- $( this ).clearQueue();
314
- }
315
-
316
- /**
317
- * Register mousedown action. Trigger once right away, then again
318
- * after 600 ms delay, then again every 100 ms while held down.
319
- */
320
- function register_mousedown( $button, func ) {
321
- $button.mousedown( function( e ) {
322
- if( e.button == 0 ) {
323
- func( $( this ) ); // Scroll once
324
- $( this )
325
- .delay( 600 )
326
- .queue( function( next ) {
327
- func( $( this ) ); // Scroll again after 600 ms
328
- scroll_hold( $( this ), func ); // Scroll repeatedly
329
- next();
330
- } );
331
- }
332
- } );
333
- }
334
-
335
- // Scroll up button, and register mousedown
336
- $scroll_up = $( '<a href="#" class="ai1ec-scroll-up ai1ec-disabled"></a>' )
337
- register_mousedown( $scroll_up, scroll_up );
338
-
339
- // Scroll down button, and register mousedown
340
- $scroll_down = $( '<a href="#" class="ai1ec-scroll-down"></a>' );
341
- register_mousedown( $scroll_down, scroll_down );
342
-
343
- // Register scroll cancel events
344
- $scroll_up.add( $scroll_down )
345
- .mouseup( function ( e ) {
346
- if( e.button == 0 )
347
- $( this ).each( scroll_cancel );
348
- } )
349
- .mouseout( scroll_cancel )
350
- .click( function() { return false } );
351
-
352
- // Attach scroll buttons to date DIV
353
- $events
354
- .first().before( $scroll_up ).end()
355
- .last().after( $scroll_down ).end()
356
- .filter( ':gt(' + max_visible + ')' ).addClass( 'ai1ec-obscured' );
357
- }
358
- } );
359
- }
360
- }
361
-
362
- // *** Agenda view ***
363
-
364
- /**
365
- * Callbacks for event expansion, collapse.
366
- */
367
- function expand_event() {
368
- $( this ) // ...-click block
369
- .hide()
370
- .parent() // event block
371
- .addClass( 'ai1ec-expanded' )
372
- .end()
373
- .prev() // summary block
374
- .show()
375
- .find( '.ai1ec-event-description' ) // description block
376
- .hide()
377
- .slideDown( 'fast' );
378
- }
379
- function collapse_event() {
380
- $(this) // inner ...-click block
381
- .next() // description block
382
- .slideUp( 'fast', function() {
383
- $(this).parent() // summary block
384
- .parent() // event block
385
- .removeClass( 'ai1ec-expanded' )
386
- .end()
387
- .hide() // summary block again
388
- .next() // original ...-click block
389
- .show();
390
- }
391
- );
392
- }
393
-
394
- // Register click handlers for event title
395
- $('.ai1ec-agenda-view .ai1ec-event > .ai1ec-event-click')
396
- .live( 'click', expand_event );
397
- $('.ai1ec-agenda-view .ai1ec-event-summary > .ai1ec-event-click')
398
- .live( 'click', collapse_event );
399
-
400
- // Register click handlers for expand/collapse all buttons
401
- $('.ai1ec-action-agenda #ai1ec-expand-all').live( 'click', function() {
402
- $('.ai1ec-event > .ai1ec-event-click:visible').click();
403
- } );
404
- $('.ai1ec-action-agenda #ai1ec-collapse-all').live( 'click', function() {
405
- $('.ai1ec-event-summary > .ai1ec-event-click:visible').click();
406
- } );
407
-
408
- // *** All views ***
409
-
410
- // ========================
411
- // = Category/tag filters =
412
- // ========================
413
-
414
- element_selector(
415
- '.ai1ec-category-filter-selector li',
416
- 'ai1ec-selected',
417
- 'ai1ec-categories',
418
- '#ai1ec-selected-categories' );
419
- element_selector(
420
- '.ai1ec-tag-filter-selector li',
421
- 'ai1ec-selected',
422
- 'ai1ec-tags',
423
- '#ai1ec-selected-tags' );
424
-
425
- // ==================================
426
- // = Category/tag filtering actions =
427
- // ==================================
428
-
429
- /**
430
- * Checks if the date element in Agenda view contains visible events
431
- */
432
- function has_visible_events( $el ) {
433
- var ret = false;
434
- $el.find( 'ol.ai1ec-date-events li.ai1ec-event' ).each( function() {
435
- if( $( this ).css( 'display' ) != 'none' ) ret = true;
436
- });
437
- return ret;
438
- }
439
-
440
- /**
441
- * Applies the active category/tag filters to the current view.
442
- * (Shows/hides events as necessary.)
443
- */
444
- function apply_filters()
445
- {
446
- // Submit the selected term IDs via AJAX and filter the visible list of
447
- // post IDs. Only include filter selectors that have a selection.
448
- var selected_ids = new Array();
449
-
450
- selected_cats =
451
- $('.ai1ec-filters-container .ai1ec-dropdown.ai1ec-selected + #ai1ec-selected-categories').val();
452
- if( selected_cats ) {
453
- selected_ids.push( selected_cats );
454
- selected_cats = '&ai1ec_cat_ids=' + selected_cats;
455
- } else {
456
- selected_cats = '';
457
- }
458
-
459
- selected_tags =
460
- $('.ai1ec-filters-container .ai1ec-dropdown.ai1ec-selected + #ai1ec-selected-tags').val();
461
- if( selected_tags ) {
462
- selected_ids.push( selected_tags );
463
- selected_tags = '&ai1ec_tag_ids=' + selected_tags;
464
- } else {
465
- selected_tags = '';
466
- }
467
-
468
- selected_ids = selected_ids.join();
469
-
470
- // Modify export URL
471
- var export_url = ai1ec_convert_entities( ai1ec_calendar.export_url );
472
- if( selected_ids.length ) {
473
- export_url += selected_cats + selected_tags;
474
- $( '.ai1ec-subscribe-filtered' ).fadeIn( 'fast' );
475
- } else {
476
- $( '.ai1ec-subscribe-filtered' ).fadeOut( 'fast' );
477
- }
478
- $( '.ai1ec-subscribe' ).attr( 'href', export_url );
479
- $( '.ai1ec-subscribe-google' ).attr( 'href',
480
- 'http://www.google.com/calendar/render?cid=' + escape( export_url.replace( 'webcal://', 'http://' ) ) );
481
-
482
- var query = {
483
- 'action': 'ai1ec_term_filter',
484
- 'ai1ec_post_ids': post_ids,
485
- 'ai1ec_term_ids': selected_ids
486
- };
487
-
488
- // Delay loading animation so that it doesn't appear if the AJAX turnover
489
- // is quick enough
490
- var $loading = $('#ai1ec-calendar-view-loading')
491
- .delay( 500 )
492
- .fadeIn( 'fast' );
493
- var $view = $('#ai1ec-calendar-view')
494
- .delay( 500 )
495
- .fadeTo( 'fast', 0.3 );
496
-
497
- $.post( ai1ec_calendar.ajaxurl, query, function( data )
498
- {
499
- // Cancel loading animation or fade out if faded in.
500
- $loading.clearQueue().fadeOut( 'fast' );
501
- $view.clearQueue().fadeTo( 'fast', 1.0 );
502
-
503
- // Show events that should be displayed (or leave them visible)
504
- var jq_selector = new Array(); // Build our jQuery selector string
505
- $.each( data.matching_ids, function( i, val ) {
506
- jq_selector.push( '.ai1ec-event-id-' + val );
507
- } );
508
- $( jq_selector.join() ).css( 'display', 'block' );
509
-
510
- // Hide events that should be hidden (or leave them hidden)
511
- jq_selector = new Array();
512
- $.each( data.unmatching_ids, function( i, val ) {
513
- jq_selector.push( '.ai1ec-event-id-' + val );
514
- } );
515
- $( jq_selector.join() ).css( 'display', 'none' );
516
-
517
- // Agenda view only: Slide up dates for which there are no events, and
518
- // slide down those for which there are
519
- $( 'ol.ai1ec-agenda-view > li.ai1ec-date' ).each( function() {
520
- if( has_visible_events( $( this ) ) ) $( this ).slideDown( 'fast' );
521
- else $( this ).slideUp( 'fast' );
522
- } );
523
-
524
- // Month view only: Trim down date boxes for which there are too many
525
- // listed events.
526
- truncate_month_view();
527
- },
528
- 'json'
529
- );
530
- }
531
-
532
- /**
533
- * Updates the filter dropdowns and clear button based on whether filters
534
- * are selected.
535
- */
536
- function update_filter_selectors() {
537
- // Highlight this dropdown as "selected" if and only if any of its terms
538
- // have been selected.
539
- $( '.ai1ec-filter-selector-container' ).each( function() {
540
- if( $( 'li.ai1ec-selected', this ).length ) {
541
- $( '.ai1ec-dropdown', this ).addClass( 'ai1ec-selected' );
542
- } else {
543
- $( '.ai1ec-dropdown', this ).removeClass( 'ai1ec-selected' );
544
- }
545
- } );
546
-
547
- if( $('.ai1ec-filters-container .ai1ec-selected').length )
548
- $('.ai1ec-clear-filters').fadeIn( 'fast' );
549
- else
550
- $('.ai1ec-clear-filters').fadeOut( 'fast' );
551
-
552
- apply_filters();
553
- }
554
-
555
- $('.ai1ec-filter-selector li').click( update_filter_selectors );
556
-
557
- $('.ai1ec-clear-filters').click( function() {
558
- $('.ai1ec-filter-selector-container li').removeClass( 'ai1ec-selected' );
559
- update_filter_selectors();
560
- } );
561
-
562
- /**
563
- * function initialize_view
564
- *
565
- * General initialization function to execute whenever any view is loaded
566
- * (this is also called at the end of load_view()).
567
- */
568
- function initialize_view()
569
- {
570
- // Cache the current list of post IDs
571
- post_ids = new Array();
572
- $( '.ai1ec-post-id' ).each( function() {
573
- post_ids.push( this.value );
574
- } );
575
- post_ids = post_ids.join(); // Store IDs as comma-separated values
576
-
577
- // Make week view table scrollable
578
- $( 'table.ai1ec-week-view-original' ).tableScroll( { height: 400, containerClass: 'ai1ec-week-view' } );
579
- $( 'table.ai1ec-1day-view-original' ).tableScroll( { height: 400, containerClass: 'ai1ec-1day-view' } );
580
-
581
- // ===========================
582
- // = Pop up the active event =
583
- // ===========================
584
- if( $( '.ai1ec-active-event:first' ).length ) {
585
- // Pop up any active event in month/week view views
586
- $( '.ai1ec-month-view .ai1ec-active-event:first, .ai1ec-1day-view .ai1ec-active-event:first, .ai1ec-week-view .ai1ec-active-event:first' )
587
- .each( function() {
588
- $(this)
589
- .each( show_popup )
590
- .prev() // .ai1ec-popup
591
- .data( 'ai1ec_mouseinside', true ); // To keep pop-up from vanishing
592
- } );
593
- // Expand any active event in agenda view
594
- $( '.ai1ec-agenda-view .ai1ec-active-event:first > .ai1ec-event-click' ).each( expand_event );
595
- // Bring the active event into focus
596
- $.scrollTo( '.ai1ec-active-event:first', 1000,
597
- {
598
- offset: {
599
- left: 0,
600
- top: -window.innerHeight / 2 + 100
601
- }
602
- }
603
- );
604
- }
605
- else if( $( '.ai1ec-week-view' ).length || $( '.ai1ec-1day-view' ).length ) {
606
- // If no active event, then in week view, scroll down to 6am.
607
- $( '.ai1ec-1day-view .tablescroll_wrapper, .ai1ec-week-view .tablescroll_wrapper' ).scrollTo( '.ai1ec-hour-marker:eq(6)' );
608
- }
609
-
610
- // Apply category/tag filters if any; hide all events by default, then fade
611
- // in filtered ones.
612
- if( $('.ai1ec-dropdown.ai1ec-selected').length ) {
613
- $('.ai1ec-month-view .ai1ec-event-container, .ai1ec-1day-view .ai1ec-event-container, .ai1ec-week-view .ai1ec-event-container, .ai1ec-agenda-view .ai1ec-event').hide();
614
- apply_filters();
615
- } else {
616
- // Else do month view trimming
617
- truncate_month_view();
618
- }
619
- }
620
-
621
- // If there are preselected tag/cat IDs, update the filter UI
622
- if( $('#ai1ec-selected-categories').val() != '' ||
623
- $('#ai1ec-selected-tags').val() != '' )
624
- update_filter_selectors();
625
- initialize_view();
626
-
627
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Used to ensure that entities used in L10N strings are correct.
3
+ */
4
+ function ai1ec_convert_entities( o ) {
5
+ var c, v;
6
+
7
+ c = function( s ) {
8
+ if( /&[^;]+;/.test( s ) ) {
9
+ var e = document.createElement( 'div' );
10
+ e.innerHTML = s;
11
+ return ! e.firstChild ? s : e.firstChild.nodeValue;
12
+ }
13
+ return s;
14
+ }
15
+
16
+ if( typeof o === 'string' ) {
17
+ return c( o );
18
+ } else if( typeof o === 'object' ) {
19
+ for( v in o ) {
20
+ if( typeof o[v] === 'string' ) {
21
+ o[v] = c( o[v] );
22
+ }
23
+ }
24
+ }
25
+ return o;
26
+ }
27
+
28
+ /**
29
+ * Get the URL withouth the hash portion.
30
+ */
31
+ function get_hashless_url() {
32
+ // Get the full url.
33
+ var url = window.location.href;
34
+ // Get the hash.
35
+ var hash = window.location.hash;
36
+ // If the hash is present, use that, otherwise use the full length
37
+ var index_of_hash = url.indexOf( hash ) || url.length;
38
+ // Cut off the hash.
39
+ var hashless_url = url.substr( 0, index_of_hash );
40
+ return hashless_url;
41
+ }
42
+
43
+ jQuery( document ).ready( function( $ ) {
44
+
45
+ // =====================================
46
+ // = Calendar CSS selector replacement =
47
+ // =====================================
48
+
49
+ if( ai1ec_calendar.selector != undefined && ai1ec_calendar.selector != '' &&
50
+ $( ai1ec_calendar.selector ).length == 1 )
51
+ {
52
+ // Try to find an <h#> element containing the title
53
+ var $title = $( ":header:contains(" + ai1ec_calendar.title + "):first" );
54
+ // If none found, create one
55
+ if( ! $title.length ) {
56
+ $title = $( '<h1 class="page-title"></h1>' );
57
+ $title.text( ai1ec_calendar.title ); // Do it this way to automatically generate HTML entities
58
+ }
59
+
60
+ var $calendar = $( '#ai1ec-container' )
61
+ .detach()
62
+ .before( $title );
63
+
64
+ $( ai1ec_calendar.selector )
65
+ .empty()
66
+ .append( $calendar )
67
+ .hide()
68
+ .css( 'visibility', 'visible' )
69
+ .fadeIn( 'fast' );
70
+ }
71
+
72
+ // =================================
73
+ // = General script initialization =
74
+ // =================================
75
+
76
+ // Variable storing currently displayed view
77
+ var current_hash = '';
78
+ // An array caching the IDs of all event posts in the currently active view
79
+ var post_ids;
80
+
81
+ // Check whether appropriate classes have been added to <body> (some themes
82
+ // don't respect the WP body_class() function). If not, add them, or our app
83
+ // won't function properly.
84
+ var classes = $('body').attr( 'class' );
85
+ if( classes == undefined ) classes = '';
86
+ if( classes.match( /\s?\bai1ec-[\w-]+\b/ ) == null ) {
87
+ // Add action body class(es)
88
+ classes += ' ' + ai1ec_calendar.body_class;
89
+ $('body').attr( 'class', classes );
90
+ }
91
+
92
+ /**
93
+ * Function used to update view if user has clicked back/forward in the
94
+ * browser.
95
+ */
96
+ function check_hash() {
97
+ var live_hash = document.location.hash;
98
+ var default_hash = ai1ec_convert_entities( ai1ec_calendar.default_hash );
99
+ // If current_hash doesn't match live hash, and the document's live hash
100
+ // isn't empty, or if it is, the current_hash isn't equivalent to empty
101
+ // (i.e., default hash), the page needs to be updated.
102
+ if( current_hash != live_hash &&
103
+ ( live_hash != '' || current_hash != default_hash ) ) {
104
+ // If hash is empty, resort to original requested action
105
+ var hash = live_hash;
106
+ if( ! hash )
107
+ hash = default_hash;
108
+ load_view( hash );
109
+ }
110
+ }
111
+
112
+ // Monitor browser navigation between different URL #hash values
113
+ setInterval( check_hash, 300 );
114
+
115
+ /**
116
+ * Load a calendar view represented by the given hash value.
117
+ */
118
+ function load_view( hash ) {
119
+
120
+ // Reveal loader behind view
121
+ $('#ai1ec-calendar-view-loading').fadeIn( 'fast' );
122
+ $('#ai1ec-calendar-view').fadeTo( 'fast', 0.3,
123
+ // After loader is visible, fetch new content
124
+ function() {
125
+ var query = hash.substring( 1 );
126
+
127
+ // Fetch AJAX result
128
+ $.post( ai1ec_calendar.ajaxurl, query, function( data )
129
+ {
130
+ // Replace action body class with new one
131
+ var classes = $('body').attr( 'class' );
132
+ classes = classes.replace( /\s?\bai1ec-[\w-]+\b/g, '' );
133
+ classes += ' ' + data.body_class;
134
+ $('body').attr( 'class', classes );
135
+
136
+ // Animate vertical height of container between HTML replacement
137
+ var $container = $('#ai1ec-calendar-view-container');
138
+ $container.height( $container.height() );
139
+ var new_height =
140
+ $('#ai1ec-calendar-view')
141
+ .html( data.html )
142
+ .height();
143
+ $container.animate( { height: new_height }, { complete: function() {
144
+ // Restore height to automatic upon animation completion for
145
+ // proper page layout.
146
+ $container.height( 'auto' );
147
+ } } );
148
+
149
+ // Hide loader
150
+ $('#ai1ec-calendar-view-loading').fadeOut( 'fast' );
151
+ $('#ai1ec-calendar-view').fadeTo( 'fast', 1.0 );
152
+
153
+ // Do any general view initialization after loading
154
+ initialize_view();
155
+ },
156
+ 'json'
157
+ );
158
+ } );
159
+
160
+ // Update stored hash
161
+ current_hash = hash;
162
+ }
163
+
164
+ /**
165
+ * Show print button in Agenda view, hide otherwise. This is called at the end
166
+ * of initialize_view();
167
+ */
168
+ function toggle_print_button() {
169
+ $('#ai1ec-print-button').toggle( $( '.ai1ec-agenda-view' ).length != 0 );
170
+ }
171
+
172
+ // Register navigation click handlers
173
+ $('a.ai1ec-load-view').live( 'click', function() {
174
+ // Load requested view
175
+ load_view( $(this).attr( 'href' ) );
176
+ } );
177
+ // Handle the click on the print.
178
+ $('#ai1ec-print-button').click( function( e ) {
179
+ e.preventDefault();
180
+ // Get the url withouth the hash.
181
+ var hashless_url = get_hashless_url();
182
+ // Add the extra parameter in the url, this will trigger the loading of the print CSS.
183
+ var url = hashless_url + "&print=true" + window.location.hash;
184
+ // Open a new page.
185
+ window.open( url, 'Print page' );
186
+
187
+ } )
188
+
189
+ // *** Month/week views ***
190
+
191
+ var popup_zIndex = 999;
192
+
193
+ /**
194
+ * Callback for mouseenter event on .ai1ec-event element
195
+ */
196
+ function show_popup() {
197
+ var $popup = $(this).prev();
198
+ $popup.removeClass( 'ai1ec-event-popup-allround' );
199
+
200
+ if ( $( this.parentNode ).is( '.ai1ec-multiday' ) ) {
201
+ var className = '.' + this.parentNode.className.replace( ' ai1ec-multiday-bar', '' ).replace( /\s+/igm, '.' );
202
+ var bars = $( className );
203
+
204
+ bars.each( function( i ) {
205
+ var $p = $( '.ai1ec-event-popup', bars[i] );
206
+ if ( $popup[0] != $p[0] ) {
207
+ $p.addClass( "ai1ec-event-popup-allround" )
208
+ .css( 'visibility', 'visible' )
209
+ .fadeIn( 100);
210
+ }
211
+ });
212
+ }
213
+
214
+ // If not already done, position popup so that it does not exceed
215
+ // right/left bounds of container.
216
+ if( ! $popup.data( 'ai1ec_offset' ) ) {
217
+ // Keep popup hidden but positionable
218
+ $popup.css( 'visibility', 'hidden' ).show();
219
+
220
+ var $container = $('#ai1ec-calendar-view-container');
221
+ var popup_width = $popup.width();
222
+ var popup_offset = $popup.offset();
223
+ var container_offset = $container.offset();
224
+ var container_x2 = container_offset.left + $container.width();
225
+ var $summary = $( '.ai1ec-event-summary', $popup );
226
+
227
+ // Respect right-side bounds
228
+ if( popup_offset.left + popup_width > container_x2 )
229
+ $popup.offset( { left: container_x2 - popup_width, top: popup_offset.top } );
230
+
231
+ // Respect left-side bounds
232
+ if( $summary.offset().left < container_offset.left )
233
+ $popup.addClass( 'ai1ec-shifted-right' );
234
+
235
+ /* From Alex - find out if we still need this:
236
+ if ( $( this.parentNode ).hasClass("ai1ec-multiday") &&
237
+ $summary.offset().left + $summary.width() > container_x2) {
238
+ $popup.removeClass( 'ai1ec-shifted-right' );
239
+ }
240
+ */
241
+
242
+ // Restore popup to 'display: none'.
243
+ $popup.hide().css( 'visibility', 'visible' );
244
+ // Flag the object so we don't calculate twice.
245
+ $popup.data( 'ai1ec_offset', true );
246
+ }
247
+
248
+ // Display popup.
249
+ $popup
250
+ .css({ 'z-index': ++popup_zIndex })
251
+ .fadeIn( 100,
252
+ // Don't handle special case in touch environment (unneeded, interferes)
253
+ Modernizr.touch
254
+ ? null
255
+ : function() {
256
+ // Special case - check if the mouse cursor is still in the pop-up.
257
+ if( ! $(this).data( 'ai1ec_mouseinside' ) ) {
258
+ $(this).each( hide_popup );
259
+ }
260
+ }
261
+ );
262
+
263
+ // If in touch environment, hide any previously popped up events (required
264
+ // since we don't use mouseleave event for this in touch environments) and
265
+ // then return false from "click" handler to prevent following of link.
266
+ if( Modernizr.touch ) {
267
+ $('.ai1ec-month-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup')
268
+ .not( $popup )
269
+ .fadeOut( 100, function() { $(this).parent().css( { zIndex: 'auto' } ); } );
270
+ return false;
271
+ }
272
+ }
273
+ function hide_popup() {
274
+ var className = '.' + this.parentNode.className.replace( ' ai1ec-multiday-bar', '' ).replace( /\s+/igm, '.' );
275
+ var bars = $( className + ' .ai1ec-event-popup' );
276
+ $(bars)
277
+ .fadeOut( 100, function() { $(this).parent().css( { zIndex: 'auto' } ); } )
278
+ .data( 'ai1ec_mouseinside', false );
279
+ }
280
+
281
+ // Register popup click (for touch devices) or hover (for non-touch devices)
282
+ // handlers for month/week views
283
+ $('.ai1ec-month-view .ai1ec-event, .ai1ec-oneday-view .ai1ec-event, .ai1ec-week-view .ai1ec-event')
284
+ .live( Modernizr.touch ? 'click' : 'mouseenter', show_popup );
285
+ // Only hide popups on mouseleave for mouse-based devices (doesn't work
286
+ // properly in touch-based devices for some reason).
287
+ if( ! Modernizr.touch ) {
288
+ $('.ai1ec-month-view .ai1ec-event-popup, .ai1ec-oneday-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup')
289
+ .live( 'mouseleave', hide_popup )
290
+ .live( 'mousemove', function() {
291
+ // Track whether popup contains mouse cursor
292
+ $(this).data( 'ai1ec_mouseinside', true );
293
+ } );
294
+ }
295
+ // Hide any popups that were visible when the window lost focus
296
+ if( $('.ai1ec-month-view, .ai1ec-oneday-view, .ai1ec-week-view').length ) {
297
+ $(window).blur( function() {
298
+ $('.ai1ec-event-popup:visible').each( hide_popup );
299
+ } );
300
+ }
301
+
302
+ // ======================================
303
+ // = Week / Day view hover-raise effect =
304
+ // ======================================
305
+ $( '.ai1ec-oneday-view .ai1ec-oneday a.ai1ec-event-container, .ai1ec-week-view .ai1ec-week a.ai1ec-event-container' )
306
+ .live( 'mouseenter',
307
+ function() {
308
+ $(this).delay( 500 ).queue( function() { $(this).css( 'z-index', 5 ) } );
309
+ } )
310
+ .live( 'mouseleave',
311
+ function() {
312
+ $(this).clearQueue().css( 'z-index', 'auto' );
313
+ } );
314
+
315
+ /**
316
+ * Trims date boxes for which there are too many listed events.
317
+ */
318
+ function truncate_month_view()
319
+ {
320
+ if( $( '.ai1ec-month-view' ).length )
321
+ {
322
+ // First undo any previous truncation
323
+ revert_dropdowns();
324
+
325
+ // Now set up truncation on any days with max visible events.
326
+ $( '.ai1ec-month-view .ai1ec-day' ).each( function()
327
+ {
328
+ var max_visible = 5;
329
+ var maxVisibleHeight = 5 * 16;
330
+ var addDropdownContainer = -1;
331
+ var $events = $( '.ai1ec-event-container:visible', this );
332
+
333
+ $events.each( function( i ) {
334
+ if ( this.offsetTop >= maxVisibleHeight && addDropdownContainer == -1 ) {
335
+ addDropdownContainer = ( i > 1 ? i - 1 : 0 );
336
+ }
337
+
338
+ });
339
+
340
+ if ( addDropdownContainer != -1 ) {
341
+ var container = document.createElement("div");
342
+ container.className = "ai1ec-event-dropdown";
343
+
344
+ $( container ).css({
345
+ top: $events[addDropdownContainer].offsetTop,
346
+ display: "none"
347
+ });
348
+ for ( var i = addDropdownContainer; i < $events.length; i++ ) {
349
+ // Need to reset styles for events in dropdown.
350
+ revert_multiday_bar( $events[i] )
351
+
352
+ // Add an arrow for multiday events.
353
+ if ( $( $events[i] ).hasClass( "ai1ec-multiday" ) ) {
354
+ $( $events[i] ).append( create_multiday_arrow( 1, $events[i].style.backgroundColor ) );
355
+ }
356
+ $( container ).append( $events[i] );
357
+ }
358
+
359
+ // Scroll down button, and register mousedown.
360
+ $scroll_down = $( '<a href="#" class="ai1ec-scroll-down"></a>' );
361
+ $scroll_down.bind( 'hover click', function () {
362
+ $( container ).fadeIn( 100 );
363
+ return false;
364
+ });
365
+
366
+ var $date = $( this ).find( ".ai1ec-date" );
367
+ if ( parseInt( $date.css( "marginBottom" ) ) > maxVisibleHeight ) {
368
+ $date.css({ marginBottom: maxVisibleHeight - 15 + "px" });
369
+ $( container ).css({
370
+ top: maxVisibleHeight + "px"
371
+ })
372
+ }
373
+ $( this ).append(container);
374
+ $( this ).append($scroll_down);
375
+
376
+ // Need additional button to close dropdown on touch devices
377
+ if ( Modernizr.touch ) {
378
+ // Scroll down button, and register mousedown
379
+ $scroll_up = $( '<a href="#" class="ai1ec-scroll-up"></a>' );
380
+ $scroll_up.bind("click", function () {
381
+ $( container ).fadeOut( 100 );
382
+ return false;
383
+ })
384
+ $( container ).append($scroll_up);
385
+ } else {
386
+ $( container ).bind( 'mouseleave' ,function() {
387
+ $( this ).fadeOut( 100 );
388
+ })
389
+ }
390
+ }
391
+ });
392
+ }
393
+ }
394
+
395
+ // *** Month view ***
396
+
397
+ /**
398
+ * Extends day bars for multiday intervals
399
+ */
400
+ function extend_multiday_events() {
401
+
402
+ // First undo any previous multiday bars
403
+ revert_multiday_events();
404
+
405
+ var $days = $('.ai1ec-day');
406
+ $('.ai1ec-month-view .ai1ec-multiday:visible').each(function() {
407
+ var container = this.parentNode;
408
+
409
+ var elHeight = $(this).outerHeight( true );
410
+ var elWidth = $(container).width() + 1;
411
+
412
+ var $elTitle = $(".ai1ec-event-title", this).first();
413
+
414
+ var endDate = this.getAttribute("end-date");
415
+ var endDay = endDate.split(/ /)[2];
416
+ var endMonthYear = endDate.substr(0, endDate.lastIndexOf(" "));
417
+
418
+ var $startEl = $(".ai1ec-date", container);
419
+ var startDay = $startEl.html();
420
+
421
+ var nextMonthBar = false;
422
+ if (endMonthYear != $(".ai1ec-calendar-title").html()) {
423
+ endDay = $(".ai1ec-date", $days[$days.length-1]).html();
424
+ nextMonthBar = true;
425
+ }
426
+
427
+ var $evtContainer = $(this);
428
+ var bgColor = $( '.ai1ec-event', $evtContainer )[0].style.backgroundColor;
429
+ var curLine = 0;
430
+ var deltaDays = endDay - startDay + 1;
431
+ var daysLeft = deltaDays;
432
+ var lineWidth = 0;
433
+
434
+ $(this).css("width", 0);
435
+
436
+ $days.each( function(i) {
437
+ var $dayEl = $( ".ai1ec-date", this );
438
+ var $td = $( this.parentNode );
439
+ cellNum = $td.index();
440
+
441
+ if ( parseInt( $dayEl.html() ) >= startDay &&
442
+ parseInt( $dayEl.html() ) <= endDay ) {
443
+
444
+ if ( parseInt( $dayEl.html() ) == startDay ) {
445
+ marginSize = parseInt( $dayEl.css("marginBottom") ) + 16;
446
+ }
447
+ if ( cellNum != 0 ) {
448
+ lineWidth = $td.offset().left + $td.width() - $(container).offset().left;
449
+ } else {
450
+ if ( parseInt( $dayEl.html() ) > startDay && daysLeft != 0 ) {
451
+ var $block = $evtContainer.clone(false);
452
+ $dayEl.parent().append($block);
453
+
454
+ $block.addClass("ai1ec-multiday-bar");
455
+
456
+ $block
457
+ .css({
458
+ position: "absolute",
459
+ left: '1px',
460
+ top: parseInt($dayEl.css("marginBottom")) + 13, // line height is 16px - 3px of initial margin
461
+ backgroundColor: bgColor
462
+ });
463
+
464
+ var j = ( daysLeft > 7 ? i + 7 - 1 : i + daysLeft - 1 );
465
+ var w = ( $( $days[j] ).offset().left + $( $days[j] ).width() - $($days[j].parentNode.parentNode).offset().left);
466
+
467
+ $block.css( "width", w - 1 );
468
+
469
+ if ( daysLeft > 1 ) {
470
+ $block.append( create_multiday_arrow( 1, bgColor ));
471
+ }
472
+
473
+ $block.append( create_multiday_arrow( 2, bgColor ));
474
+ curLine++;
475
+ }
476
+ }
477
+
478
+ // Keep constant margin (number of bars) during the first row.
479
+ if ( curLine == 0 ) {
480
+ $dayEl.css({ "marginBottom": marginSize + "px" });
481
+ // But need to reset it and append margins from the begining for
482
+ // subsequent weeks.
483
+ } else {
484
+ $dayEl.css({ "marginBottom": "+=16px" });
485
+ }
486
+ // Adding "start arrow" to the end of multi-month bars.
487
+ if ( nextMonthBar ) {
488
+ $evtContainer.append( create_multiday_arrow( 1, bgColor ));
489
+ }
490
+ daysLeft--;
491
+ }
492
+ });
493
+ $(this).css({
494
+ position: "absolute",
495
+ top: $startEl.outerHeight( true ) - elHeight - 1 + "px",
496
+ left: '1px',
497
+ width: lineWidth + "px"
498
+ });
499
+ // Add an arrow to the initial bar for multi-week events.
500
+ if ( curLine > 0 ) {
501
+ $(this).append( create_multiday_arrow( 1, bgColor ) );
502
+ }
503
+ })
504
+ }
505
+
506
+ /**
507
+ * Creates arrow for multiday bars.
508
+ */
509
+ function create_multiday_arrow( type, color ) {
510
+ var $arrow = $( '<div class="ai1ec-multiday-arrow' + type + '"></div>' );
511
+ if ( type == 1 ) {
512
+ $arrow.css({ borderLeftColor: color });
513
+ } else {
514
+ $arrow.css({ borderTopColor: color, borderRightColor: color, borderBottomColor: color });
515
+ }
516
+ return $arrow;
517
+ }
518
+
519
+
520
+ /**
521
+ * Reverts styling added for multiday bars. Needed to apply filters.
522
+ */
523
+ function revert_multiday_events() {
524
+ $(".ai1ec-month-view .ai1ec-date").each(function() {
525
+ $(this).css({ marginBottom: "1px" });
526
+ });
527
+
528
+ $('.ai1ec-month-view .ai1ec-multiday-bar').remove();
529
+ $('.ai1ec-month-view .ai1ec-multiday-arrow1').remove();
530
+ $('.ai1ec-month-view .ai1ec-multiday-arrow2').remove();
531
+
532
+ $('.ai1ec-month-view .ai1ec-multiday').each( function () {
533
+ revert_multiday_bar(this);
534
+ });
535
+ }
536
+
537
+ function revert_multiday_bar(bar) {
538
+ $( bar ).css({
539
+ position: "relative",
540
+ left: "auto",
541
+ top: "auto",
542
+ width: "auto"
543
+ })
544
+ var weekBarsClassName = "."+bar.className.replace(/\s+/igm, ".") + ".ai1ec-multiday-bar"
545
+ $(weekBarsClassName).remove();
546
+
547
+ $( '.ai1ec-multiday-arrow1, ai1ec-multiday-arrow2', bar ).remove();
548
+ }
549
+
550
+ /**
551
+ * Reverts dropdowns added to day cells. Needed to apply filters.
552
+ */
553
+ function revert_dropdowns() {
554
+ $(".ai1ec-month-view .ai1ec-event-dropdown").each( function() {
555
+ var container = this.parentNode;
556
+ $(this).find(".ai1ec-event-container").each( function () {
557
+ container.appendChild(this);
558
+ })
559
+ });
560
+ $(".ai1ec-month-view .ai1ec-event-dropdown").remove();
561
+ $(".ai1ec-month-view .ai1ec-scroll-down").remove();
562
+ }
563
+
564
+ // *** Agenda view ***
565
+
566
+ /**
567
+ * Callbacks for event expansion, collapse.
568
+ */
569
+ function expand_event() {
570
+ $( this ) // ...-click block
571
+ .hide()
572
+ .parent() // event block
573
+ .addClass( 'ai1ec-expanded' )
574
+ .end()
575
+ .prev() // summary block
576
+ .show()
577
+ .find( '.ai1ec-event-description' ) // description block
578
+ .hide()
579
+ .slideDown( 'fast' );
580
+ }
581
+ function collapse_event() {
582
+ $(this) // inner ...-click block
583
+ .next() // description block
584
+ .slideUp( 'fast', function() {
585
+ $(this).parent() // summary block
586
+ .parent() // event block
587
+ .removeClass( 'ai1ec-expanded' )
588
+ .end()
589
+ .hide() // summary block again
590
+ .next() // original ...-click block
591
+ .show();
592
+ }
593
+ );
594
+ }
595
+
596
+ // Register click handlers for event title
597
+ $('.ai1ec-agenda-view .ai1ec-event > .ai1ec-event-click')
598
+ .live( 'click', expand_event );
599
+ $('.ai1ec-agenda-view .ai1ec-event-summary > .ai1ec-event-click')
600
+ .live( 'click', collapse_event );
601
+
602
+ // Register click handlers for expand/collapse all buttons
603
+ $('.ai1ec-action-agenda #ai1ec-expand-all').live( 'click', function() {
604
+ $('.ai1ec-event > .ai1ec-event-click:visible').click();
605
+ } );
606
+ $('.ai1ec-action-agenda #ai1ec-collapse-all').live( 'click', function() {
607
+ $('.ai1ec-event-summary > .ai1ec-event-click:visible').click();
608
+ } );
609
+
610
+ // *** All views ***
611
+
612
+ // ========================
613
+ // = Category/tag filters =
614
+ // ========================
615
+
616
+ element_selector(
617
+ '.ai1ec-category-filter-selector li',
618
+ 'ai1ec-selected',
619
+ 'ai1ec-categories',
620
+ '#ai1ec-selected-categories' );
621
+ element_selector(
622
+ '.ai1ec-tag-filter-selector li',
623
+ 'ai1ec-selected',
624
+ 'ai1ec-tags',
625
+ '#ai1ec-selected-tags' );
626
+
627
+ // ==================================
628
+ // = Category/tag filtering actions =
629
+ // ==================================
630
+
631
+ /**
632
+ * Checks if the date element in Agenda view contains visible events
633
+ */
634
+ function has_visible_events( $el ) {
635
+ var ret = false;
636
+ $el.find( 'ol.ai1ec-date-events li.ai1ec-event' ).each( function() {
637
+ if( $( this ).css( 'display' ) != 'none' ) ret = true;
638
+ });
639
+ return ret;
640
+ }
641
+
642
+ /**
643
+ * Applies the active category/tag filters to the current view.
644
+ * (Shows/hides events as necessary.)
645
+ */
646
+ function apply_filters() {
647
+ // Submit the selected term IDs via AJAX and filter the visible list of
648
+ // post IDs. Only include filter selectors that have a selection.
649
+ var selected_ids = new Array();
650
+
651
+ selected_cats =
652
+ $('.ai1ec-filters-container .ai1ec-dropdown.active + #ai1ec-selected-categories').val();
653
+ if( selected_cats ) {
654
+ selected_ids.push( selected_cats );
655
+ selected_cats = '&ai1ec_cat_ids=' + selected_cats;
656
+ } else {
657
+ selected_cats = '';
658
+ }
659
+
660
+ selected_tags =
661
+ $('.ai1ec-filters-container .ai1ec-dropdown.active + #ai1ec-selected-tags').val();
662
+ if( selected_tags ) {
663
+ selected_ids.push( selected_tags );
664
+ selected_tags = '&ai1ec_tag_ids=' + selected_tags;
665
+ } else {
666
+ selected_tags = '';
667
+ }
668
+
669
+ selected_ids = selected_ids.join();
670
+
671
+ // Modify export URL
672
+ var export_url = ai1ec_convert_entities( ai1ec_calendar.export_url );
673
+ if( selected_ids.length ) {
674
+ export_url += selected_cats + selected_tags;
675
+ $( '.ai1ec-subscribe-filtered' ).fadeIn( 'fast' );
676
+ } else {
677
+ $( '.ai1ec-subscribe-filtered' ).fadeOut( 'fast' );
678
+ }
679
+ $( '.ai1ec-subscribe' ).attr( 'href', export_url );
680
+ $( '.ai1ec-subscribe-google' ).attr( 'href',
681
+ 'http://www.google.com/calendar/render?cid=' + escape( export_url.replace( 'webcal://', 'http://' ) ) );
682
+
683
+ var query = {
684
+ 'action': 'ai1ec_term_filter',
685
+ 'ai1ec_post_ids': post_ids,
686
+ 'ai1ec_term_ids': selected_ids
687
+ };
688
+
689
+ // Delay loading animation so that it doesn't appear if the AJAX turnover
690
+ // is quick enough
691
+ var $loading = $('#ai1ec-calendar-view-loading')
692
+ .delay( 500 )
693
+ .fadeIn( 'fast' );
694
+ var $view = $('#ai1ec-calendar-view')
695
+ .delay( 500 )
696
+ .fadeTo( 'fast', 0.3 );
697
+
698
+ $.post( ai1ec_calendar.ajaxurl, query,
699
+ function( data ) {
700
+ // Cancel loading animation or fade out if faded in.
701
+ $loading.clearQueue().fadeOut( 'fast' );
702
+ $view.clearQueue().fadeTo( 'fast', 1.0 );
703
+
704
+ // Show events that should be displayed (or leave them visible).
705
+ var jq_selector = []; // Build our jQuery selector string.
706
+ $.each( data.matching_ids, function( i, val ) {
707
+ jq_selector.push( '#ai1ec-calendar-view .ai1ec-event-id-' + val );
708
+ } );
709
+ $( jq_selector.join() ).css( 'display', 'block' );
710
+
711
+ // Hide events that should be hidden (or leave them hidden).
712
+ jq_selector = []; // Build our jQuery selector string.
713
+ $.each( data.unmatching_ids, function( i, val ) {
714
+ jq_selector.push( '#ai1ec-calendar-view .ai1ec-event-id-' + val );
715
+ } );
716
+ $( jq_selector.join() ).css( 'display', 'none' );
717
+
718
+ // Agenda view only: Slide up dates for which there are no events, and
719
+ // slide down those for which there are
720
+ $( 'ol.ai1ec-agenda-view > li.ai1ec-date' ).each( function() {
721
+ if( has_visible_events( $(this) ) ) {
722
+ $( this ).slideDown( 'fast' );
723
+ }
724
+ else {
725
+ $( this ).slideUp( 'fast' );
726
+ }
727
+ } );
728
+
729
+ // If there are multiday events in this view, stretch them out.
730
+ if ( $('.ai1ec-month-view .ai1ec-multiday').length ) {
731
+ extend_multiday_events();
732
+ }
733
+ },
734
+ 'json'
735
+ );
736
+ }
737
+
738
+ /**
739
+ * Updates the filter dropdowns and clear button based on whether filters
740
+ * are selected.
741
+ */
742
+ function update_filter_selectors() {
743
+ // Highlight this dropdown as "selected" if and only if any of its terms
744
+ // have been selected.
745
+ $( '.ai1ec-filter-selector-container' ).each( function() {
746
+ if( $( 'li.ai1ec-selected', this ).length ) {
747
+ $( '.ai1ec-dropdown', this ).addClass( 'active btn-info' );
748
+ }
749
+ else {
750
+ $( '.ai1ec-dropdown', this ).removeClass( 'active btn-info' );
751
+ }
752
+ } );
753
+
754
+ if( $('.ai1ec-filters-container .ai1ec-selected').length ) {
755
+ $('.ai1ec-clear-filters').fadeIn( 'fast' );
756
+ }
757
+ else {
758
+ $('.ai1ec-clear-filters').fadeOut( 'fast' );
759
+ }
760
+
761
+ apply_filters();
762
+ }
763
+
764
+ $('.ai1ec-filter-selector li').click( update_filter_selectors );
765
+
766
+ $('.ai1ec-clear-filters').click( function() {
767
+ $('.ai1ec-filter-selector-container li').removeClass( 'ai1ec-selected' );
768
+ update_filter_selectors();
769
+ } );
770
+
771
+ /**
772
+ * function initialize_view
773
+ *
774
+ * General initialization function to execute whenever any view is loaded
775
+ * (this is also called at the end of load_view()).
776
+ */
777
+ function initialize_view() {
778
+ // Make current view actively selected in view dropdown button.
779
+ var classes = $('body').attr( 'class' ).split( ' ' );
780
+ for ( i in classes ) {
781
+ // Extract current view from the body class.
782
+ var matches = /ai1ec-action-([\w]+)/.exec( classes[i] );
783
+ if ( matches != null ) break;
784
+ }
785
+ // Get the dropdown menu link of the active view.
786
+ var $selected_view = $( '#ai1ec-view-' + matches[1] );
787
+ // Replace contents of dropdown button with menu link, plus the caret.
788
+ $( '#ai1ec-current-view' )
789
+ .contents()
790
+ .remove()
791
+ .end()
792
+ .prepend( $selected_view.contents().clone() )
793
+ .append( '<span class="caret"></span>' );
794
+ // Deactivate all dropdown menu items.
795
+ $( '#ai1ec-view-dropdown .dropdown-menu li' ).removeClass( 'active' );
796
+ // Activate only currently selected dropdown menu item.
797
+ $selected_view.parent().addClass( 'active' );
798
+
799
+ // Cache the current list of post IDs
800
+ post_ids = new Array();
801
+ $( '.ai1ec-post-id' ).each( function() {
802
+ post_ids.push( this.value );
803
+ } );
804
+ post_ids = post_ids.join(); // Store IDs as comma-separated values
805
+
806
+ // Make week view table scrollable
807
+ $( 'table.ai1ec-week-view-original' ).tableScroll( { height: 400, containerClass: 'ai1ec-week-view' } );
808
+ $( 'table.ai1ec-oneday-view-original' ).tableScroll( { height: 400, containerClass: 'ai1ec-oneday-view' } );
809
+
810
+ // ===========================
811
+ // = Pop up the active event =
812
+ // ===========================
813
+ if( $( '.ai1ec-active-event:first' ).length ) {
814
+ // Pop up any active event in month/week view views
815
+ $( '.ai1ec-month-view .ai1ec-active-event:first, .ai1ec-oneday-view .ai1ec-active-event:first, .ai1ec-week-view .ai1ec-active-event:first' )
816
+ .each( function() {
817
+ $(this)
818
+ .each( show_popup )
819
+ .prev() // .ai1ec-popup
820
+ .data( 'ai1ec_mouseinside', true ); // To keep pop-up from vanishing
821
+ } );
822
+ // Expand any active event in agenda view
823
+ $( '.ai1ec-agenda-view .ai1ec-active-event:first > .ai1ec-event-click' ).each( expand_event );
824
+ // Bring the active event into focus
825
+ $.scrollTo( '.ai1ec-active-event:first', 1000,
826
+ {
827
+ offset: {
828
+ left: 0,
829
+ top: -window.innerHeight / 2 + 100
830
+ }
831
+ }
832
+ );
833
+ }
834
+ else if( $( '.ai1ec-week-view' ).length || $( '.ai1ec-oneday-view' ).length ) {
835
+ // If no active event, then in week view, scroll down to 6am.
836
+ $( '.ai1ec-oneday-view .tablescroll_wrapper, .ai1ec-week-view .tablescroll_wrapper' ).scrollTo( '.ai1ec-hour-marker:eq(6)' );
837
+ }
838
+
839
+ // Apply category/tag filters if any; hide all events by default, then fade
840
+ // in filtered ones.
841
+ if( $('.ai1ec-dropdown.active').length ) {
842
+ $('.ai1ec-month-view .ai1ec-event-container, .ai1ec-oneday-view .ai1ec-event-container, .ai1ec-week-view .ai1ec-event-container, .ai1ec-agenda-view .ai1ec-event').hide();
843
+ apply_filters();
844
+ }
845
+
846
+ // If in month view, extend multiday events.
847
+ if ( $('.ai1ec-month-view .ai1ec-multiday').length ) {
848
+ extend_multiday_events();
849
+ }
850
+
851
+ // Hide the print button if the current view is not supported for printing.
852
+ toggle_print_button();
853
+ }
854
+
855
+ // If there are preselected tag/cat IDs, update the filter UI.
856
+ if( $('#ai1ec-selected-categories').val() != '' ||
857
+ $('#ai1ec-selected-tags').val() != '' )
858
+ update_filter_selectors();
859
+ initialize_view();
860
+ } );
themes-ai1ec/vortex/js/calendar.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function ai1ec_convert_entities(a){var b,c;b=function(a){if(/&[^;]+;/.test(a)){var b=document.createElement("div");return b.innerHTML=a,b.firstChild?b.firstChild.nodeValue:a}return a};if(typeof a=="string")return b(a);if(typeof a=="object")for(c in a)typeof a[c]=="string"&&(a[c]=b(a[c]));return a}function get_hashless_url(){var a=window.location.href,b=window.location.hash,c=a.indexOf(b)||a.length,d=a.substr(0,c);return d}jQuery(document).ready(function(a){function g(){var a=document.location.hash,b=ai1ec_convert_entities(ai1ec_calendar.default_hash);if(d!=a&&(a!=""||d!=b)){var c=a;c||(c=b),h(c)}}function h(b){a("#ai1ec-calendar-view-loading").fadeIn("fast"),a("#ai1ec-calendar-view").fadeTo("fast",.3,function(){var c=b.substring(1);a.post(ai1ec_calendar.ajaxurl,c,function(b){var c=a("body").attr("class");c=c.replace(/\s?\bai1ec-[\w-]+\b/g,""),c+=" "+b.body_class,a("body").attr("class",c);var d=a("#ai1ec-calendar-view-container");d.height(d.height());var e=a("#ai1ec-calendar-view").html(b.html).height();d.animate({height:e},{complete:function(){d.height("auto")}}),a("#ai1ec-calendar-view-loading").fadeOut("fast"),a("#ai1ec-calendar-view").fadeTo("fast",1),y()},"json")}),d=b}function j(){a("#ai1ec-print-button").toggle(a(".ai1ec-agenda-view").length!=0)}function l(){var b=a(this).prev();b.removeClass("ai1ec-event-popup-allround");if(a(this.parentNode).is(".ai1ec-multiday")){var c="."+this.parentNode.className.replace(" ai1ec-multiday-bar","").replace(/\s+/igm,"."),d=a(c);d.each(function(c){var e=a(".ai1ec-event-popup",d[c]);b[0]!=e[0]&&e.addClass("ai1ec-event-popup-allround").css("visibility","visible").fadeIn(100)})}if(!b.data("ai1ec_offset")){b.css("visibility","hidden").show();var e=a("#ai1ec-calendar-view-container"),f=b.width(),g=b.offset(),h=e.offset(),i=h.left+e.width(),j=a(".ai1ec-event-summary",b);g.left+f>i&&b.offset({left:i-f,top:g.top}),j.offset().left<h.left&&b.addClass("ai1ec-shifted-right"),b.hide().css("visibility","visible"),b.data("ai1ec_offset",!0)}b.css({"z-index":++k}).fadeIn(100,Modernizr.touch?null:function(){a(this).data("ai1ec_mouseinside")||a(this).each(m)});if(Modernizr.touch)return a(".ai1ec-month-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup").not(b).fadeOut(100,function(){a(this).parent().css({zIndex:"auto"})}),!1}function m(){var b="."+this.parentNode.className.replace(" ai1ec-multiday-bar","").replace(/\s+/igm,"."),c=a(b+" .ai1ec-event-popup");a(c).fadeOut(100,function(){a(this).parent().css({zIndex:"auto"})}).data("ai1ec_mouseinside",!1)}function n(){a(".ai1ec-month-view").length&&(s(),a(".ai1ec-month-view .ai1ec-day").each(function(){var b=5,c=80,d=-1,e=a(".ai1ec-event-container:visible",this);e.each(function(a){this.offsetTop>=c&&d==-1&&(d=a>1?a-1:0)});if(d!=-1){var f=document.createElement("div");f.className="ai1ec-event-dropdown",a(f).css({top:e[d].offsetTop,display:"none"});for(var g=d;g<e.length;g++)r(e[g]),a(e[g]).hasClass("ai1ec-multiday")&&a(e[g]).append(p(1,e[g].style.backgroundColor)),a(f).append(e[g]);$scroll_down=a('<a href="#" class="ai1ec-scroll-down"></a>'),$scroll_down.bind("hover click",function(){return a(f).fadeIn(100),!1});var h=a(this).find(".ai1ec-date");parseInt(h.css("marginBottom"))>c&&(h.css({marginBottom:c-15+"px"}),a(f).css({top:c+"px"})),a(this).append(f),a(this).append($scroll_down),Modernizr.touch?($scroll_up=a('<a href="#" class="ai1ec-scroll-up"></a>'),$scroll_up.bind("click",function(){return a(f).fadeOut(100),!1}),a(f).append($scroll_up)):a(f).bind("mouseleave",function(){a(this).fadeOut(100)})}}))}function o(){q();var b=a(".ai1ec-day");a(".ai1ec-month-view .ai1ec-multiday:visible").each(function(){var c=this.parentNode,d=a(this).outerHeight(!0),e=a(c).width()+1,f=a(".ai1ec-event-title",this).first(),g=this.getAttribute("end-date"),h=g.split(/ /)[2],i=g.substr(0,g.lastIndexOf(" ")),j=a(".ai1ec-date",c),k=j.html(),l=!1;i!=a(".ai1ec-calendar-title").html()&&(h=a(".ai1ec-date",b[b.length-1]).html(),l=!0);var m=a(this),n=a(".ai1ec-event",m)[0].style.backgroundColor,o=0,q=h-k+1,r=q,s=0;a(this).css("width",0),b.each(function(d){var e=a(".ai1ec-date",this),f=a(this.parentNode);cellNum=f.index();if(parseInt(e.html())>=k&&parseInt(e.html())<=h){parseInt(e.html())==k&&(marginSize=parseInt(e.css("marginBottom"))+16);if(cellNum!=0)s=f.offset().left+f.width()-a(c).offset().left;else if(parseInt(e.html())>k&&r!=0){var g=m.clone(!1);e.parent().append(g),g.addClass("ai1ec-multiday-bar"),g.css({position:"absolute",left:"1px",top:parseInt(e.css("marginBottom"))+13,backgroundColor:n});var i=r>7?d+7-1:d+r-1,j=a(b[i]).offset().left+a(b[i]).width()-a(b[i].parentNode.parentNode).offset().left;g.css("width",j-1),r>1&&g.append(p(1,n)),g.append(p(2,n)),o++}o==0?e.css({marginBottom:marginSize+"px"}):e.css({marginBottom:"+=16px"}),l&&m.append(p(1,n)),r--}}),a(this).css({position:"absolute",top:j.outerHeight(!0)-d-1+"px",left:"1px",width:s+"px"}),o>0&&a(this).append(p(1,n))})}function p(b,c){var d=a('<div class="ai1ec-multiday-arrow'+b+'"></div>');return b==1?d.css({borderLeftColor:c}):d.css({borderTopColor:c,borderRightColor:c,borderBottomColor:c}),d}function q(){a(".ai1ec-month-view .ai1ec-date").each(function(){a(this).css({marginBottom:"1px"})}),a(".ai1ec-month-view .ai1ec-multiday-bar").remove(),a(".ai1ec-month-view .ai1ec-multiday-arrow1").remove(),a(".ai1ec-month-view .ai1ec-multiday-arrow2").remove(),a(".ai1ec-month-view .ai1ec-multiday").each(function(){r(this)})}function r(b){a(b).css({position:"relative",left:"auto",top:"auto",width:"auto"});var c="."+b.className.replace(/\s+/igm,".")+".ai1ec-multiday-bar";a(c).remove(),a(".ai1ec-multiday-arrow1, ai1ec-multiday-arrow2",b).remove()}function s(){a(".ai1ec-month-view .ai1ec-event-dropdown").each(function(){var b=this.parentNode;a(this).find(".ai1ec-event-container").each(function(){b.appendChild(this)})}),a(".ai1ec-month-view .ai1ec-event-dropdown").remove(),a(".ai1ec-month-view .ai1ec-scroll-down").remove()}function t(){a(this).hide().parent().addClass("ai1ec-expanded").end().prev().show().find(".ai1ec-event-description").hide().slideDown("fast")}function u(){a(this).next().slideUp("fast",function(){a(this).parent().parent().removeClass("ai1ec-expanded").end().hide().next().show()})}function v(b){var c=!1;return b.find("ol.ai1ec-date-events li.ai1ec-event").each(function(){a(this).css("display")!="none"&&(c=!0)}),c}function w(){var b=new Array;selected_cats=a(".ai1ec-filters-container .ai1ec-dropdown.active + #ai1ec-selected-categories").val(),selected_cats?(b.push(selected_cats),selected_cats="&ai1ec_cat_ids="+selected_cats):selected_cats="",selected_tags=a(".ai1ec-filters-container .ai1ec-dropdown.active + #ai1ec-selected-tags").val(),selected_tags?(b.push(selected_tags),selected_tags="&ai1ec_tag_ids="+selected_tags):selected_tags="",b=b.join();var c=ai1ec_convert_entities(ai1ec_calendar.export_url);b.length?(c+=selected_cats+selected_tags,a(".ai1ec-subscribe-filtered").fadeIn("fast")):a(".ai1ec-subscribe-filtered").fadeOut("fast"),a(".ai1ec-subscribe").attr("href",c),a(".ai1ec-subscribe-google").attr("href","http://www.google.com/calendar/render?cid="+escape(c.replace("webcal://","http://")));var d={action:"ai1ec_term_filter",ai1ec_post_ids:e,ai1ec_term_ids:b},f=a("#ai1ec-calendar-view-loading").delay(500).fadeIn("fast"),g=a("#ai1ec-calendar-view").delay(500).fadeTo("fast",.3);a.post(ai1ec_calendar.ajaxurl,d,function(b){f.clearQueue().fadeOut("fast"),g.clearQueue().fadeTo("fast",1);var c=[];a.each(b.matching_ids,function(a,b){c.push("#ai1ec-calendar-view .ai1ec-event-id-"+b)}),a(c.join()).css("display","block"),c=[],a.each(b.unmatching_ids,function(a,b){c.push("#ai1ec-calendar-view .ai1ec-event-id-"+b)}),a(c.join()).css("display","none"),a("ol.ai1ec-agenda-view > li.ai1ec-date").each(function(){v(a(this))?a(this).slideDown("fast"):a(this).slideUp("fast")}),a(".ai1ec-month-view .ai1ec-multiday").length&&o()},"json")}function x(){a(".ai1ec-filter-selector-container").each(function(){a("li.ai1ec-selected",this).length?a(".ai1ec-dropdown",this).addClass("active btn-info"):a(".ai1ec-dropdown",this).removeClass("active btn-info")}),a(".ai1ec-filters-container .ai1ec-selected").length?a(".ai1ec-clear-filters").fadeIn("fast"):a(".ai1ec-clear-filters").fadeOut("fast"),w()}function y(){var b=a("body").attr("class").split(" ");for(i in b){var c=/ai1ec-action-([\w]+)/.exec(b[i]);if(c!=null)break}var d=a("#ai1ec-view-"+c[1]);a("#ai1ec-current-view").contents().remove().end().prepend(d.contents().clone()).append('<span class="caret"></span>'),a("#ai1ec-view-dropdown .dropdown-menu li").removeClass("active"),d.parent().addClass("active"),e=new Array,a(".ai1ec-post-id").each(function(){e.push(this.value)}),e=e.join(),a("table.ai1ec-week-view-original").tableScroll({height:400,containerClass:"ai1ec-week-view"}),a("table.ai1ec-oneday-view-original").tableScroll({height:400,containerClass:"ai1ec-oneday-view"}),a(".ai1ec-active-event:first").length?(a(".ai1ec-month-view .ai1ec-active-event:first, .ai1ec-oneday-view .ai1ec-active-event:first, .ai1ec-week-view .ai1ec-active-event:first").each(function(){a(this).each(l).prev().data("ai1ec_mouseinside",!0)}),a(".ai1ec-agenda-view .ai1ec-active-event:first > .ai1ec-event-click").each(t),a.scrollTo(".ai1ec-active-event:first",1e3,{offset:{left:0,top:-window.innerHeight/2+100}})):(a(".ai1ec-week-view").length||a(".ai1ec-oneday-view").length)&&a(".ai1ec-oneday-view .tablescroll_wrapper, .ai1ec-week-view .tablescroll_wrapper").scrollTo(".ai1ec-hour-marker:eq(6)"),a(".ai1ec-dropdown.active").length&&(a(".ai1ec-month-view .ai1ec-event-container, .ai1ec-oneday-view .ai1ec-event-container, .ai1ec-week-view .ai1ec-event-container, .ai1ec-agenda-view .ai1ec-event").hide(),w()),a(".ai1ec-month-view .ai1ec-multiday").length&&o(),j()}if(ai1ec_calendar.selector!=undefined&&ai1ec_calendar.selector!=""&&a(ai1ec_calendar.selector).length==1){var b=a(":header:contains("+ai1ec_calendar.title+"):first");b.length||(b=a('<h1 class="page-title"></h1>'),b.text(ai1ec_calendar.title));var c=a("#ai1ec-container").detach().before(b);a(ai1ec_calendar.selector).empty().append(c).hide().css("visibility","visible").fadeIn("fast")}var d="",e,f=a("body").attr("class");f==undefined&&(f=""),f.match(/\s?\bai1ec-[\w-]+\b/)==null&&(f+=" "+ai1ec_calendar.body_class,a("body").attr("class",f)),setInterval(g,300),a("a.ai1ec-load-view").live("click",function(){h(a(this).attr("href"))}),a("#ai1ec-print-button").click(function(a){a.preventDefault();var b=get_hashless_url(),c=b+"&print=true"+window.location.hash;window.open(c,"Print page")});var k=999;a(".ai1ec-month-view .ai1ec-event, .ai1ec-oneday-view .ai1ec-event, .ai1ec-week-view .ai1ec-event").live(Modernizr.touch?"click":"mouseenter",l),Modernizr.touch||a(".ai1ec-month-view .ai1ec-event-popup, .ai1ec-oneday-view .ai1ec-event-popup, .ai1ec-week-view .ai1ec-event-popup").live("mouseleave",m).live("mousemove",function(){a(this).data("ai1ec_mouseinside",!0)}),a(".ai1ec-month-view, .ai1ec-oneday-view, .ai1ec-week-view").length&&a(window).blur(function(){a(".ai1ec-event-popup:visible").each(m)}),a(".ai1ec-oneday-view .ai1ec-oneday a.ai1ec-event-container, .ai1ec-week-view .ai1ec-week a.ai1ec-event-container").live("mouseenter",function(){a(this).delay(500).queue(function(){a(this).css("z-index",5)})}).live("mouseleave",function(){a(this).clearQueue().css("z-index","auto")}),a(".ai1ec-agenda-view .ai1ec-event > .ai1ec-event-click").live("click",t),a(".ai1ec-agenda-view .ai1ec-event-summary > .ai1ec-event-click").live("click",u),a(".ai1ec-action-agenda #ai1ec-expand-all").live("click",function(){a(".ai1ec-event > .ai1ec-event-click:visible").click()}),a(".ai1ec-action-agenda #ai1ec-collapse-all").live("click",function(){a(".ai1ec-event-summary > .ai1ec-event-click:visible").click()}),element_selector(".ai1ec-category-filter-selector li","ai1ec-selected","ai1ec-categories","#ai1ec-selected-categories"),element_selector(".ai1ec-tag-filter-selector li","ai1ec-selected","ai1ec-tags","#ai1ec-selected-tags"),a(".ai1ec-filter-selector li").click(x),a(".ai1ec-clear-filters").click(function(){a(".ai1ec-filter-selector-container li").removeClass("ai1ec-selected"),x()}),(a("#ai1ec-selected-categories").val()!=""||a("#ai1ec-selected-tags").val()!="")&&x(),y()});
{js → themes-ai1ec/vortex/js}/event.js RENAMED
@@ -13,8 +13,8 @@ function ai1ec_load_map()
13
  var geocoder = new google.maps.Geocoder();
14
 
15
  geocoder.geocode(
16
- {
17
- 'address': document.getElementById( 'ai1ec-gmap-address' ).value,
18
  },
19
  function( results, status ) {
20
  if( status == google.maps.GeocoderStatus.OK ) {
@@ -53,4 +53,4 @@ jQuery( function( $ ) {
53
  map_el.removeClass( 'ai1ec-gmap-container-hidden' );
54
  map_el.fadeIn();
55
  });
56
- });
13
  var geocoder = new google.maps.Geocoder();
14
 
15
  geocoder.geocode(
16
+ {
17
+ 'address': document.getElementById( 'ai1ec-gmap-address' ).value
18
  },
19
  function( results, status ) {
20
  if( status == google.maps.GeocoderStatus.OK ) {
53
  map_el.removeClass( 'ai1ec-gmap-container-hidden' );
54
  map_el.fadeIn();
55
  });
56
+ });
themes-ai1ec/vortex/js/event.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function ai1ec_load_map(){var a={zoom:14,mapTypeId:google.maps.MapTypeId.ROADMAP},b=new google.maps.Map(document.getElementById("ai1ec-gmap-canvas"),a),c=new google.maps.Marker({map:b}),d=new google.maps.Geocoder;d.geocode({address:document.getElementById("ai1ec-gmap-address").value},function(a,d){d==google.maps.GeocoderStatus.OK&&(b.setCenter(a[0].geometry.location),c.setPosition(a[0].geometry.location))})}var orig_onload=window.onload;window.onload=function(){typeof orig_onload=="function"&&orig_onload();if(document.getElementById("ai1ec-gmap-canvas")){var a=document.createElement("script");a.type="text/javascript",a.src="http://maps.google.com/maps/api/js?sensor=false&callback=ai1ec_load_map&language="+ai1ec_event.language,document.body.appendChild(a)}},jQuery(function(a){a(".ai1ec-gmap-placeholder:first").click(function(){var b=a(".ai1ec-gmap-container-hidden:first");a(this).remove(),b.hide(),b.removeClass("ai1ec-gmap-container-hidden"),b.fadeIn()})});
themes-ai1ec/vortex/js/general.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * General JavaScript to be loaded on all pages of a WordPress site on which
5
+ * AI1EC is active.
6
+ */
7
+
8
+ jQuery( function( $ ) {
9
+ $( document ).delegate( '[rel="tooltip"]', 'hover.ai1ec', function() {
10
+ // Don't add tooltips to category colour squares already contained in
11
+ // descriptive category labels.
12
+ if( $( this ).is( '.ai1ec-category .ai1ec-category-color' ) ) {
13
+ return;
14
+ }
15
+ // Only register .tooltip() the first time it is hovered.
16
+ if( ! $( this ).data( 'tooltipped.ai1ec' ) ) {
17
+ $( this )
18
+ .tooltip()
19
+ .tooltip( 'show' )
20
+ .data( 'tooltipped.ai1ec', true );
21
+ }
22
+ } );
23
+ } );
themes-ai1ec/vortex/js/general.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery.fn.dropdown||!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),jQuery.fn.tooltip||!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=(a||"").toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),jQuery(function(a){a(document).delegate('[rel="tooltip"]',"hover.ai1ec",function(){if(a(this).is(".ai1ec-category .ai1ec-category-color"))return;a(this).data("tooltipped.ai1ec")||a(this).tooltip().tooltip("show").data("tooltipped.ai1ec",!0)})});
{js → themes-ai1ec/vortex/js}/jquery.scrollTo-min.js RENAMED
File without changes
{js → themes-ai1ec/vortex/js}/jquery.tablescroll.js RENAMED
File without changes
{js → themes-ai1ec/vortex/js}/modernizr.custom.78720.js RENAMED
File without changes
themes-ai1ec/vortex/less/build-css.sh ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ LESSC="lessc --yui-compress --include-path=."
4
+
5
+ if which -s lessc; then
6
+ $LESSC general.less > ../css/general.css
7
+ $LESSC calendar.less > ../css/calendar.css
8
+ $LESSC event.less > ../css/event.css
9
+ $LESSC print.less > ../css/print.css
10
+ else
11
+ echo 'Error: lessc not found. Install Node.js then: npm install -g less';
12
+ exit 1;
13
+ fi
themes-ai1ec/vortex/less/button-groups.less ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // BUTTON GROUPS
2
+ // -------------
3
+
4
+
5
+ // Make the div behave like a button
6
+ .btn-group {
7
+ position: relative;
8
+ .clearfix(); // clears the floated buttons
9
+ .ie7-restore-left-whitespace();
10
+ }
11
+
12
+ // Space out series of button groups
13
+ .btn-group + .btn-group {
14
+ margin-left: 5px;
15
+ }
16
+
17
+ // Optional: Group multiple button groups together for a toolbar
18
+ .btn-toolbar {
19
+ margin-top: @baseLineHeight / 2;
20
+ margin-bottom: @baseLineHeight / 2;
21
+ .btn-group {
22
+ display: inline-block;
23
+ .ie7-inline-block();
24
+ }
25
+ }
26
+
27
+ // Float them, remove border radius, then re-add to first and last elements
28
+ .btn-group .btn {
29
+ position: relative;
30
+ float: left;
31
+ margin-left: -1px;
32
+ .border-radius(0);
33
+ }
34
+ // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
35
+ .btn-group .btn:first-child {
36
+ margin-left: 0;
37
+ -webkit-border-top-left-radius: 4px;
38
+ -moz-border-radius-topleft: 4px;
39
+ border-top-left-radius: 4px;
40
+ -webkit-border-bottom-left-radius: 4px;
41
+ -moz-border-radius-bottomleft: 4px;
42
+ border-bottom-left-radius: 4px;
43
+ }
44
+ .btn-group .btn:last-child,
45
+ .btn-group .dropdown-toggle {
46
+ -webkit-border-top-right-radius: 4px;
47
+ -moz-border-radius-topright: 4px;
48
+ border-top-right-radius: 4px;
49
+ -webkit-border-bottom-right-radius: 4px;
50
+ -moz-border-radius-bottomright: 4px;
51
+ border-bottom-right-radius: 4px;
52
+ }
53
+ // Reset corners for large buttons
54
+ .btn-group .btn.large:first-child {
55
+ margin-left: 0;
56
+ -webkit-border-top-left-radius: 6px;
57
+ -moz-border-radius-topleft: 6px;
58
+ border-top-left-radius: 6px;
59
+ -webkit-border-bottom-left-radius: 6px;
60
+ -moz-border-radius-bottomleft: 6px;
61
+ border-bottom-left-radius: 6px;
62
+ }
63
+ .btn-group .btn.large:last-child,
64
+ .btn-group .large.dropdown-toggle {
65
+ -webkit-border-top-right-radius: 6px;
66
+ -moz-border-radius-topright: 6px;
67
+ border-top-right-radius: 6px;
68
+ -webkit-border-bottom-right-radius: 6px;
69
+ -moz-border-radius-bottomright: 6px;
70
+ border-bottom-right-radius: 6px;
71
+ }
72
+
73
+ // On hover/focus/active, bring the proper btn to front
74
+ .btn-group .btn:hover,
75
+ .btn-group .btn:focus,
76
+ .btn-group .btn:active,
77
+ .btn-group .btn.active {
78
+ z-index: 2;
79
+ }
80
+
81
+ // On active and open, don't show outline
82
+ .btn-group .dropdown-toggle:active,
83
+ .btn-group.open .dropdown-toggle {
84
+ outline: 0;
85
+ }
86
+
87
+
88
+
89
+ // Split button dropdowns
90
+ // ----------------------
91
+
92
+ // Give the line between buttons some depth
93
+ .btn-group .dropdown-toggle {
94
+ padding-left: 8px;
95
+ padding-right: 8px;
96
+ @shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
97
+ .box-shadow(@shadow);
98
+ *padding-top: 3px;
99
+ *padding-bottom: 3px;
100
+ }
101
+ .btn-group .btn-mini.dropdown-toggle {
102
+ padding-left: 5px;
103
+ padding-right: 5px;
104
+ *padding-top: 1px;
105
+ *padding-bottom: 1px;
106
+ }
107
+ .btn-group .btn-small.dropdown-toggle {
108
+ *padding-top: 4px;
109
+ *padding-bottom: 4px;
110
+ }
111
+ .btn-group .btn-large.dropdown-toggle {
112
+ padding-left: 12px;
113
+ padding-right: 12px;
114
+ }
115
+
116
+ .btn-group.open {
117
+ // IE7's z-index only goes to the nearest positioned ancestor, which would
118
+ // make the menu appear below buttons that appeared later on the page
119
+ *z-index: @zindexDropdown;
120
+
121
+ // Reposition menu on open and round all corners
122
+ .dropdown-menu {
123
+ display: block;
124
+ margin-top: 1px;
125
+ .border-radius(5px);
126
+ }
127
+
128
+ .dropdown-toggle {
129
+ background-image: none;
130
+ @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
131
+ .box-shadow(@shadow);
132
+ }
133
+ }
134
+
135
+ // Reposition the caret
136
+ .btn .caret {
137
+ margin-top: 7px;
138
+ margin-left: 0;
139
+ }
140
+ .btn:hover .caret,
141
+ .open.btn-group .caret {
142
+ .opacity(100);
143
+ }
144
+ // Carets in other button sizes
145
+ .btn-mini .caret {
146
+ margin-top: 5px;
147
+ }
148
+ .btn-small .caret {
149
+ margin-top: 6px;
150
+ }
151
+ .btn-large .caret {
152
+ margin-top: 6px;
153
+ border-left: 5px solid transparent;
154
+ border-right: 5px solid transparent;
155
+ border-top: 5px solid @black;
156
+ }
157
+
158
+
159
+ // Account for other colors
160
+ .btn-primary,
161
+ .btn-warning,
162
+ .btn-danger,
163
+ .btn-info,
164
+ .btn-success,
165
+ .btn-inverse {
166
+ .caret {
167
+ border-top-color: @white;
168
+ border-bottom-color: @white;
169
+ .opacity(75);
170
+ }
171
+ }
172
+
themes-ai1ec/vortex/less/buttons.less ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // BUTTON STYLES
2
+ // -------------
3
+
4
+
5
+ // Base styles
6
+ // --------------------------------------------------
7
+
8
+ // Core
9
+ .btn {
10
+ display: inline-block;
11
+ .ie7-inline-block();
12
+ padding: 4px 10px 4px;
13
+ margin-bottom: 0; // For input.btn
14
+ font-size: @baseFontSize;
15
+ line-height: @baseLineHeight;
16
+ color: @grayDark;
17
+ text-align: center;
18
+ text-shadow: 0 1px 1px rgba(255,255,255,.75);
19
+ vertical-align: middle;
20
+ .buttonBackground(@btnBackground, @btnBackgroundHighlight);
21
+ border: 1px solid @btnBorder;
22
+ border-bottom-color: darken(@btnBorder, 10%);
23
+ .border-radius(4px);
24
+ @shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
25
+ .box-shadow(@shadow);
26
+ cursor: pointer;
27
+
28
+ // Give IE7 some love
29
+ .ie7-restore-left-whitespace();
30
+ }
31
+
32
+ // Hover state
33
+ .btn:hover {
34
+ color: @grayDark;
35
+ text-decoration: none;
36
+ background-color: darken(@white, 10%);
37
+ background-position: 0 -15px;
38
+
39
+ // transition is only when going to hover, otherwise the background
40
+ // behind the gradient (there for IE<=9 fallback) gets mismatched
41
+ .transition(background-position .1s linear);
42
+ }
43
+
44
+ // Focus state for keyboard and accessibility
45
+ .btn:focus {
46
+ .tab-focus();
47
+ }
48
+
49
+ // Active state
50
+ .btn.active,
51
+ .btn:active {
52
+ background-image: none;
53
+ @shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
54
+ .box-shadow(@shadow);
55
+ background-color: darken(@white, 10%);
56
+ background-color: darken(@white, 15%) e("\9");
57
+ outline: 0;
58
+ }
59
+
60
+ // Disabled state
61
+ .btn.disabled,
62
+ .btn[disabled] {
63
+ cursor: default;
64
+ background-image: none;
65
+ background-color: darken(@white, 10%);
66
+ .opacity(65);
67
+ .box-shadow(none);
68
+ }
69
+
70
+
71
+ // Button Sizes
72
+ // --------------------------------------------------
73
+
74
+ // Large
75
+ .btn-large {
76
+ padding: 9px 14px;
77
+ font-size: @baseFontSize + 2px;
78
+ line-height: normal;
79
+ .border-radius(5px);
80
+ }
81
+ .btn-large [class^="icon-"] {
82
+ margin-top: 1px;
83
+ }
84
+
85
+ // Small
86
+ .btn-small {
87
+ padding: 5px 9px;
88
+ font-size: @baseFontSize - 2px;
89
+ line-height: @baseLineHeight - 2px;
90
+ }
91
+ .btn-small [class^="icon-"] {
92
+ margin-top: -1px;
93
+ }
94
+
95
+ // Mini
96
+ .btn-mini {
97
+ padding: 2px 6px;
98
+ font-size: @baseFontSize - 2px;
99
+ line-height: @baseLineHeight - 4px;
100
+ }
101
+
102
+
103
+ // Alternate buttons
104
+ // --------------------------------------------------
105
+
106
+ // Set text color
107
+ // -------------------------
108
+ .btn-primary,
109
+ .btn-primary:hover,
110
+ .btn-warning,
111
+ .btn-warning:hover,
112
+ .btn-danger,
113
+ .btn-danger:hover,
114
+ .btn-success,
115
+ .btn-success:hover,
116
+ .btn-info,
117
+ .btn-info:hover,
118
+ .btn-inverse,
119
+ .btn-inverse:hover {
120
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
121
+ color: @white;
122
+ }
123
+ // Provide *some* extra contrast for those who can get it
124
+ .btn-primary.active,
125
+ .btn-warning.active,
126
+ .btn-danger.active,
127
+ .btn-success.active,
128
+ .btn-info.active,
129
+ .btn-inverse.active {
130
+ color: rgba(255,255,255,.75);
131
+ }
132
+
133
+ // Set the backgrounds
134
+ // -------------------------
135
+ .btn-primary {
136
+ .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
137
+ }
138
+ // Warning appears are orange
139
+ .btn-warning {
140
+ .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
141
+ }
142
+ // Danger and error appear as red
143
+ .btn-danger {
144
+ .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
145
+ }
146
+ // Success appears as green
147
+ .btn-success {
148
+ .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
149
+ }
150
+ // Info appears as a neutral blue
151
+ .btn-info {
152
+ .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
153
+ }
154
+ // Inverse appears as dark gray
155
+ .btn-inverse {
156
+ .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
157
+ }
158
+
159
+
160
+ // Cross-browser Jank
161
+ // --------------------------------------------------
162
+
163
+ button.btn,
164
+ input[type="submit"].btn {
165
+
166
+ // Firefox 3.6 only I believe
167
+ &::-moz-focus-inner {
168
+ padding: 0;
169
+ border: 0;
170
+ }
171
+
172
+ // IE7 has some default padding on button controls
173
+ *padding-top: 2px;
174
+ *padding-bottom: 2px;
175
+ &.btn-large {
176
+ *padding-top: 7px;
177
+ *padding-bottom: 7px;
178
+ }
179
+ &.btn-small {
180
+ *padding-top: 3px;
181
+ *padding-bottom: 3px;
182
+ }
183
+ &.btn-mini {
184
+ *padding-top: 1px;
185
+ *padding-bottom: 1px;
186
+ }
187
+ }
themes-ai1ec/vortex/less/calendar.less ADDED
@@ -0,0 +1,837 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * Used on the full calendar views page only (month, week, day, agenda, etc.).
5
+ */
6
+
7
+ // ======================
8
+ // = Variables & mixins =
9
+ // ======================
10
+ // Based on Bootstrap. Modify variables.less for custom colors, font-sizes, etc.
11
+ @import "variables.less";
12
+ @import "mixins.less";
13
+ @import "mixins-custom.less";
14
+
15
+ // =================
16
+ // = Calendar page =
17
+ // =================
18
+
19
+ // General calendar page container.
20
+ .ai1ec-container {
21
+ clear: both;
22
+ }
23
+
24
+ // Calendar view container.
25
+ #ai1ec-calendar-view-container {
26
+ position: relative;
27
+ clear: both;
28
+ margin-bottom: 0.2em;
29
+ }
30
+ .ai1ec-calendar-toolbar {
31
+ width: 100% !important;
32
+ border: 0 !important;
33
+ margin: 0 !important;
34
+ td {
35
+ background: none !important;
36
+ border: 0 !important;
37
+ padding: 0 !important;
38
+ text-align: center;
39
+ vertical-align: middle;
40
+ white-space: nowrap;
41
+ width: 33%;
42
+ }
43
+ td:last-child {
44
+ text-align: right;
45
+ }
46
+ td:first-child {
47
+ text-align: left;
48
+ }
49
+ }
50
+
51
+ // View dropdown button.
52
+ .thenly #ai1ec-view-dropdown {
53
+ a.btn,
54
+ .dropdown-menu a {
55
+ line-height: 21px;
56
+ }
57
+ a.btn .caret {
58
+ margin-top: 9px;
59
+ }
60
+ a img {
61
+ border: 0 !important;
62
+ padding: 0 !important;
63
+ margin: 0 !important;
64
+ float: none !important;
65
+ position: static !important;
66
+ vertical-align: bottom;
67
+ background: none !important;
68
+ }
69
+ }
70
+
71
+ // View filters.
72
+ .ai1ec-filters-container {
73
+ display: inline-block;
74
+ }
75
+ .ai1ec-filter-selector-container {
76
+ position: relative;
77
+ display: inline-block;
78
+ text-align: left;
79
+ white-space: normal;
80
+ }
81
+ .ai1ec-filter-selector {
82
+ display: none;
83
+ background: @dropdownBackground;
84
+ border: 1px solid @dropdownBorder;
85
+ .border-radius(5px);
86
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
87
+ padding: 0.1em;
88
+ position: absolute;
89
+ overflow: auto;
90
+ max-width: 20em;
91
+ max-height: 30em;
92
+ right: 0;
93
+ top: 100%;
94
+ z-index: 10;
95
+ ul {
96
+ margin: 0 !important;
97
+ padding: 0 !important;
98
+ }
99
+ li {
100
+ list-style: none;
101
+ }
102
+ .ai1ec-category,
103
+ .ai1ec-tag {
104
+ font-size: 8pt !important;
105
+ }
106
+ }
107
+ .ai1ec-filter-selector-container:hover > .ai1ec-filter-selector {
108
+ display: block;
109
+ }
110
+ .ai1ec-clear-filters {
111
+ display: none;
112
+ font-size: 11pt !important;
113
+ font-weight: normal;
114
+ color: @linkColor !important;
115
+ cursor: pointer;
116
+ text-decoration: none !important;
117
+ &:hover {
118
+ color: @linkColorHover !important;
119
+ }
120
+ }
121
+
122
+ // Titles.
123
+ h2.ai1ec-calendar-title {
124
+ float: left;
125
+ font-size: 20px !important;
126
+ line-height: 1.3em !important;
127
+ margin: 0 0.5em 0 0 !important;
128
+ }
129
+
130
+ // Today button hidden on today's date.
131
+ .ai1ec-today #ai1ec-today {
132
+ display: none;
133
+ }
134
+
135
+ // View pagination buttons.
136
+ .ai1ec-action-month .ai1ec-pagination a {
137
+ width: 7em;
138
+ }
139
+ .ai1ec-action-week .ai1ec-pagination a,
140
+ .ai1ec-action-oneday .ai1ec-pagination a {
141
+ width: 8em;
142
+ }
143
+ .ai1ec-action-agenda .ai1ec-pagination a {
144
+ width: 9em;
145
+ }
146
+ #ai1ec-prev-year, #ai1ec-next-year {
147
+ width: 4em;
148
+ }
149
+
150
+ // Month, week, day tables.
151
+ table.ai1ec-month-view,
152
+ .ai1ec-week-view table,
153
+ .ai1ec-oneday-view table {
154
+ border-collapse: collapse;
155
+ border: 1px solid @tableBorder !important;
156
+ margin: 0 !important;
157
+ background: @tableBackground;
158
+ table-layout: fixed !important;
159
+ clear: both;
160
+ width: 100% !important;
161
+ }
162
+ .ai1ec-week-view .tablescroll_wrapper,
163
+ .ai1ec-oneday-view .tablescroll_wrapper {
164
+ position: relative;
165
+ border-bottom: 1px solid @tableBorder;
166
+ }
167
+ table.ai1ec-week-view-original,
168
+ table.ai1ec-oneday-view-original {
169
+ visibility: hidden;
170
+ height: 400px;
171
+ &.tablescroll_body {
172
+ visibility: visible;
173
+ height: auto;
174
+ }
175
+ }
176
+ .ai1ec-week-view,
177
+ .ai1ec-oneday-view {
178
+ table.tablescroll_head,
179
+ table.tablescroll_head th {
180
+ border-bottom: none !important;
181
+ padding: 2.48px !important;
182
+ }
183
+ }
184
+ table.ai1ec-week-view-original,
185
+ table.ai1ec-oneday-view-original {
186
+ &.tablescroll_body,
187
+ &.tablescroll_body tr:first-child td {
188
+ border-top: none !important;
189
+ }
190
+ }
191
+ .ai1ec-month-view,
192
+ .ai1ec-week-view,
193
+ .ai1ec-oneday-view {
194
+ td {
195
+ border: 1px solid @tableBorder !important;
196
+ background: none !important;
197
+ padding: 0 !important;
198
+ text-align: left;
199
+ vertical-align: top;
200
+ }
201
+ th {
202
+ border: none !important;
203
+ background: @tableLabelBackground !important;
204
+ padding: 0.2em !important;
205
+ }
206
+ }
207
+ .ai1ec-month-view td.ai1ec-empty {
208
+ background: @tableLabelBackground !important;
209
+ }
210
+ .ai1ec-month-view th,
211
+ .ai1ec-week-view th,
212
+ .ai1ec-week-view .ai1ec-hour-marker div,
213
+ .ai1ec-week-view .ai1ec-allday-label,
214
+ .ai1ec-oneday-view th,
215
+ .ai1ec-oneday-view .ai1ec-hour-marker div,
216
+ .ai1ec-oneday-view .ai1ec-allday-label {
217
+ color: @tableLabelText !important;
218
+ text-shadow: 0 1px 0 @textEmboss;
219
+ }
220
+ .ai1ec-month-view,
221
+ .ai1ec-oneday-view {
222
+ th {
223
+ text-align: center !important;
224
+ }
225
+ }
226
+ .ai1ec-week-view th {
227
+ text-align: left !important;
228
+ }
229
+ .ai1ec-week-view,
230
+ .ai1ec-oneday-view {
231
+ .ai1ec-day {
232
+ height: 1440px;
233
+ }
234
+ th .ai1ec-weekday-date {
235
+ font-size: 10.5pt !important;
236
+ font-weight: normal !important;
237
+ }
238
+ }
239
+ .ai1ec-week-view th .ai1ec-weekday-day {
240
+ font-size: 9pt !important;
241
+ font-weight: normal !important;
242
+ }
243
+ .ai1ec-month-view .ai1ec-day,
244
+ .ai1ec-week-view .ai1ec-day,
245
+ .ai1ec-week-view .ai1ec-allday-events,
246
+ .ai1ec-oneday-view .ai1ec-day,
247
+ .ai1ec-oneday-view .ai1ec-allday-events {
248
+ position: relative;
249
+ }
250
+ .ai1ec-month-view .ai1ec-day-stretcher {
251
+ float: left;
252
+ height: 94px;
253
+ width: 0;
254
+ }
255
+ .ai1ec-month-view,
256
+ .ai1ec-week-view {
257
+ .ai1ec-today {
258
+ background: @todayColor !important;
259
+ }
260
+ }
261
+ .ai1ec-month-view .ai1ec-date {
262
+ background: @monthViewDateBackground;
263
+ color: mix(@textColor, @monthViewDateBackground, 40%);
264
+ font-size: 10pt;
265
+ line-height: 13px;
266
+ height: 13px;
267
+ margin-bottom: 1px;
268
+ padding: 0 0.4em;
269
+ font-size: 8pt;
270
+ text-align: right;
271
+ text-shadow: 0 1px 0 @textEmboss;
272
+ }
273
+
274
+ // Week/day view time/"now" markers.
275
+ .ai1ec-week-view,
276
+ .ai1ec-oneday-view {
277
+ .ai1ec-grid-container {
278
+ position: absolute;
279
+ top: auto;
280
+ left: 0;
281
+ right: 0;
282
+ }
283
+ .ai1ec-now-marker,
284
+ .ai1ec-hour-marker,
285
+ .ai1ec-quarter-marker {
286
+ position: absolute;
287
+ left: 0;
288
+ right: 0;
289
+ padding-right: 8px;
290
+ }
291
+ .ai1ec-hour-marker {
292
+ border-top: 1px solid @tableBorder;
293
+ border-top: 1px solid fade(@tableBorder, 70%);
294
+ height: 60px;
295
+ background: fade(@tableBorder, 40%) !important;
296
+ &.ai1ec-business-hour {
297
+ background: none !important;
298
+ }
299
+ }
300
+ .ai1ec-hour-marker div,
301
+ .ai1ec-allday-label {
302
+ position: relative;
303
+ z-index: 2;
304
+ margin-left: 1px;
305
+ padding: 0 0.2em;
306
+ font-size: 8pt !important;
307
+ font-weight: normal !important;
308
+ background: @tableLabelBackground;
309
+ float: left;
310
+ .border-radius(0.3em);
311
+ }
312
+ .ai1ec-allday-label {
313
+ margin-top: 1px;
314
+ }
315
+ .ai1ec-quarter-marker {
316
+ border-top: 1px solid @tableBorder;
317
+ border-top: 1px solid fade(@tableBorder, 40%);
318
+ }
319
+ .ai1ec-now-marker {
320
+ border-top: 1px solid @dayViewNowMarkerColor;
321
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
322
+ z-index: 2;
323
+ }
324
+ }
325
+
326
+ // Event summaries in month/week/day view, including popups.
327
+ .ai1ec-month-view,
328
+ .ai1ec-week-view,
329
+ .ai1ec-oneday-view {
330
+ a.ai1ec-event-container {
331
+ border: none !important;
332
+ color: @linkColor !important;
333
+ display: block;
334
+ font-size: 9pt;
335
+ text-decoration: none !important;
336
+ }
337
+ .ai1ec-event {
338
+ .border-radius(0.3em);
339
+ margin: 1px 0 0;
340
+ max-height: 100%;
341
+ overflow: hidden;
342
+ padding: 0 3px 1px;
343
+ white-space: nowrap;
344
+ }
345
+ .ai1ec-allday .ai1ec-event,
346
+ .ai1ec-multiday .ai1ec-event {
347
+ background-color: @linkColor;
348
+ color: @eventStubAllDayText !important;
349
+ }
350
+ .ai1ec-category-colors {
351
+ float: right;
352
+ font-size: 1.2em;
353
+ margin-top: 1px;
354
+ }
355
+ .ai1ec-event-popup,
356
+ .ai1ec-event-summary {
357
+ border: 2px solid @eventBorder;
358
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
359
+ background: @eventBackground;
360
+ }
361
+ .ai1ec-event-popup {
362
+ position: absolute;
363
+ z-index: 5;
364
+ display: none;
365
+ white-space: nowrap;
366
+ color: @eventText !important;
367
+ top: -5px;
368
+ left: -2px;
369
+ min-width: 100%;
370
+ .border-radius(0 0.3em 0.3em 0);
371
+ &.ai1ec-shifted-right {
372
+ .border-radius(0.3em 0 0 0.3em);
373
+ }
374
+ }
375
+ .ai1ec-event-popup-bg {
376
+ position: relative;
377
+ left: -2px;
378
+ margin-right: -1px;
379
+ padding: 2px 2px 2px 5px;
380
+ background: @eventBackground;
381
+ }
382
+ .ai1ec-shifted-right .ai1ec-event-popup-bg {
383
+ left: 1px;
384
+ padding: 2px 5px 2px 2px;
385
+ }
386
+ .ai1ec-event-summary,
387
+ .ai1ec-event-summary p {
388
+ font-size: 0.95em !important;
389
+ }
390
+ .ai1ec-event-summary {
391
+ .border-radius(0.3em 0 0.3em 0.3em);
392
+ color: @eventText;
393
+ #gradient > .vertical-three-colors(@eventBackground, @eventBackground, 1.5em, @eventBackgroundBottom); // !important needed, but not working here with lessc HEAD as of 2012-04-25
394
+ overflow: hidden;
395
+ padding: 2px 4px 3px;
396
+ position: absolute;
397
+ right: 100%;
398
+ top: -2px;
399
+ white-space: normal;
400
+ width: 13em;
401
+ }
402
+ .ai1ec-shifted-right .ai1ec-event-summary {
403
+ left: 100%;
404
+ .border-radius(0 0.3em 0.3em 0.3em);
405
+ }
406
+ .ai1ec-event-summary p {
407
+ margin: 0 0 0.3em !important;
408
+ padding: 0 !important;
409
+ }
410
+ .ai1ec-event-time {
411
+ font-size: 8pt;
412
+ font-weight: bold;
413
+ }
414
+ .ai1ec-read-more {
415
+ text-align: center;
416
+ font-size: 8pt;
417
+ color: mix(@eventText, @eventBackgroundBottom, 50%);
418
+ }
419
+ }
420
+ .ai1ec-month-view,
421
+ .ai1ec-week-view .ai1ec-allday-events,
422
+ .ai1ec-oneday-view .ai1ec-allday-events {
423
+ a.ai1ec-event-container {
424
+ position: relative;
425
+ }
426
+ }
427
+ .ai1ec-oneday-view {
428
+ a.ai1ec-event-container {
429
+ margin-right: 10px;
430
+ }
431
+ }
432
+ .ai1ec-oneday-view .ai1ec-allday-events a.ai1ec-event-container {
433
+ margin: 0 15px 0 50px;
434
+ }
435
+ .ai1ec-week-view .ai1ec-week,
436
+ .ai1ec-oneday-view .ai1ec-oneday {
437
+ a.ai1ec-event-container {
438
+ border: 2px solid mix(@eventDefaultColor, @eventBackground, 30%) !important;
439
+ .border-radius(0.3em);
440
+ .box-shadow(0 3px 6px rgba(0,0,0,0.2));
441
+ .box-sizing(border-box);
442
+ #gradient > .vertical(@eventBackground, mix(@eventDefaultColor, @eventBackground, 30%));
443
+ background-color: @eventBackground;
444
+ position: absolute;
445
+ right: 0;
446
+ }
447
+ }
448
+ .ai1ec-oneday-view .ai1ec-event-popup {
449
+ top: -3px;
450
+ min-width: 0;
451
+ right: 13em;
452
+ }
453
+ .ai1ec-week-view .ai1ec-week .ai1ec-event-popup {
454
+ top: -3px;
455
+ }
456
+ .ai1ec-oneday-view .ai1ec-oneday,
457
+ .ai1ec-week-view .ai1ec-week {
458
+ .ai1ec-event-title {
459
+ display: block;
460
+ white-space: normal;
461
+ font-size: 8pt !important;
462
+ }
463
+ }
464
+
465
+ // Month view multi-day bars and dropdowns.
466
+ .ai1ec-month-view {
467
+ .ai1ec-event {
468
+ height: 14px;
469
+ line-height: 14px;
470
+ margin: 0 0 1px;
471
+ }
472
+ .ai1ec-multiday {
473
+ position: absolute;
474
+ }
475
+ .ai1ec-multiday-arrow1 {
476
+ background: @eventDefaultColor;
477
+ border: 7px solid @bodyBackground;
478
+ border-left-color: @eventDefaultColor;
479
+ border-right-width: 0;
480
+ height: 1px;
481
+ position: absolute;
482
+ right: 0;
483
+ top: 0;
484
+ width: 0;
485
+ }
486
+ .ai1ec-multiday-arrow2 {
487
+ border: 7px solid @eventDefaultColor;
488
+ border-left-color: @bodyBackground;
489
+ border-right-width: 2px;
490
+ height: 1px;
491
+ left: 0;
492
+ position: absolute;
493
+ top: 0;
494
+ width: 0;
495
+ }
496
+ .ai1ec-multiday-bar {
497
+ background: @eventDefaultColor;
498
+ .border-radius(3px);
499
+ height: 15px;
500
+ left: 0;
501
+ position: absolute;
502
+ top: 0;
503
+ .ai1ec-event-title {
504
+ margin-left: 7px;
505
+ }
506
+ .ai1ec-event {
507
+ margin: 0;
508
+ }
509
+ .ai1ec-event-time {
510
+ display: none;
511
+ }
512
+ }
513
+ .ai1ec-event-dropdown {
514
+ background: #FFF;
515
+ border: 1px solid #E7E7E7;
516
+ border-top: 0;
517
+ left: -1px;
518
+ position: absolute;
519
+ top: 78px;
520
+ width: 90px;
521
+ z-index: 1000;
522
+ }
523
+ .ai1ec-obscured {
524
+ display: none !important;
525
+ }
526
+ a.ai1ec-scroll-up,
527
+ a.ai1ec-scroll-down {
528
+ border: 1px solid @tableBorder;
529
+ .border-radius(0.2em);
530
+ .box-sizing(border-box);
531
+ display: block;
532
+ left: 50%;
533
+ height: 16px;
534
+ line-height: 14px;
535
+ margin-left: -8px;
536
+ position: relative;
537
+ text-align: center;
538
+ text-decoration: none !important;
539
+ width: 16px;
540
+ &:hover {
541
+ background-color: @tableBorder;
542
+ }
543
+ &.ai1ec-disabled {
544
+ border: none;
545
+ cursor: default;
546
+ .opacity(20);
547
+ padding: 1px; // To compensate for height lost by invisible border.
548
+ &:hover {
549
+ background-color: transparent;
550
+ }
551
+ }
552
+ }
553
+ .ai1ec-event-popup .ai1ec-event-popup-allround {
554
+ border-radius: 0.3em;
555
+ .ai1ec-event-popup-bg {
556
+ left: 0;
557
+ margin-right: 2px;
558
+ padding: 2px;
559
+ }
560
+ .ai1ec-event-summary {
561
+ display: none;
562
+ }
563
+ }
564
+ }
565
+
566
+ // Truncated events.
567
+ .ai1ec-oneday-view,
568
+ .ai1ec-week-view {
569
+ .ai1ec-start-truncated .ai1ec-event-time {
570
+ display: none;
571
+ }
572
+ }
573
+ .ai1ec-oneday-view .ai1ec-oneday,
574
+ .ai1ec-week-view .ai1ec-week {
575
+ a.ai1ec-event-container {
576
+ &.ai1ec-start-truncated {
577
+ border-top-left-radius: 0;
578
+ border-top-right-radius: 0;
579
+ -moz-border-radius-topleft: 0;
580
+ -moz-border-radius-topright: 0;
581
+ -webkit-border-top-left-radius: 0;
582
+ -webkit-border-top-right-radius: 0;
583
+ }
584
+ &.ai1ec-end-truncated {
585
+ border-bottom-left-radius: 0;
586
+ border-bottom-right-radius: 0;
587
+ -moz-border-radius-bottomleft: 0;
588
+ -moz-border-radius-bottomright: 0;
589
+ -webkit-border-bottom-left-radius: 0;
590
+ -webkit-border-bottom-right-radius: 0;
591
+ }
592
+ }
593
+ .ai1ec-start-truncator,
594
+ .ai1ec-end-truncator {
595
+ position: absolute;
596
+ line-height: 1em;
597
+ font-size: 6pt;
598
+ }
599
+ .ai1ec-start-truncator {
600
+ top: -2px;
601
+ left: -2px;
602
+ }
603
+ .ai1ec-end-truncator {
604
+ bottom: -2px;
605
+ right: -2px;
606
+ }
607
+ }
608
+
609
+ // Agenda view.
610
+ .ai1ec-agenda-view {
611
+ clear: both;
612
+ overflow: hidden;
613
+ margin: 0 !important;
614
+ padding: 0 !important;
615
+ .ai1ec-no-results {
616
+ font-size: 10pt !important;
617
+ font-style: italic;
618
+ }
619
+ .ai1ec-date-events {
620
+ overflow: hidden;
621
+ margin: 0 0.75em 0 0 !important;
622
+ padding: 0 !important;
623
+ }
624
+ > li,
625
+ .ai1ec-date-events > li {
626
+ list-style: none !important;
627
+ }
628
+ .ai1ec-date {
629
+ border-top: 1px solid darken(@agendaDateBackground, 5%);
630
+ #gradient > .vertical-three-colors-replace(@agendaDateBackground, @agendaDateBackground, 1em, fade(@agendaDateBackground, 0%)); // !important needed, but not working here with lessc HEAD as of 2012-04-25
631
+ margin: 0 !important;
632
+ overflow: hidden;
633
+ padding: 0 !important;
634
+ }
635
+ .ai1ec-date.ai1ec-today {
636
+ border-top: 1px solid darken(@agendaTodayBackground, 5%);
637
+ #gradient > .vertical-three-colors-replace(@agendaTodayBackground, @agendaTodayBackground, 1em, fade(@agendaTodayBackground, 0%)); // !important needed, but not working here with lessc HEAD as of 2012-04-25
638
+ }
639
+ h3.ai1ec-date-title {
640
+ border: 2px solid @agendaDateTitleBorder;
641
+ .border-radius(0 0 5px 5px);
642
+ .box-shadow(0 2px 2px rgba(0,0,0,0.08));
643
+ color: mix(@textColor, @agendaDateTitleBackground, 85%);
644
+ float: left;
645
+ font-size: 10pt;
646
+ font-weight: normal;
647
+ #gradient > .vertical-three-colors(@agendaDateTitleBackground, @agendaDateTitleBackground, 1em, darken(@agendaDateTitleBackground, 12%));
648
+ line-height: 1.1em;
649
+ margin: 0 0.75em 0.5em !important;
650
+ text-align: center;
651
+ text-shadow: 0 1px 0 @textEmboss;
652
+ width: 4em;
653
+ }
654
+ .ai1ec-month {
655
+ color: @agendaDateTitleMonthText;
656
+ background: @agendaDateTitleBorder;
657
+ font-size: 0.8em !important;
658
+ letter-spacing: 0.2em;
659
+ padding: 0.1em;
660
+ text-transform: uppercase;
661
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
662
+ }
663
+ .ai1ec-day {
664
+ font-size: 2.2em !important;
665
+ padding: 0.3em 0 0.2em !important;
666
+ }
667
+ .ai1ec-weekday {
668
+ font-size: 0.8em !important;
669
+ line-height: 1.5em;
670
+ }
671
+
672
+ // Agenda view events.
673
+ .ai1ec-event {
674
+ position: relative;
675
+ clear: right;
676
+ overflow: hidden;
677
+ font-size: 10pt;
678
+ text-decoration: none;
679
+ padding: 0.1em 0.3em !important;
680
+ margin: 0.5em 0 !important;
681
+ background: @eventBackground !important;
682
+ border: 1px solid @eventBorder;
683
+ .border-radius(0.5em);
684
+ &.ai1ec-expanded {
685
+ border: 2px solid @eventBorder;
686
+ .box-shadow(1px 5px 8px rgba(0,0,0,0.08));
687
+ }
688
+ .ai1ec-event-click {
689
+ cursor: pointer;
690
+ line-height: 1.4em;
691
+ color: @eventDefaultColor;
692
+ text-shadow: 0 1px 0 @textEmboss;
693
+ &:hover > .ai1ec-event-expand {
694
+ visibility: visible;
695
+ }
696
+ }
697
+ .ai1ec-event-time {
698
+ float: left;
699
+ margin-right: 0.5em;
700
+ min-height: 1em;
701
+ font-weight: bold;
702
+ line-height: 1.4em;
703
+ }
704
+ .ai1ec-event-title {
705
+ margin: 0 0 0 8em;
706
+ font-size: 10pt;
707
+ font-weight: normal;
708
+ }
709
+ &:hover,
710
+ &.ai1ec-expanded:hover {
711
+ border-color: @eventBorderHover;
712
+ }
713
+ &:hover .ai1ec-event-click {
714
+ color: @eventDefaultColorHover;
715
+ }
716
+ &.ai1ec-allday {
717
+ padding: 0 !important;
718
+ .ai1ec-event-click {
719
+ color: @eventStubAllDayText;
720
+ background: @eventDefaultColor;
721
+ padding: 0.1em 0.4em;
722
+ .border-radius(0.3em);
723
+ text-shadow: none;
724
+ }
725
+ .ai1ec-event-time {
726
+ color: @eventStubAllDayText;
727
+ }
728
+ .ai1ec-event-title {
729
+ margin: 0;
730
+ }
731
+ &:hover .ai1ec-event-click {
732
+ color: @eventStubAllDayText;
733
+ background: @eventDefaultColorHover;
734
+ }
735
+ }
736
+ }
737
+ .ai1ec-allday-label {
738
+ font-size: 8pt;
739
+ color: fade(@eventStubAllDayText, 50%);
740
+ padding-left: 0.2em;
741
+ }
742
+ .ai1ec-event-expand {
743
+ float: right;
744
+ margin-left: 0.5em;
745
+ visibility: hidden;
746
+ font-size: 9pt;
747
+ }
748
+ .ai1ec-category-colors {
749
+ float: left;
750
+ font-size: 0.9em;
751
+ margin: 0.2em 0.2em -0.2em -0.1em;
752
+ .ai1ec-category-color {
753
+ padding: 1px;
754
+ }
755
+ }
756
+
757
+ // Agenda view expanded events.
758
+ .ai1ec-event-summary {
759
+ display: none;
760
+ .ai1ec-event-title {
761
+ margin: 0.1em 0;
762
+ font-size: 11pt;
763
+ line-height: 1.1em;
764
+ }
765
+ .ai1ec-event-time {
766
+ width: auto;
767
+ float: none;
768
+ font-size: 9pt;
769
+ line-height: 1.5em;
770
+ }
771
+ .ai1ec-event-click {
772
+ border-bottom: 1px solid @tableBorder;
773
+ margin-bottom: 0.4em;
774
+ padding: 0.5em 0.25em;
775
+ }
776
+ }
777
+ .ai1ec-allday .ai1ec-event-summary .ai1ec-event-click {
778
+ border-bottom: none;
779
+ .border-radius(0.3em 0.3em 0 0);
780
+ padding: 0.4em 0.6em;
781
+ }
782
+ .ai1ec-categories,
783
+ .ai1ec-tags {
784
+ font-size: 8pt;
785
+ }
786
+ .ai1ec-event-description,
787
+ .ai1ec-event-description p {
788
+ font-size: 9pt;
789
+ line-height: 1.5em;
790
+ }
791
+ .ai1ec-event-description {
792
+ clear: both;
793
+ overflow: hidden;
794
+ padding: 0 0.25em 3.6em;
795
+ max-height: 20em;
796
+ p {
797
+ margin: 0.5em 0 0.75em !important;
798
+ padding: 0 !important;
799
+ }
800
+ .ai1ec-label {
801
+ font-size: 8pt;
802
+ }
803
+ }
804
+ .ai1ec-allday .ai1ec-event-description {
805
+ position: relative;
806
+ overflow: hidden;
807
+ padding: 0 0.65em 3.5em;
808
+ }
809
+
810
+ // Agenda event overlay/read more.
811
+ .ai1ec-event-overlay {
812
+ position: absolute;
813
+ z-index: 5;
814
+ bottom: 0;
815
+ left: 0;
816
+ right: 0;
817
+ padding: 0.4em 0.5em;
818
+ .border-radius(0 0 0.5em 0.5em);
819
+ #gradient > .vertical-replace(fade(@eventBackground, 75%), @eventBackgroundBottom);
820
+ }
821
+ .ai1ec-read-more {
822
+ float: right;
823
+ margin: 0.6em 0 0.2em;
824
+ }
825
+ }
826
+
827
+ // Subscribe.
828
+ .ai1ec-subscribe {
829
+ clear: both;
830
+ }
831
+ .ai1ec-subscribe-filtered {
832
+ display: none;
833
+ }
834
+ // print icon
835
+ i.icon-print {
836
+ padding: 0 7px;
837
+ }
themes-ai1ec/vortex/less/dropdowns.less ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // DROPDOWN MENUS
2
+ // --------------
3
+
4
+ // Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
5
+ .dropdown {
6
+ position: relative;
7
+ }
8
+ .dropdown-toggle {
9
+ // The caret makes the toggle a bit too tall in IE7
10
+ *margin-bottom: -3px;
11
+ }
12
+ .dropdown-toggle:active,
13
+ .open .dropdown-toggle {
14
+ outline: 0;
15
+ }
16
+
17
+ // Dropdown arrow/caret
18
+ // --------------------
19
+ .caret {
20
+ display: inline-block;
21
+ width: 0;
22
+ height: 0;
23
+ vertical-align: top;
24
+ border-left: 4px solid transparent;
25
+ border-right: 4px solid transparent;
26
+ border-top: 4px solid @black;
27
+ .opacity(30);
28
+ content: "";
29
+ }
30
+
31
+ // Place the caret
32
+ .dropdown .caret {
33
+ margin-top: 8px;
34
+ margin-left: 2px;
35
+ }
36
+ .dropdown:hover .caret,
37
+ .open.dropdown .caret {
38
+ .opacity(100);
39
+ }
40
+
41
+ // The dropdown menu (ul)
42
+ // ----------------------
43
+ .dropdown-menu {
44
+ position: absolute;
45
+ top: 100%;
46
+ left: 0;
47
+ z-index: @zindexDropdown;
48
+ float: left;
49
+ display: none; // none by default, but block on "open" of the menu
50
+ min-width: 160px;
51
+ padding: 4px 0;
52
+ margin: 0; // override default ul
53
+ list-style: none;
54
+ background-color: @dropdownBackground;
55
+ border-color: #ccc;
56
+ border-color: rgba(0,0,0,.2);
57
+ border-style: solid;
58
+ border-width: 1px;
59
+ .border-radius(0 0 5px 5px);
60
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
61
+ -webkit-background-clip: padding-box;
62
+ -moz-background-clip: padding;
63
+ background-clip: padding-box;
64
+ *border-right-width: 2px;
65
+ *border-bottom-width: 2px;
66
+
67
+ // Aligns the dropdown menu to right
68
+ &.pull-right {
69
+ right: 0;
70
+ left: auto;
71
+ }
72
+
73
+ // Dividers (basically an hr) within the dropdown
74
+ .divider {
75
+ .nav-divider();
76
+ }
77
+
78
+ // Links within the dropdown menu
79
+ a {
80
+ display: block;
81
+ padding: 3px 15px;
82
+ clear: both;
83
+ font-weight: normal;
84
+ line-height: @baseLineHeight;
85
+ color: @dropdownLinkColor;
86
+ white-space: nowrap;
87
+ }
88
+ }
89
+
90
+ // Hover state
91
+ // -----------
92
+ .dropdown-menu li > a:hover,
93
+ .dropdown-menu .active > a,
94
+ .dropdown-menu .active > a:hover {
95
+ color: @dropdownLinkColorHover;
96
+ text-decoration: none;
97
+ background-color: @dropdownLinkBackgroundHover;
98
+ }
99
+
100
+ // Open state for the dropdown
101
+ // ---------------------------
102
+ .dropdown.open {
103
+ // IE7's z-index only goes to the nearest positioned ancestor, which would
104
+ // make the menu appear below buttons that appeared later on the page
105
+ *z-index: @zindexDropdown;
106
+
107
+ .dropdown-toggle {
108
+ color: @white;
109
+ background: #ccc;
110
+ background: rgba(0,0,0,.3);
111
+ }
112
+ .dropdown-menu {
113
+ display: block;
114
+ }
115
+ }
116
+
117
+ // Right aligned dropdowns
118
+ .pull-right .dropdown-menu {
119
+ left: auto;
120
+ right: 0;
121
+ }
122
+
123
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
124
+ // ------------------------------------------------------
125
+ // Just add .dropup after the standard .dropdown class and you're set, bro.
126
+ // TODO: abstract this so that the navbar fixed styles are not placed here?
127
+ .dropup,
128
+ .navbar-fixed-bottom .dropdown {
129
+ // Reverse the caret
130
+ .caret {
131
+ border-top: 0;
132
+ border-bottom: 4px solid @black;
133
+ content: "\2191";
134
+ }
135
+ // Different positioning for bottom up menu
136
+ .dropdown-menu {
137
+ top: auto;
138
+ bottom: 100%;
139
+ margin-bottom: 1px;
140
+ }
141
+ }
142
+
143
+ // Typeahead
144
+ // ---------
145
+ .typeahead {
146
+ margin-top: 2px; // give it some space to breathe
147
+ .border-radius(4px);
148
+ }
themes-ai1ec/vortex/less/event.less ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * Used for single and multiple event pages (not calendar views).
5
+ */
6
+
7
+ // ======================
8
+ // = Variables & mixins =
9
+ // ======================
10
+ // Based on Bootstrap. Modify variables.less for custom colors, font-sizes, etc.
11
+ @import "variables.less";
12
+ @import "mixins.less";
13
+ @import "mixins-custom.less";
14
+
15
+ // ================
16
+ // = Events pages =
17
+ // ================
18
+
19
+ // Event header: General table attributes.
20
+ .ai1ec-full-event {
21
+ border: none !important;
22
+ border-collapse: collapse !important;
23
+ width: 100%;
24
+ margin-bottom: 0.5em !important;
25
+ td {
26
+ font-size: 10pt !important;
27
+ }
28
+ th,
29
+ td {
30
+ line-height: 14pt !important;
31
+ padding: 0.3em 0.5em !important;
32
+ border: none !important;
33
+ vertical-align: top;
34
+ }
35
+ th.ai1ec-empty,
36
+ td.ai1ec-empty {
37
+ padding: 0 !important;
38
+ }
39
+ th {
40
+ color: #888 !important;
41
+ font-size: 9pt !important;
42
+ font-family: sans-serif !important;
43
+ font-weight: bold;
44
+ #gradient > .horizontal-three-colors-replace(mix(@singleEventLabelBackground, fade(@singleEventLabelBackground, 0%), 40%), @singleEventLabelBackground, 90%, fade(@singleEventLabelBackground, 0%));
45
+ text-align: right;
46
+ text-shadow: 0 1px 0 @textEmboss;
47
+ width: 6em;
48
+ }
49
+ }
50
+ .ai1ec-multi-event {
51
+ th,
52
+ td {
53
+ padding: 0.3em 0.5em !important;
54
+ }
55
+ }
56
+
57
+ // Event time(s).
58
+ .ai1ec-full-event {
59
+ .ai1ec-time {
60
+ line-height: 16pt !important;
61
+ vertical-align: middle;
62
+ }
63
+ td.ai1ec-time {
64
+ font-weight: bold;
65
+ font-size: 11pt !important;
66
+ }
67
+ .ai1ec-allday-label {
68
+ font-size: 10pt !important;
69
+ color: fadeOut(@textColor, 50%);
70
+ padding-left: 0.2em;
71
+ }
72
+ }
73
+ .ai1ec-multi-event {
74
+ .ai1ec-time {
75
+ line-height: 15pt !important;
76
+ }
77
+ td.ai1ec-time {
78
+ font-size: 10pt !important;
79
+ }
80
+ .ai1ec-allday-label {
81
+ font-size: 9pt !important;
82
+ }
83
+ }
84
+
85
+ // Location & map.
86
+ .ai1ec-full-event {
87
+ td.ai1ec-location {
88
+ min-width: 30%;
89
+ }
90
+ td.ai1ec-map {
91
+ text-align: right;
92
+ }
93
+ td.ai1ec-map.ai1ec-has-map {
94
+ width: 55%;
95
+ text-align: left;
96
+ }
97
+ .ai1ec-gmap-container {
98
+ border: 1px solid @tableBorder;
99
+ .border-radius(4px);
100
+ margin-bottom: 0.3em;
101
+ position: relative;
102
+ }
103
+ #ai1ec-gmap-canvas {
104
+ min-width: 18em;
105
+ width: 100%;
106
+ height: 12em;
107
+ }
108
+ .ai1ec-gmap-link {
109
+ position: absolute;
110
+ margin: 0;
111
+ font-size: 0.8em !important;
112
+ bottom: -1px;
113
+ right: -1px;
114
+ }
115
+ #ai1ec-gmap-canvas input {
116
+ margin: 0 !important;
117
+ }
118
+ }
119
+ .ai1ec-multi-event .ai1ec-gmap-link {
120
+ font-size: 8pt !important;
121
+ margin: -0.2em 0;
122
+ }
123
+ .ai1ec-gmap-placeholder {
124
+ .border-radius(4px);
125
+ color: @linkColor;
126
+ cursor: pointer;
127
+ height: 12em;
128
+ border: 1px dashed @tableBorder;
129
+ min-width: 18em;
130
+ margin-bottom: 0.3em;
131
+ text-align: center;
132
+ width: 100%;
133
+ &:hover {
134
+ border-color: darken(@tableBorder, 15%);
135
+ color: @linkColorHover;
136
+ }
137
+ strong {
138
+ position: relative;
139
+ top: 45%;
140
+ }
141
+ }
142
+ .ai1ec-gmap-container-hidden {
143
+ position: absolute !important;
144
+ visibility: hidden;
145
+ }
146
+
147
+ // Contact info.
148
+ .ai1ec-full-event .ai1ec-contact a {
149
+ white-space: nowrap;
150
+ }
151
+
152
+ // Categories and tags.
153
+ .ai1ec-full-event {
154
+ td.ai1ec-tags,
155
+ td.ai1ec-categories {
156
+ padding: 0.1em 0.2em !important;
157
+ }
158
+ .ai1ec-category {
159
+ float: left;
160
+ }
161
+ }
162
+ .ai1ec-multi-event .ai1ec-category {
163
+ font-size: 8pt !important;
164
+ }
165
+
166
+ // Footer.
167
+ .ai1ec-event-footer {
168
+ clear: left;
169
+ font-size: 0.9em !important;
170
+ font-style: italic;
171
+ }
172
+ .ai1ec-ics-icon {
173
+ background: url(../img/ics-icon.png) no-repeat right;
174
+ padding-right: 15px;
175
+ }
176
+
177
+ // Excerpts.
178
+ .ai1ec-excerpt {
179
+ margin-bottom: 0.5em;
180
+ font-size: 10pt !important;
181
+ line-height: 1.6em;
182
+ overflow: hidden;
183
+ > div {
184
+ padding-left: 7.2em;
185
+ }
186
+ .ai1ec-label {
187
+ clear: left;
188
+ float: left;
189
+ #gradient > .horizontal-three-colors-replace(fade(@singleEventLabelBackground, 40%), @singleEventLabelBackground, 90%, fade(@singleEventLabelBackground, 0%));
190
+ margin-left: -7.2em;
191
+ padding: 0 0.6em !important;
192
+ text-align: right;
193
+ text-shadow: 0 1px 0 @textEmboss;
194
+ width: 6em;
195
+ }
196
+ .ai1ec-time {
197
+ font-weight: bold;
198
+ }
199
+ .ai1ec-event-link {
200
+ float: right;
201
+ font-size: 8pt !important;
202
+ }
203
+ .ai1ec-allday-label {
204
+ font-size: 9pt !important;
205
+ color: #bbb;
206
+ padding-left: 0.2em;
207
+ }
208
+ }
themes-ai1ec/vortex/less/font-awesome.less ADDED
@@ -0,0 +1,264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Font Awesome
2
+ the iconic font designed for use with Twitter Bootstrap
3
+ -------------------------------------------------------
4
+ The full suite of pictographic icons, examples, and documentation
5
+ can be found at: http://fortawesome.github.com/Font-Awesome/
6
+
7
+ License
8
+ -------------------------------------------------------
9
+ The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
10
+ http://creativecommons.org/licenses/by/3.0/ A mention of
11
+ 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
12
+ source code is considered acceptable attribution (most common on the web).
13
+ If human readable source code is not available to the end user, a mention in
14
+ an 'About' or 'Credits' screen is considered acceptable (most common in desktop
15
+ or mobile software).
16
+
17
+ Contact
18
+ -------------------------------------------------------
19
+ Email: dave@davegandy.com
20
+ Twitter: http://twitter.com/fortaweso_me
21
+ Work: http://lemonwi.se co-founder
22
+
23
+ */
24
+
25
+ @font-face {
26
+ font-family: 'FontAwesome';
27
+ src: url('../font/fontawesome-webfont.eot');
28
+ src: url('../font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
29
+ url('../font/fontawesome-webfont.woff') format('woff'),
30
+ url('../font/fontawesome-webfont.ttf') format('truetype'),
31
+ url('../font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),
32
+ url('../font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
33
+ font-weight: normal;
34
+ font-style: normal;
35
+ }
36
+
37
+ /* sprites.less reset */
38
+ [class^="icon-"],
39
+ [class*=" icon-"] {
40
+ display: inline;
41
+ width: auto;
42
+ height: auto;
43
+ line-height: inherit;
44
+ vertical-align: baseline;
45
+ background-image: none;
46
+ background-position: 0% 0%;
47
+ background-repeat: repeat;
48
+ }
49
+ li[class^="icon-"],
50
+ li[class*=" icon-"] {
51
+ display: block;
52
+ }
53
+
54
+ /* Font Awesome styles
55
+ ------------------------------------------------------- */
56
+ [class^="icon-"]:before,
57
+ [class*=" icon-"]:before {
58
+ font-family: FontAwesome;
59
+ font-weight: normal;
60
+ font-style: normal;
61
+ display: inline-block;
62
+ text-decoration: inherit;
63
+ }
64
+
65
+ a [class^="icon-"],
66
+ a [class*=" icon-"] {
67
+ display: inline-block;
68
+ text-decoration: inherit;
69
+ }
70
+
71
+ /* makes the font 33% larger relative to the icon container */
72
+ .icon-large:before {
73
+ vertical-align: top;
74
+ font-size: 4/3em;
75
+ }
76
+
77
+ .btn {
78
+ [class^="icon-"],
79
+ [class*=" icon-"] {
80
+ /* keeps button heights with and without icons the same */
81
+ line-height: .9em;
82
+ }
83
+ }
84
+
85
+ li {
86
+ [class^="icon-"],
87
+ [class*=" icon-"] {
88
+ display: inline-block;
89
+ width: 1.25em;
90
+ text-align: center;
91
+ }
92
+ .icon-large[class^="icon-"],
93
+ .icon-large[class*=" icon-"] {
94
+ /* 1.5 increased font size for icon-large * 1.25 width */
95
+ width: 1.5*1.25em;
96
+ }
97
+ }
98
+
99
+ li[class^="icon-"],
100
+ li[class*=" icon-"] {
101
+ margin-left: 0;
102
+ list-style-type: none;
103
+
104
+ &:before {
105
+ text-indent: -2em;
106
+ text-align: center;
107
+ }
108
+ &.icon-large:before {
109
+ text-indent: -4/3em;
110
+ }
111
+ }
112
+
113
+ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
114
+ readers do not read off random characters that represent icons */
115
+ .icon-glass:before { content: "\f000"; }
116
+ .icon-music:before { content: "\f001"; }
117
+ .icon-search:before { content: "\f002"; }
118
+ .icon-envelope:before { content: "\f003"; }
119
+ .icon-heart:before { content: "\f004"; }
120
+ .icon-star:before { content: "\f005"; }
121
+ .icon-star-empty:before { content: "\f006"; }
122
+ .icon-user:before { content: "\f007"; }
123
+ .icon-film:before { content: "\f008"; }
124
+ .icon-th-large:before { content: "\f009"; }
125
+ .icon-th:before { content: "\f00a"; }
126
+ .icon-th-list:before { content: "\f00b"; }
127
+ .icon-ok:before { content: "\f00c"; }
128
+ .icon-remove:before { content: "\f00d"; }
129
+ .icon-zoom-in:before { content: "\f00e"; }
130
+
131
+ .icon-zoom-out:before { content: "\f010"; }
132
+ .icon-off:before { content: "\f011"; }
133
+ .icon-signal:before { content: "\f012"; }
134
+ .icon-cog:before { content: "\f013"; }
135
+ .icon-trash:before { content: "\f014"; }
136
+ .icon-home:before { content: "\f015"; }
137
+ .icon-file:before { content: "\f016"; }
138
+ .icon-time:before { content: "\f017"; }
139
+ .icon-road:before { content: "\f018"; }
140
+ .icon-download-alt:before { content: "\f019"; }
141
+ .icon-download:before { content: "\f01a"; }
142
+ .icon-upload:before { content: "\f01b"; }
143
+ .icon-inbox:before { content: "\f01c"; }
144
+ .icon-play-circle:before { content: "\f01d"; }
145
+ .icon-repeat:before { content: "\f01e"; }
146
+
147
+ /* \f020 is not a valid unicode character. all shifted one down */
148
+ .icon-refresh:before { content: "\f021"; }
149
+ .icon-list-alt:before { content: "\f022"; }
150
+ .icon-lock:before { content: "\f023"; }
151
+ .icon-flag:before { content: "\f024"; }
152
+ .icon-headphones:before { content: "\f025"; }
153
+ .icon-volume-off:before { content: "\f026"; }
154
+ .icon-volume-down:before { content: "\f027"; }
155
+ .icon-volume-up:before { content: "\f028"; }
156
+ .icon-qrcode:before { content: "\f029"; }
157
+ .icon-barcode:before { content: "\f02a"; }
158
+ .icon-tag:before { content: "\f02b"; }
159
+ .icon-tags:before { content: "\f02c"; }
160
+ .icon-book:before { content: "\f02d"; }
161
+ .icon-bookmark:before { content: "\f02e"; }
162
+ .icon-print:before { content: "\f02f"; }
163
+
164
+ .icon-camera:before { content: "\f030"; }
165
+ .icon-font:before { content: "\f031"; }
166
+ .icon-bold:before { content: "\f032"; }
167
+ .icon-italic:before { content: "\f033"; }
168
+ .icon-text-height:before { content: "\f034"; }
169
+ .icon-text-width:before { content: "\f035"; }
170
+ .icon-align-left:before { content: "\f036"; }
171
+ .icon-align-center:before { content: "\f037"; }
172
+ .icon-align-right:before { content: "\f038"; }
173
+ .icon-align-justify:before { content: "\f039"; }
174
+ .icon-list:before { content: "\f03a"; }
175
+ .icon-indent-left:before { content: "\f03b"; }
176
+ .icon-indent-right:before { content: "\f03c"; }
177
+ .icon-facetime-video:before { content: "\f03d"; }
178
+ .icon-picture:before { content: "\f03e"; }
179
+
180
+ .icon-pencil:before { content: "\f040"; }
181
+ .icon-map-marker:before { content: "\f041"; }
182
+ .icon-adjust:before { content: "\f042"; }
183
+ .icon-tint:before { content: "\f043"; }
184
+ .icon-edit:before { content: "\f044"; }
185
+ .icon-share:before { content: "\f045"; }
186
+ .icon-check:before { content: "\f046"; }
187
+ .icon-move:before { content: "\f047"; }
188
+ .icon-step-backward:before { content: "\f048"; }
189
+ .icon-fast-backward:before { content: "\f049"; }
190
+ .icon-backward:before { content: "\f04a"; }
191
+ .icon-play:before { content: "\f04b"; }
192
+ .icon-pause:before { content: "\f04c"; }
193
+ .icon-stop:before { content: "\f04d"; }
194
+ .icon-forward:before { content: "\f04e"; }
195
+
196
+ .icon-fast-forward:before { content: "\f050"; }
197
+ .icon-step-forward:before { content: "\f051"; }
198
+ .icon-eject:before { content: "\f052"; }
199
+ .icon-chevron-left:before { content: "\f053"; }
200
+ .icon-chevron-right:before { content: "\f054"; }
201
+ .icon-plus-sign:before { content: "\f055"; }
202
+ .icon-minus-sign:before { content: "\f056"; }
203
+ .icon-remove-sign:before { content: "\f057"; }
204
+ .icon-ok-sign:before { content: "\f058"; }
205
+ .icon-question-sign:before { content: "\f059"; }
206
+ .icon-info-sign:before { content: "\f05a"; }
207
+ .icon-screenshot:before { content: "\f05b"; }
208
+ .icon-remove-circle:before { content: "\f05c"; }
209
+ .icon-ok-circle:before { content: "\f05d"; }
210
+ .icon-ban-circle:before { content: "\f05e"; }
211
+
212
+ .icon-arrow-left:before { content: "\f060"; }
213
+ .icon-arrow-right:before { content: "\f061"; }
214
+ .icon-arrow-up:before { content: "\f062"; }
215
+ .icon-arrow-down:before { content: "\f063"; }
216
+ .icon-share-alt:before { content: "\f064"; }
217
+ .icon-resize-full:before { content: "\f065"; }
218
+ .icon-resize-small:before { content: "\f066"; }
219
+ .icon-plus:before { content: "\f067"; }
220
+ .icon-minus:before { content: "\f068"; }
221
+ .icon-asterisk:before { content: "\f069"; }
222
+ .icon-exclamation-sign:before { content: "\f06a"; }
223
+ .icon-gift:before { content: "\f06b"; }
224
+ .icon-leaf:before { content: "\f06c"; }
225
+ .icon-fire:before { content: "\f06d"; }
226
+ .icon-eye-open:before { content: "\f06e"; }
227
+
228
+ .icon-eye-close:before { content: "\f070"; }
229
+ .icon-warning-sign:before { content: "\f071"; }
230
+ .icon-plane:before { content: "\f072"; }
231
+ .icon-calendar:before { content: "\f073"; }
232
+ .icon-random:before { content: "\f074"; }
233
+ .icon-comment:before { content: "\f075"; }
234
+ .icon-magnet:before { content: "\f076"; }
235
+ .icon-chevron-up:before { content: "\f077"; }
236
+ .icon-chevron-down:before { content: "\f078"; }
237
+ .icon-retweet:before { content: "\f079"; }
238
+ .icon-shopping-cart:before { content: "\f07a"; }
239
+ .icon-folder-close:before { content: "\f07b"; }
240
+ .icon-folder-open:before { content: "\f07c"; }
241
+ .icon-resize-vertical:before { content: "\f07d"; }
242
+ .icon-resize-horizontal:before { content: "\f07e"; }
243
+
244
+ .icon-bar-chart:before { content: "\f080"; }
245
+ .icon-twitter-sign:before { content: "\f081"; }
246
+ .icon-facebook-sign:before { content: "\f082"; }
247
+ .icon-camera-retro:before { content: "\f083"; }
248
+ .icon-key:before { content: "\f084"; }
249
+ .icon-cogs:before { content: "\f085"; }
250
+ .icon-comments:before { content: "\f086"; }
251
+ .icon-thumbs-up:before { content: "\f087"; }
252
+ .icon-thumbs-down:before { content: "\f088"; }
253
+ .icon-star-half:before { content: "\f089"; }
254
+ .icon-heart-empty:before { content: "\f08a"; }
255
+ .icon-signout:before { content: "\f08b"; }
256
+ .icon-linkedin-sign:before { content: "\f08c"; }
257
+ .icon-pushpin:before { content: "\f08d"; }
258
+ .icon-external-link:before { content: "\f08e"; }
259
+
260
+ .icon-signin:before { content: "\f090"; }
261
+ .icon-trophy:before { content: "\f091"; }
262
+ .icon-github-sign:before { content: "\f092"; }
263
+ .icon-upload-alt:before { content: "\f093"; }
264
+ .icon-lemon:before { content: "\f094"; }
themes-ai1ec/vortex/less/general.less ADDED
@@ -0,0 +1,313 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * CSS declarations for all parts of a WordPress site in which the All-in-One
5
+ * Calendar plugin is active. Mostly the bare minimum required for proper
6
+ * styling of widgets.
7
+ */
8
+
9
+ // ======================
10
+ // = Variables & mixins =
11
+ // ======================
12
+ // Based on Bootstrap. Modify variables.less for custom colors, font-sizes, etc.
13
+ @import "variables.less";
14
+ @import "mixins.less";
15
+ @import "mixins-custom.less";
16
+
17
+ // ================
18
+ // = Custom fonts =
19
+ // ================
20
+ @import "font-awesome.less";
21
+
22
+ // ========================
23
+ // = Bootstrap components =
24
+ // ========================
25
+ // We prefix these with .thenly so that non-calendar parts of site remain
26
+ // unaffected by Bootstrap.
27
+ .thenly {
28
+ // CSS Reset
29
+ @import "reset.less";
30
+
31
+ // Page structure & base CSS.
32
+ @import "scaffolding.less";
33
+ @import "type.less";
34
+
35
+ // Components.
36
+ @import "dropdowns.less";
37
+ @import "buttons.less";
38
+ @import "button-groups.less";
39
+
40
+ // Utility classes.
41
+ @import "utilities.less";
42
+
43
+ // =========================
44
+ // = Bootstrap adjustments =
45
+ // =========================
46
+
47
+ // Copied from scaffolding body reset; needed to apply to .thenly, not body.
48
+ margin: 0;
49
+ font-family: @baseFontFamily;
50
+ font-size: @baseFontSize;
51
+ line-height: @baseLineHeight;
52
+ color: @textColor;
53
+ background-color: @bodyBackground;
54
+
55
+ // Tweaks to info-styled buttons.
56
+ .btn-info,
57
+ .btn-info:hover,
58
+ .btn-info:active,
59
+ .btn-info.active,
60
+ .btn-info.active:hover {
61
+ color: @textColor;
62
+ text-shadow: 0 1px 1px rgba(255,255,255,.75);
63
+ }
64
+
65
+ // Align mini toolbar buttons properly.
66
+ .btn-toolbar .btn.btn-mini {
67
+ top: 5px;
68
+ }
69
+
70
+ // Reset some elements that are aggressively styled by poorly written themes.
71
+ ul.dropdown-menu li {
72
+ list-style-type: none !important;
73
+ }
74
+ small {
75
+ margin: 0 !important;
76
+ }
77
+ tr {
78
+ background: none !important;
79
+ }
80
+ }
81
+
82
+ // Tooltip styling needs to be outside of .thenly since tooltips are created
83
+ // dynamically in the document root (which is not within the .thenly container).
84
+ @import "tooltip.less";
85
+
86
+ // ==============================
87
+ // = AI1EC General declarations =
88
+ // ==============================
89
+
90
+ // General AJAX.
91
+ .ai1ec-loading {
92
+ position: absolute;
93
+ z-index: 9;
94
+ top: 0;
95
+ left: 0;
96
+ width: 100%;
97
+ height: 100%;
98
+ background: url(../img/ajax-loader.gif) no-repeat center center;
99
+ display: none;
100
+ }
101
+
102
+ // Label styling.
103
+ .ai1ec-label {
104
+ padding: 0 0.2em;
105
+ font-size: 9pt;
106
+ font-weight: bold;
107
+ color: @labelColor !important;
108
+ }
109
+
110
+ // ==============
111
+ // = Categories =
112
+ // ==============
113
+ .ai1ec-category {
114
+ cursor: pointer;
115
+ font-size: 0.9em;
116
+ border: 1px solid @categoryBorder;
117
+ text-shadow: 0 1px 0 @textEmboss;
118
+ padding: 2pt 3pt !important;
119
+ margin: 0.2em !important;
120
+ text-decoration: none !important;
121
+ text-transform: uppercase;
122
+ letter-spacing: 1pt;
123
+ white-space: nowrap;
124
+ color: mix(@textColor, @categoryBackground, 60%) !important;
125
+ background: @categoryBackground;
126
+ border-radius: 0.3em;
127
+ -moz-border-radius: 0.3em;
128
+ -webkit-border-radius: 0.3em;
129
+ &:hover {
130
+ color: @textColor !important;
131
+ background: @categoryBackgroundHover;
132
+ }
133
+ &.ai1ec-selected {
134
+ background: @categoryActiveBackground;
135
+ border-color: @categoryActiveBorder;
136
+ color: mix(@textColor, @categoryActiveBackground, 60%) !important;
137
+ &:hover {
138
+ background: @categoryActiveBackgroundHover;
139
+ color: @textColor !important;
140
+ }
141
+ }
142
+ }
143
+
144
+ // Category colors.
145
+ .ai1ec-category-color {
146
+ .border-radius(0.2em);
147
+ .box-shadow(~"inset 0 1px 0 rgba(255,255,255,0.25), inset 0 -1px 2px rgba(0,0,0,0.5)");
148
+ display: inline-block;
149
+ height: 0.9em;
150
+ margin: 0 1px;
151
+ width: 0.9em;
152
+ }
153
+
154
+ // ========
155
+ // = Tags =
156
+ // ========
157
+ .ai1ec-tag {
158
+ color: @linkColor !important;
159
+ line-height: 1.3em;
160
+ cursor: pointer;
161
+ white-space: nowrap;
162
+ margin: 0.1em 0.2em;
163
+ padding: 0.1em 0.2em;
164
+ .border-radius(0.3em);
165
+ display: inline-block;
166
+ &:hover {
167
+ color: @linkColorHover !important;
168
+ text-decoration: none;
169
+ }
170
+ &.ai1ec-selected {
171
+ background: @tagActiveBackground;
172
+ }
173
+ }
174
+
175
+ // =====================
176
+ // = Subscribe buttons =
177
+ // =====================
178
+ .ai1ec-subscribe-google img {
179
+ background: none !important;
180
+ border: none !important;
181
+ float: left;
182
+ height: 32px !important;
183
+ margin: -8px 0.5em -10px 0 !important;
184
+ padding: 0 !important;
185
+ width: 30px !important;
186
+ }
187
+
188
+ // ======================
189
+ // = Agenda widget view =
190
+ // ======================
191
+ .ai1ec-agenda-widget-view {
192
+ font-size: 0.8em !important;
193
+ overflow: hidden;
194
+ div {
195
+ margin: 0;
196
+ }
197
+ .ai1ec-no-results {
198
+ font-style: italic;
199
+ font-size: 1.4em !important;
200
+ }
201
+ > ol {
202
+ margin: 0 !important;
203
+ padding: 0 !important;
204
+ }
205
+ li {
206
+ list-style: none !important;
207
+ border: none !important;
208
+ }
209
+ .ai1ec-date-events {
210
+ overflow: hidden;
211
+ margin: 0 0.5em 0 0 !important;
212
+ padding: 0 !important;
213
+ }
214
+ .ai1ec-date {
215
+ border-top: 1px solid darken(@agendaDateBackground, 5%) !important;
216
+ #gradient > .vertical-three-colors-replace(@agendaDateBackground, @agendaDateBackground, 1em, fade(@agendaDateBackground, 0%));
217
+ margin: 0 !important;
218
+ overflow: hidden;
219
+ padding: 0 !important;
220
+ }
221
+ .ai1ec-date.ai1ec-today {
222
+ border-top: 1px solid darken(@agendaTodayBackground, 5%) !important;
223
+ #gradient > .vertical-three-colors-replace(@agendaTodayBackground, @agendaTodayBackground, 1em, fade(@agendaTodayBackground, 0%));
224
+ }
225
+ h3.ai1ec-date-title {
226
+ border: 2px solid @agendaDateTitleBorder;
227
+ .border-radius(0 0 0.5em 0.5em);
228
+ .box-shadow(0 2px 2px rgba(0,0,0,0.08));
229
+ color: mix(@textColor, @agendaDateTitleBackground, 85%);
230
+ float: left;
231
+ font-size: 1em;
232
+ font-weight: normal;
233
+ #gradient > .vertical-three-colors(@agendaDateTitleBackground, @agendaDateTitleBackground, 1em, darken(@agendaDateTitleBackground, 12%));
234
+ line-height: 1.1em;
235
+ margin: 0 0.5em 0.5em !important;
236
+ padding: 0 !important;
237
+ text-align: center;
238
+ text-shadow: 0 1px 0 @textEmboss;
239
+ width: 3.5em;
240
+ }
241
+ .ai1ec-month {
242
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
243
+ background: @agendaDateTitleBorder;
244
+ font-size: 0.9em !important;
245
+ padding: 0.1em 0 0.2em;
246
+ text-transform: uppercase;
247
+ letter-spacing: 0.2em;
248
+ color: @agendaDateTitleMonthText;
249
+ }
250
+ .ai1ec-day {
251
+ font-size: 1.7em !important;
252
+ padding: 0.3em 0 0.2em !important;
253
+ }
254
+ .ai1ec-weekday {
255
+ font-size: 0.9em !important;
256
+ line-height: 1.5em;
257
+ }
258
+
259
+ // Agenda widget view events.
260
+ .ai1ec-event {
261
+ clear: right;
262
+ font-size: 1.2em;
263
+ line-height: 1.3em;
264
+ margin: 0.5em 0 !important;
265
+ overflow: hidden;
266
+ padding: 0 !important;
267
+ position: relative;
268
+ a {
269
+ color: @eventDefaultColor;
270
+ display: block;
271
+ background: @eventBackground;
272
+ border: 1px solid @eventBorder;
273
+ .border-radius(0.4em);
274
+ padding: 0.2em 0.4em !important;
275
+ text-decoration: none !important;
276
+ &:hover {
277
+ border-color: @eventBorderHover;
278
+ color: @eventDefaultColorHover;
279
+ text-decoration: none !important;
280
+ }
281
+ }
282
+ .ai1ec-event-time {
283
+ font-weight: bold;
284
+ }
285
+ .ai1ec-event-title {
286
+ font-weight: normal;
287
+ }
288
+ &.ai1ec-allday a {
289
+ background: @eventDefaultColor;
290
+ border: 1px solid transparent;
291
+ color: @eventStubAllDayText;
292
+ &:hover {
293
+ background: @eventDefaultColorHover;
294
+ }
295
+ .ai1ec-event-time {
296
+ color: @eventStubAllDayText;
297
+ }
298
+ }
299
+ .ai1ec-category-colors {
300
+ font-size: 0.9em;
301
+ .ai1ec-category-color {
302
+ margin: 0 0 -0.1em;
303
+ padding: 1px;
304
+ }
305
+ }
306
+ }
307
+ // Widget view buttons.
308
+ .ai1ec-subscribe-google img {
309
+ width: 19px !important;
310
+ height: 20px !important;
311
+ margin: -5px 0.5em -5px 0 !important;
312
+ }
313
+ }
themes-ai1ec/vortex/less/grid.less ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ // Fixed (940px)
2
+ #grid > .core(@gridColumnWidth, @gridGutterWidth);
3
+
4
+ // Fluid (940px)
5
+ #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
themes-ai1ec/vortex/less/mixins-custom.less ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * Custom mixins where Bootstrap mixins fall short.
5
+ */
6
+
7
+ // Gradients.
8
+ #gradient {
9
+ // Horizontal 3-color gradient.
10
+ .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
11
+ background-color: mix(@midColor, @endColor, 80%);
12
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
13
+ background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
14
+ background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
15
+ background-image: -ms-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
16
+ background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
17
+ background-image: linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
18
+ background-repeat: no-repeat;
19
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
20
+ }
21
+
22
+ // Use these for the following behaviour:
23
+ // If browser supports the gradient syntax it will *replace the background
24
+ // color* behind it, and is *especially important for translucent gradients*.
25
+ .horizontal-replace(@startColor: #555, @endColor: #333) {
26
+ background: @endColor;
27
+ background: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
28
+ background: -ms-linear-gradient(left, @startColor, @endColor); // IE10
29
+ background: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
30
+ background: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
31
+ background: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
32
+ background: linear-gradient(left, @startColor, @endColor); // Le standard
33
+ background-repeat: repeat-x;
34
+ }
35
+ .vertical-replace(@startColor: #555, @endColor: #333) {
36
+ background: mix(@startColor, @endColor, 60%);
37
+ background: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
38
+ background: -ms-linear-gradient(top, @startColor, @endColor); // IE10
39
+ background: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
40
+ background: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
41
+ background: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
42
+ background: linear-gradient(top, @startColor, @endColor); // The standard
43
+ background-repeat: repeat-x;
44
+ }
45
+ .vertical-three-colors-replace(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
46
+ background: mix(@midColor, @endColor, 80%);
47
+ background: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
48
+ background: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
49
+ background: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
50
+ background: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
51
+ background: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
52
+ background: linear-gradient(@startColor, @midColor @colorStop, @endColor);
53
+ background-repeat: no-repeat;
54
+ }
55
+ .horizontal-three-colors-replace(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
56
+ background: mix(@midColor, @endColor, 80%);
57
+ background: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
58
+ background: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
59
+ background: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
60
+ background: -ms-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
61
+ background: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
62
+ background: linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
63
+ background-repeat: no-repeat;
64
+ }
65
+ }
themes-ai1ec/vortex/less/mixins.less ADDED
@@ -0,0 +1,614 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Mixins.less
2
+ // Snippets of reusable CSS to develop faster and keep code readable
3
+ // -----------------------------------------------------------------
4
+
5
+
6
+ // UTILITY MIXINS
7
+ // --------------------------------------------------
8
+
9
+ // Clearfix
10
+ // --------
11
+ // For clearing floats like a boss h5bp.com/q
12
+ .clearfix {
13
+ *zoom: 1;
14
+ &:before,
15
+ &:after {
16
+ display: table;
17
+ content: "";
18
+ }
19
+ &:after {
20
+ clear: both;
21
+ }
22
+ }
23
+
24
+ // Webkit-style focus
25
+ // ------------------
26
+ .tab-focus() {
27
+ // Default
28
+ outline: thin dotted #333;
29
+ // Webkit
30
+ outline: 5px auto -webkit-focus-ring-color;
31
+ outline-offset: -2px;
32
+ }
33
+
34
+ // Center-align a block level element
35
+ // ----------------------------------
36
+ .center-block() {
37
+ display: block;
38
+ margin-left: auto;
39
+ margin-right: auto;
40
+ }
41
+
42
+ // IE7 inline-block
43
+ // ----------------
44
+ .ie7-inline-block() {
45
+ *display: inline; /* IE7 inline-block hack */
46
+ *zoom: 1;
47
+ }
48
+
49
+ // IE7 likes to collapse whitespace on either side of the inline-block elements.
50
+ // Ems because we're attempting to match the width of a space character. Left
51
+ // version is for form buttons, which typically come after other elements, and
52
+ // right version is for icons, which come before. Applying both is ok, but it will
53
+ // mean that space between those elements will be .6em (~2 space characters) in IE7,
54
+ // instead of the 1 space in other browsers.
55
+ .ie7-restore-left-whitespace() {
56
+ *margin-left: .3em;
57
+
58
+ &:first-child {
59
+ *margin-left: 0;
60
+ }
61
+ }
62
+
63
+ .ie7-restore-right-whitespace() {
64
+ *margin-right: .3em;
65
+
66
+ &:last-child {
67
+ *margin-left: 0;
68
+ }
69
+ }
70
+
71
+ // Sizing shortcuts
72
+ // -------------------------
73
+ .size(@height: 5px, @width: 5px) {
74
+ width: @width;
75
+ height: @height;
76
+ }
77
+ .square(@size: 5px) {
78
+ .size(@size, @size);
79
+ }
80
+
81
+ // Placeholder text
82
+ // -------------------------
83
+ .placeholder(@color: @placeholderText) {
84
+ :-moz-placeholder {
85
+ color: @color;
86
+ }
87
+ ::-webkit-input-placeholder {
88
+ color: @color;
89
+ }
90
+ }
91
+
92
+ // Text overflow
93
+ // -------------------------
94
+ // Requires inline-block or block for proper styling
95
+ .text-overflow() {
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+
101
+ // New image replacement
102
+ // -------------------------
103
+ // Source: http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
104
+ .hide-text {
105
+ overflow: hidden;
106
+ text-indent: 100%;
107
+ white-space: nowrap;
108
+ }
109
+
110
+
111
+ // FONTS
112
+ // --------------------------------------------------
113
+
114
+ #font {
115
+ #family {
116
+ .serif() {
117
+ font-family: Georgia, "Times New Roman", Times, serif;
118
+ }
119
+ .sans-serif() {
120
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
121
+ }
122
+ .monospace() {
123
+ font-family: Menlo, Monaco, "Courier New", monospace;
124
+ }
125
+ }
126
+ .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
127
+ font-size: @size;
128
+ font-weight: @weight;
129
+ line-height: @lineHeight;
130
+ }
131
+ .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
132
+ #font > #family > .serif;
133
+ #font > .shorthand(@size, @weight, @lineHeight);
134
+ }
135
+ .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
136
+ #font > #family > .sans-serif;
137
+ #font > .shorthand(@size, @weight, @lineHeight);
138
+ }
139
+ .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
140
+ #font > #family > .monospace;
141
+ #font > .shorthand(@size, @weight, @lineHeight);
142
+ }
143
+ }
144
+
145
+
146
+ // FORMS
147
+ // --------------------------------------------------
148
+
149
+ // Block level inputs
150
+ .input-block-level {
151
+ display: block;
152
+ width: 100%;
153
+ min-height: 28px; /* Make inputs at least the height of their button counterpart */
154
+ /* Makes inputs behave like true block-level elements */
155
+ .box-sizing(border-box);
156
+ }
157
+
158
+
159
+ // Mixin for form field states
160
+ .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
161
+ // Set the text color
162
+ > label,
163
+ .help-block,
164
+ .help-inline {
165
+ color: @textColor;
166
+ }
167
+ // Style inputs accordingly
168
+ input,
169
+ select,
170
+ textarea {
171
+ color: @textColor;
172
+ border-color: @borderColor;
173
+ &:focus {
174
+ border-color: darken(@borderColor, 10%);
175
+ .box-shadow(0 0 6px lighten(@borderColor, 20%));
176
+ }
177
+ }
178
+ // Give a small background color for input-prepend/-append
179
+ .input-prepend .add-on,
180
+ .input-append .add-on {
181
+ color: @textColor;
182
+ background-color: @backgroundColor;
183
+ border-color: @textColor;
184
+ }
185
+ }
186
+
187
+
188
+
189
+ // CSS3 PROPERTIES
190
+ // --------------------------------------------------
191
+
192
+ // Border Radius
193
+ .border-radius(@radius: 5px) {
194
+ -webkit-border-radius: @radius;
195
+ -moz-border-radius: @radius;
196
+ border-radius: @radius;
197
+ }
198
+
199
+ // Drop shadows
200
+ .box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) {
201
+ -webkit-box-shadow: @shadow;
202
+ -moz-box-shadow: @shadow;
203
+ box-shadow: @shadow;
204
+ }
205
+
206
+ // Transitions
207
+ .transition(@transition) {
208
+ -webkit-transition: @transition;
209
+ -moz-transition: @transition;
210
+ -ms-transition: @transition;
211
+ -o-transition: @transition;
212
+ transition: @transition;
213
+ }
214
+
215
+ // Transformations
216
+ .rotate(@degrees) {
217
+ -webkit-transform: rotate(@degrees);
218
+ -moz-transform: rotate(@degrees);
219
+ -ms-transform: rotate(@degrees);
220
+ -o-transform: rotate(@degrees);
221
+ transform: rotate(@degrees);
222
+ }
223
+ .scale(@ratio) {
224
+ -webkit-transform: scale(@ratio);
225
+ -moz-transform: scale(@ratio);
226
+ -ms-transform: scale(@ratio);
227
+ -o-transform: scale(@ratio);
228
+ transform: scale(@ratio);
229
+ }
230
+ .translate(@x: 0, @y: 0) {
231
+ -webkit-transform: translate(@x, @y);
232
+ -moz-transform: translate(@x, @y);
233
+ -ms-transform: translate(@x, @y);
234
+ -o-transform: translate(@x, @y);
235
+ transform: translate(@x, @y);
236
+ }
237
+ .skew(@x: 0, @y: 0) {
238
+ -webkit-transform: skew(@x, @y);
239
+ -moz-transform: skew(@x, @y);
240
+ -ms-transform: skew(@x, @y);
241
+ -o-transform: skew(@x, @y);
242
+ transform: skew(@x, @y);
243
+ }
244
+ .translate3d(@x: 0, @y: 0, @z: 0) {
245
+ -webkit-transform: translate(@x, @y, @z);
246
+ -moz-transform: translate(@x, @y, @z);
247
+ -ms-transform: translate(@x, @y, @z);
248
+ -o-transform: translate(@x, @y, @z);
249
+ transform: translate(@x, @y, @z);
250
+ }
251
+
252
+ // Background clipping
253
+ // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
254
+ .background-clip(@clip) {
255
+ -webkit-background-clip: @clip;
256
+ -moz-background-clip: @clip;
257
+ background-clip: @clip;
258
+ }
259
+
260
+ // Background sizing
261
+ .background-size(@size){
262
+ -webkit-background-size: @size;
263
+ -moz-background-size: @size;
264
+ -o-background-size: @size;
265
+ background-size: @size;
266
+ }
267
+
268
+
269
+ // Box sizing
270
+ .box-sizing(@boxmodel) {
271
+ -webkit-box-sizing: @boxmodel;
272
+ -moz-box-sizing: @boxmodel;
273
+ -ms-box-sizing: @boxmodel;
274
+ box-sizing: @boxmodel;
275
+ }
276
+
277
+ // User select
278
+ // For selecting text on the page
279
+ .user-select(@select) {
280
+ -webkit-user-select: @select;
281
+ -moz-user-select: @select;
282
+ -o-user-select: @select;
283
+ user-select: @select;
284
+ }
285
+
286
+ // Resize anything
287
+ .resizable(@direction: both) {
288
+ resize: @direction; // Options: horizontal, vertical, both
289
+ overflow: auto; // Safari fix
290
+ }
291
+
292
+ // CSS3 Content Columns
293
+ .content-columns(@columnCount, @columnGap: @gridColumnGutter) {
294
+ -webkit-column-count: @columnCount;
295
+ -moz-column-count: @columnCount;
296
+ column-count: @columnCount;
297
+ -webkit-column-gap: @columnGap;
298
+ -moz-column-gap: @columnGap;
299
+ column-gap: @columnGap;
300
+ }
301
+
302
+ // Opacity
303
+ .opacity(@opacity: 100) {
304
+ opacity: @opacity / 100;
305
+ filter: ~"alpha(opacity=@{opacity})";
306
+ }
307
+
308
+
309
+
310
+ // BACKGROUNDS
311
+ // --------------------------------------------------
312
+
313
+ // Add an alphatransparency value to any background or border color (via Elyse Holladay)
314
+ #translucent {
315
+ .background(@color: @white, @alpha: 1) {
316
+ background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
317
+ }
318
+ .border(@color: @white, @alpha: 1) {
319
+ border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
320
+ .background-clip(padding-box);
321
+ }
322
+ }
323
+
324
+ // Gradient Bar Colors for buttons and alerts
325
+ .gradientBar(@primaryColor, @secondaryColor) {
326
+ #gradient > .vertical(@primaryColor, @secondaryColor);
327
+ border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
328
+ border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
329
+ }
330
+
331
+ // Gradients
332
+ #gradient {
333
+ .horizontal(@startColor: #555, @endColor: #333) {
334
+ background-color: @endColor;
335
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
336
+ background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
337
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
338
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
339
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
340
+ background-image: linear-gradient(left, @startColor, @endColor); // Le standard
341
+ background-repeat: repeat-x;
342
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
343
+ }
344
+ .vertical(@startColor: #555, @endColor: #333) {
345
+ background-color: mix(@startColor, @endColor, 60%);
346
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
347
+ background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
348
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
349
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
350
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
351
+ background-image: linear-gradient(top, @startColor, @endColor); // The standard
352
+ background-repeat: repeat-x;
353
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
354
+ }
355
+ .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
356
+ background-color: @endColor;
357
+ background-repeat: repeat-x;
358
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
359
+ background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10
360
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
361
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
362
+ background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
363
+ }
364
+ .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
365
+ background-color: mix(@midColor, @endColor, 80%);
366
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
367
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
368
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
369
+ background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
370
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
371
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
372
+ background-repeat: no-repeat;
373
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
374
+ }
375
+ .radial(@innerColor: #555, @outerColor: #333) {
376
+ background-color: @outerColor;
377
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
378
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
379
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
380
+ background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
381
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
382
+ background-repeat: no-repeat;
383
+ }
384
+ .striped(@color, @angle: -45deg) {
385
+ background-color: @color;
386
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
387
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
388
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
389
+ background-image: -ms-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
390
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
391
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
392
+ }
393
+ }
394
+ // Reset filters for IE
395
+ .reset-filter() {
396
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
397
+ }
398
+
399
+
400
+
401
+ // COMPONENT MIXINS
402
+ // --------------------------------------------------
403
+
404
+ // Horizontal dividers
405
+ // -------------------------
406
+ // Dividers (basically an hr) within dropdowns and nav lists
407
+ .nav-divider() {
408
+ height: 1px;
409
+ margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
410
+ overflow: hidden;
411
+ background-color: #e5e5e5;
412
+ border-bottom: 1px solid @white;
413
+
414
+ // IE7 needs a set width since we gave a height. Restricting just
415
+ // to IE7 to keep the 1px left/right space in other browsers.
416
+ // It is unclear where IE is getting the extra space that we need
417
+ // to negative-margin away, but so it goes.
418
+ *width: 100%;
419
+ *margin: -5px 0 5px;
420
+ }
421
+
422
+ // Button backgrounds
423
+ // ------------------
424
+ .buttonBackground(@startColor, @endColor) {
425
+ // gradientBar will set the background to a pleasing blend of these, to support IE<=9
426
+ .gradientBar(@startColor, @endColor);
427
+ .reset-filter();
428
+
429
+ // in these cases the gradient won't cover the background, so we override
430
+ &:hover, &:active, &.active, &.disabled, &[disabled] {
431
+ background-color: @endColor;
432
+ }
433
+
434
+ // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
435
+ &:active,
436
+ &.active {
437
+ background-color: darken(@endColor, 10%) e("\9");
438
+ }
439
+ }
440
+
441
+ // Navbar vertical align
442
+ // -------------------------
443
+ // Vertically center elements in the navbar.
444
+ // Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
445
+ .navbarVerticalAlign(@elementHeight) {
446
+ margin-top: (@navbarHeight - @elementHeight) / 2;
447
+ }
448
+
449
+ // Popover arrows
450
+ // -------------------------
451
+ // For tipsies and popovers
452
+ #popoverArrow {
453
+ .top(@arrowWidth: 5px, @color: @black) {
454
+ bottom: 0;
455
+ left: 50%;
456
+ margin-left: -@arrowWidth;
457
+ border-left: @arrowWidth solid transparent;
458
+ border-right: @arrowWidth solid transparent;
459
+ border-top: @arrowWidth solid @color;
460
+ }
461
+ .left(@arrowWidth: 5px, @color: @black) {
462
+ top: 50%;
463
+ right: 0;
464
+ margin-top: -@arrowWidth;
465
+ border-top: @arrowWidth solid transparent;
466
+ border-bottom: @arrowWidth solid transparent;
467
+ border-left: @arrowWidth solid @color;
468
+ }
469
+ .bottom(@arrowWidth: 5px, @color: @black) {
470
+ top: 0;
471
+ left: 50%;
472
+ margin-left: -@arrowWidth;
473
+ border-left: @arrowWidth solid transparent;
474
+ border-right: @arrowWidth solid transparent;
475
+ border-bottom: @arrowWidth solid @color;
476
+ }
477
+ .right(@arrowWidth: 5px, @color: @black) {
478
+ top: 50%;
479
+ left: 0;
480
+ margin-top: -@arrowWidth;
481
+ border-top: @arrowWidth solid transparent;
482
+ border-bottom: @arrowWidth solid transparent;
483
+ border-right: @arrowWidth solid @color;
484
+ }
485
+ }
486
+
487
+ // Grid System
488
+ // -----------
489
+
490
+ // Centered container element
491
+ .container-fixed() {
492
+ margin-left: auto;
493
+ margin-right: auto;
494
+ .clearfix();
495
+ }
496
+
497
+ // Table columns
498
+ .tableColumns(@columnSpan: 1) {
499
+ float: none; // undo default grid column styles
500
+ width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
501
+ margin-left: 0; // undo default grid column styles
502
+ }
503
+
504
+ // Make a Grid
505
+ // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
506
+ .makeRow() {
507
+ margin-left: @gridGutterWidth * -1;
508
+ .clearfix();
509
+ }
510
+ .makeColumn(@columns: 1) {
511
+ float: left;
512
+ margin-left: @gridGutterWidth;
513
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
514
+ }
515
+
516
+ // The Grid
517
+ #grid {
518
+
519
+ .core (@gridColumnWidth, @gridGutterWidth) {
520
+
521
+ .spanX (@index) when (@index > 0) {
522
+ (~".span@{index}") { .span(@index); }
523
+ .spanX(@index - 1);
524
+ }
525
+ .spanX (0) {}
526
+
527
+ .offsetX (@index) when (@index > 0) {
528
+ (~".offset@{index}") { .offset(@index); }
529
+ .offsetX(@index - 1);
530
+ }
531
+ .offsetX (0) {}
532
+
533
+ .offset (@columns) {
534
+ margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)) + (@gridGutterWidth * 2);
535
+ }
536
+
537
+ .span (@columns) {
538
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
539
+ }
540
+
541
+ .row {
542
+ margin-left: @gridGutterWidth * -1;
543
+ .clearfix();
544
+ }
545
+
546
+ [class*="span"] {
547
+ float: left;
548
+ margin-left: @gridGutterWidth;
549
+ }
550
+
551
+ // Set the container width, and override it for fixed navbars in media queries
552
+ .container,
553
+ .navbar-fixed-top .container,
554
+ .navbar-fixed-bottom .container { .span(@gridColumns); }
555
+
556
+ // generate .spanX and .offsetX
557
+ .spanX (@gridColumns);
558
+ .offsetX (@gridColumns);
559
+
560
+ }
561
+
562
+ .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
563
+
564
+ .spanX (@index) when (@index > 0) {
565
+ (~"> .span@{index}") { .span(@index); }
566
+ .spanX(@index - 1);
567
+ }
568
+ .spanX (0) {}
569
+
570
+ .span (@columns) {
571
+ width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
572
+ }
573
+
574
+ .row-fluid {
575
+ width: 100%;
576
+ .clearfix();
577
+ > [class*="span"] {
578
+ float: left;
579
+ margin-left: @fluidGridGutterWidth;
580
+ }
581
+ > [class*="span"]:first-child {
582
+ margin-left: 0;
583
+ }
584
+
585
+ // generate .spanX
586
+ .spanX (@gridColumns);
587
+ }
588
+
589
+ }
590
+
591
+ .input(@gridColumnWidth, @gridGutterWidth) {
592
+
593
+ .spanX (@index) when (@index > 0) {
594
+ (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
595
+ .spanX(@index - 1);
596
+ }
597
+ .spanX (0) {}
598
+
599
+ .span(@columns) {
600
+ width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
601
+ }
602
+
603
+ input,
604
+ textarea,
605
+ .uneditable-input {
606
+ margin-left: 0; // override margin-left from core grid system
607
+ }
608
+
609
+ // generate .spanX
610
+ .spanX (@gridColumns);
611
+
612
+ }
613
+
614
+ }
themes-ai1ec/vortex/less/navs.less ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // NAVIGATIONS
2
+ // -----------
3
+
4
+
5
+
6
+ // BASE CLASS
7
+ // ----------
8
+
9
+ .nav {
10
+ margin-left: 0;
11
+ margin-bottom: @baseLineHeight;
12
+ list-style: none;
13
+ }
14
+
15
+ // Make links block level
16
+ .nav > li > a {
17
+ display: block;
18
+ }
19
+ .nav > li > a:hover {
20
+ text-decoration: none;
21
+ background-color: @grayLighter;
22
+ }
23
+
24
+ // Nav headers (for dropdowns and lists)
25
+ .nav .nav-header {
26
+ display: block;
27
+ padding: 3px 15px;
28
+ font-size: 11px;
29
+ font-weight: bold;
30
+ line-height: @baseLineHeight;
31
+ color: @grayLight;
32
+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
33
+ text-transform: uppercase;
34
+ }
35
+ // Space them out when they follow another list item (link)
36
+ .nav li + .nav-header {
37
+ margin-top: 9px;
38
+ }
39
+
40
+
41
+ // NAV LIST
42
+ // --------
43
+
44
+ .nav-list {
45
+ padding-left: 15px;
46
+ padding-right: 15px;
47
+ margin-bottom: 0;
48
+ }
49
+ .nav-list > li > a,
50
+ .nav-list .nav-header {
51
+ margin-left: -15px;
52
+ margin-right: -15px;
53
+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
54
+ }
55
+ .nav-list > li > a {
56
+ padding: 3px 15px;
57
+ }
58
+ .nav-list > .active > a,
59
+ .nav-list > .active > a:hover {
60
+ color: @white;
61
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
62
+ background-color: @linkColor;
63
+ }
64
+ .nav-list [class^="icon-"] {
65
+ margin-right: 2px;
66
+ }
67
+ // Dividers (basically an hr) within the dropdown
68
+ .nav-list .divider {
69
+ .nav-divider();
70
+ }
71
+
72
+
73
+
74
+ // TABS AND PILLS
75
+ // -------------
76
+
77
+ // Common styles
78
+ .nav-tabs,
79
+ .nav-pills {
80
+ .clearfix();
81
+ }
82
+ .nav-tabs > li,
83
+ .nav-pills > li {
84
+ float: left;
85
+ }
86
+ .nav-tabs > li > a,
87
+ .nav-pills > li > a {
88
+ padding-right: 12px;
89
+ padding-left: 12px;
90
+ margin-right: 2px;
91
+ line-height: 14px; // keeps the overall height an even number
92
+ }
93
+
94
+ // TABS
95
+ // ----
96
+
97
+ // Give the tabs something to sit on
98
+ .nav-tabs {
99
+ border-bottom: 1px solid #ddd;
100
+ }
101
+
102
+ // Make the list-items overlay the bottom border
103
+ .nav-tabs > li {
104
+ margin-bottom: -1px;
105
+ }
106
+
107
+ // Actual tabs (as links)
108
+ .nav-tabs > li > a {
109
+ padding-top: 8px;
110
+ padding-bottom: 8px;
111
+ line-height: @baseLineHeight;
112
+ border: 1px solid transparent;
113
+ .border-radius(4px 4px 0 0);
114
+ &:hover {
115
+ border-color: @grayLighter @grayLighter #ddd;
116
+ }
117
+ }
118
+ // Active state, and it's :hover to override normal :hover
119
+ .nav-tabs > .active > a,
120
+ .nav-tabs > .active > a:hover {
121
+ color: @gray;
122
+ background-color: @white;
123
+ border: 1px solid #ddd;
124
+ border-bottom-color: transparent;
125
+ cursor: default;
126
+ }
127
+
128
+ // PILLS
129
+ // -----
130
+
131
+ // Links rendered as pills
132
+ .nav-pills > li > a {
133
+ padding-top: 8px;
134
+ padding-bottom: 8px;
135
+ margin-top: 2px;
136
+ margin-bottom: 2px;
137
+ .border-radius(5px);
138
+ }
139
+
140
+ // Active state
141
+ .nav-pills > .active > a,
142
+ .nav-pills > .active > a:hover {
143
+ color: @white;
144
+ background-color: @linkColor;
145
+ }
146
+
147
+
148
+
149
+ // STACKED NAV
150
+ // -----------
151
+
152
+ // Stacked tabs and pills
153
+ .nav-stacked > li {
154
+ float: none;
155
+ }
156
+ .nav-stacked > li > a {
157
+ margin-right: 0; // no need for the gap between nav items
158
+ }
159
+
160
+ // Tabs
161
+ .nav-tabs.nav-stacked {
162
+ border-bottom: 0;
163
+ }
164
+ .nav-tabs.nav-stacked > li > a {
165
+ border: 1px solid #ddd;
166
+ .border-radius(0);
167
+ }
168
+ .nav-tabs.nav-stacked > li:first-child > a {
169
+ .border-radius(4px 4px 0 0);
170
+ }
171
+ .nav-tabs.nav-stacked > li:last-child > a {
172
+ .border-radius(0 0 4px 4px);
173
+ }
174
+ .nav-tabs.nav-stacked > li > a:hover {
175
+ border-color: #ddd;
176
+ z-index: 2;
177
+ }
178
+
179
+ // Pills
180
+ .nav-pills.nav-stacked > li > a {
181
+ margin-bottom: 3px;
182
+ }
183
+ .nav-pills.nav-stacked > li:last-child > a {
184
+ margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
185
+ }
186
+
187
+
188
+
189
+ // DROPDOWNS
190
+ // ---------
191
+
192
+ // Position the menu
193
+ .nav-tabs .dropdown-menu,
194
+ .nav-pills .dropdown-menu {
195
+ margin-top: 1px;
196
+ border-width: 1px;
197
+ }
198
+ .nav-pills .dropdown-menu {
199
+ .border-radius(4px);
200
+ }
201
+
202
+ // Default dropdown links
203
+ // -------------------------
204
+ // Make carets use linkColor to start
205
+ .nav-tabs .dropdown-toggle .caret,
206
+ .nav-pills .dropdown-toggle .caret {
207
+ border-top-color: @linkColor;
208
+ border-bottom-color: @linkColor;
209
+ margin-top: 6px;
210
+ }
211
+ .nav-tabs .dropdown-toggle:hover .caret,
212
+ .nav-pills .dropdown-toggle:hover .caret {
213
+ border-top-color: @linkColorHover;
214
+ border-bottom-color: @linkColorHover;
215
+ }
216
+
217
+ // Active dropdown links
218
+ // -------------------------
219
+ .nav-tabs .active .dropdown-toggle .caret,
220
+ .nav-pills .active .dropdown-toggle .caret {
221
+ border-top-color: @grayDark;
222
+ border-bottom-color: @grayDark;
223
+ }
224
+
225
+ // Active:hover dropdown links
226
+ // -------------------------
227
+ .nav > .dropdown.active > a:hover {
228
+ color: @black;
229
+ cursor: pointer;
230
+ }
231
+
232
+ // Open dropdowns
233
+ // -------------------------
234
+ .nav-tabs .open .dropdown-toggle,
235
+ .nav-pills .open .dropdown-toggle,
236
+ .nav > .open.active > a:hover {
237
+ color: @white;
238
+ background-color: @grayLight;
239
+ border-color: @grayLight;
240
+ }
241
+ .nav .open .caret,
242
+ .nav .open.active .caret,
243
+ .nav .open a:hover .caret {
244
+ border-top-color: @white;
245
+ border-bottom-color: @white;
246
+ .opacity(100);
247
+ }
248
+
249
+ // Dropdowns in stacked tabs
250
+ .tabs-stacked .open > a:hover {
251
+ border-color: @grayLight;
252
+ }
253
+
254
+
255
+
256
+ // TABBABLE
257
+ // --------
258
+
259
+
260
+ // COMMON STYLES
261
+ // -------------
262
+
263
+ // Clear any floats
264
+ .tabbable {
265
+ .clearfix();
266
+ }
267
+ .tab-content {
268
+ display: table; // prevent content from running below tabs
269
+ width: 100%;
270
+ }
271
+
272
+ // Remove border on bottom, left, right
273
+ .tabs-below .nav-tabs,
274
+ .tabs-right .nav-tabs,
275
+ .tabs-left .nav-tabs {
276
+ border-bottom: 0;
277
+ }
278
+
279
+ // Show/hide tabbable areas
280
+ .tab-content > .tab-pane,
281
+ .pill-content > .pill-pane {
282
+ display: none;
283
+ }
284
+ .tab-content > .active,
285
+ .pill-content > .active {
286
+ display: block;
287
+ }
288
+
289
+
290
+ // BOTTOM
291
+ // ------
292
+
293
+ .tabs-below .nav-tabs {
294
+ border-top: 1px solid #ddd;
295
+ }
296
+ .tabs-below .nav-tabs > li {
297
+ margin-top: -1px;
298
+ margin-bottom: 0;
299
+ }
300
+ .tabs-below .nav-tabs > li > a {
301
+ .border-radius(0 0 4px 4px);
302
+ &:hover {
303
+ border-bottom-color: transparent;
304
+ border-top-color: #ddd;
305
+ }
306
+ }
307
+ .tabs-below .nav-tabs .active > a,
308
+ .tabs-below .nav-tabs .active > a:hover {
309
+ border-color: transparent #ddd #ddd #ddd;
310
+ }
311
+
312
+ // LEFT & RIGHT
313
+ // ------------
314
+
315
+ // Common styles
316
+ .tabs-left .nav-tabs > li,
317
+ .tabs-right .nav-tabs > li {
318
+ float: none;
319
+ }
320
+ .tabs-left .nav-tabs > li > a,
321
+ .tabs-right .nav-tabs > li > a {
322
+ min-width: 74px;
323
+ margin-right: 0;
324
+ margin-bottom: 3px;
325
+ }
326
+
327
+ // Tabs on the left
328
+ .tabs-left .nav-tabs {
329
+ float: left;
330
+ margin-right: 19px;
331
+ border-right: 1px solid #ddd;
332
+ }
333
+ .tabs-left .nav-tabs > li > a {
334
+ margin-right: -1px;
335
+ .border-radius(4px 0 0 4px);
336
+ }
337
+ .tabs-left .nav-tabs > li > a:hover {
338
+ border-color: @grayLighter #ddd @grayLighter @grayLighter;
339
+ }
340
+ .tabs-left .nav-tabs .active > a,
341
+ .tabs-left .nav-tabs .active > a:hover {
342
+ border-color: #ddd transparent #ddd #ddd;
343
+ *border-right-color: @white;
344
+ }
345
+
346
+ // Tabs on the right
347
+ .tabs-right .nav-tabs {
348
+ float: right;
349
+ margin-left: 19px;
350
+ border-left: 1px solid #ddd;
351
+ }
352
+ .tabs-right .nav-tabs > li > a {
353
+ margin-left: -1px;
354
+ .border-radius(0 4px 4px 0);
355
+ }
356
+ .tabs-right .nav-tabs > li > a:hover {
357
+ border-color: @grayLighter @grayLighter @grayLighter #ddd;
358
+ }
359
+ .tabs-right .nav-tabs .active > a,
360
+ .tabs-right .nav-tabs .active > a:hover {
361
+ border-color: #ddd #ddd #ddd transparent;
362
+ *border-left-color: @white;
363
+ }
themes-ai1ec/vortex/less/print.less ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body { background:white; color:black; margin:0 }
2
+ #header, #navigation, #comments, #sidebar, #subcontent, #footer { display: none; }
3
+ #wpadminbar, footer { display: none; }
4
+ #page > header { display: none; }
5
+ #content { margin-top: -60px !important; }
6
+ *, .ai1ec-agenda-view .ai1ec-date { background: white !important; color: black !important; }
7
+ .thenly {
8
+ table.ai1ec-calendar-toolbar { display: none; }
9
+ .ai1ec-agenda-view .ai1ec-event.ai1ec-expanded { box-shadow: none; border: 2px solid gray !important; background: none !important }
10
+ .ai1ec-agenda-view h3.ai1ec-date-title { border: 2px solid gray !important; }
11
+ .ai1ec-agenda-view .ai1ec-event.ai1ec-expanded { }
12
+ ol.ai1ec-agenda-view h3.ai1ec-date-title { margin-top: 0.5em !important; border-radius: 0; }
13
+ h3.ai1ec-date-title { width: 5em; color: black; }
14
+ h3.ai1ec-date-title .ai1ec-month { display: inline; float: right; color: black; }
15
+ h3.ai1ec-date-title .ai1ec-day { padding: 0 !important; font-size: 1em !important; color: black; }
16
+ h3.ai1ec-date-title .ai1ec-weekday { display: inline; float: left; color: black; }
17
+
18
+ /* Agenda event description */
19
+ div.ai1ec-event-click, div.ai1ec-categories { display: none; }
20
+ div.ai1ec-event-summary, div.ai1ec-event-summary div.ai1ec-event-click, div.ai1ec-event-description { display: block !important; }
21
+ ol.ai1ec-agenda-view div.ai1ec-event-summary div.ai1ec-event-title { display: inline; }
22
+ ol.ai1ec-agenda-view div.ai1ec-event-summary div.ai1ec-event-time { display: inline; }
23
+ a.ai1ec-button { display: none; }
24
+ ol.ai1ec-agenda-view div.ai1ec-event-description { padding: 0 !important; }
25
+ ol.ai1ec-agenda-view div.ai1ec-event-overlay { display: none; }
26
+ .entry-meta { display: none; }
27
+ /* Hide the buttons */
28
+ #ai1ec-today, #ai1ec-expand-all, #ai1ec-collapse-all, #ai1ec-prev-page, #ai1ec-next-page { display: none; }
29
+ .ai1ec-subscribe, .ai1ec-subscribe-google { display: none; }
30
+ }
themes-ai1ec/vortex/less/reset.less ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Reset.less
2
+ // Adapted from Normalize.css http://github.com/necolas/normalize.css
3
+ // ------------------------------------------------------------------------
4
+
5
+ // Display in IE6-9 and FF3
6
+ // -------------------------
7
+
8
+ article,
9
+ aside,
10
+ details,
11
+ figcaption,
12
+ figure,
13
+ footer,
14
+ header,
15
+ hgroup,
16
+ nav,
17
+ section {
18
+ display: block;
19
+ }
20
+
21
+ // Display block in IE6-9 and FF3
22
+ // -------------------------
23
+
24
+ audio,
25
+ canvas,
26
+ video {
27
+ display: inline-block;
28
+ *display: inline;
29
+ *zoom: 1;
30
+ }
31
+
32
+ // Prevents modern browsers from displaying 'audio' without controls
33
+ // -------------------------
34
+
35
+ audio:not([controls]) {
36
+ display: none;
37
+ }
38
+
39
+ // Base settings
40
+ // -------------------------
41
+
42
+ html {
43
+ font-size: 100%;
44
+ -webkit-text-size-adjust: 100%;
45
+ -ms-text-size-adjust: 100%;
46
+ }
47
+ // Focus states
48
+ a:focus {
49
+ .tab-focus();
50
+ }
51
+ // Hover & Active
52
+ a:hover,
53
+ a:active {
54
+ outline: 0;
55
+ }
56
+
57
+ // Prevents sub and sup affecting line-height in all browsers
58
+ // -------------------------
59
+
60
+ sub,
61
+ sup {
62
+ position: relative;
63
+ font-size: 75%;
64
+ line-height: 0;
65
+ vertical-align: baseline;
66
+ }
67
+ sup {
68
+ top: -0.5em;
69
+ }
70
+ sub {
71
+ bottom: -0.25em;
72
+ }
73
+
74
+ // Img border in a's and image quality
75
+ // -------------------------
76
+
77
+ img {
78
+ height: auto;
79
+ border: 0;
80
+ -ms-interpolation-mode: bicubic;
81
+ vertical-align: middle;
82
+ }
83
+
84
+ // Forms
85
+ // -------------------------
86
+
87
+ // Font size in all browsers, margin changes, misc consistency
88
+ button,
89
+ input,
90
+ select,
91
+ textarea {
92
+ margin: 0;
93
+ font-size: 100%;
94
+ vertical-align: middle;
95
+ }
96
+ button,
97
+ input {
98
+ *overflow: visible; // Inner spacing ie IE6/7
99
+ line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
100
+ }
101
+ button::-moz-focus-inner,
102
+ input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
103
+ padding: 0;
104
+ border: 0;
105
+ }
106
+ button,
107
+ input[type="button"],
108
+ input[type="reset"],
109
+ input[type="submit"] {
110
+ cursor: pointer; // Cursors on all buttons applied consistently
111
+ -webkit-appearance: button; // Style clickable inputs in iOS
112
+ }
113
+ input[type="search"] { // Appearance in Safari/Chrome
114
+ -webkit-appearance: textfield;
115
+ -webkit-box-sizing: content-box;
116
+ -moz-box-sizing: content-box;
117
+ box-sizing: content-box;
118
+ }
119
+ input[type="search"]::-webkit-search-decoration,
120
+ input[type="search"]::-webkit-search-cancel-button {
121
+ -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
122
+ }
123
+ textarea {
124
+ overflow: auto; // Remove vertical scrollbar in IE6-9
125
+ vertical-align: top; // Readability and alignment cross-browser
126
+ }
themes-ai1ec/vortex/less/scaffolding.less ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Scaffolding
2
+ // Basic and global styles for generating a grid system, structural layout, and page templates
3
+ // -------------------------------------------------------------------------------------------
4
+
5
+
6
+ // Body reset
7
+ // ----------
8
+
9
+ body {
10
+ margin: 0;
11
+ font-family: @baseFontFamily;
12
+ font-size: @baseFontSize;
13
+ line-height: @baseLineHeight;
14
+ color: @textColor;
15
+ background-color: @bodyBackground;
16
+ }
17
+
18
+
19
+ // Links
20
+ // -----
21
+
22
+ a {
23
+ color: @linkColor;
24
+ text-decoration: none;
25
+ }
26
+ a:hover {
27
+ color: @linkColorHover;
28
+ text-decoration: underline;
29
+ }
themes-ai1ec/vortex/less/tooltip.less ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // TOOLTIP
2
+ // ------=
3
+
4
+ .tooltip {
5
+ position: absolute;
6
+ z-index: @zindexTooltip;
7
+ display: block;
8
+ visibility: visible;
9
+ padding: 5px;
10
+ font-size: 11px;
11
+ .opacity(0);
12
+ &.in { .opacity(80); }
13
+ &.top { margin-top: -2px; }
14
+ &.right { margin-left: 2px; }
15
+ &.bottom { margin-top: 2px; }
16
+ &.left { margin-left: -2px; }
17
+ &.top .tooltip-arrow { #popoverArrow > .top(); }
18
+ &.left .tooltip-arrow { #popoverArrow > .left(); }
19
+ &.bottom .tooltip-arrow { #popoverArrow > .bottom(); }
20
+ &.right .tooltip-arrow { #popoverArrow > .right(); }
21
+ }
22
+ .tooltip-inner {
23
+ max-width: 200px;
24
+ padding: 3px 8px;
25
+ color: @white;
26
+ text-align: center;
27
+ text-decoration: none;
28
+ background-color: @black;
29
+ .border-radius(4px);
30
+ }
31
+ .tooltip-arrow {
32
+ position: absolute;
33
+ width: 0;
34
+ height: 0;
35
+ }
themes-ai1ec/vortex/less/type.less ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Typography.less
2
+ // Headings, body text, lists, code, and more for a versatile and durable typography system
3
+ // ----------------------------------------------------------------------------------------
4
+
5
+
6
+ // BODY TEXT
7
+ // ---------
8
+
9
+ p {
10
+ margin: 0 0 @baseLineHeight / 2;
11
+ font-family: @baseFontFamily;
12
+ font-size: @baseFontSize;
13
+ line-height: @baseLineHeight;
14
+ small {
15
+ font-size: @baseFontSize - 2;
16
+ color: @grayLight;
17
+ }
18
+ }
19
+ .lead {
20
+ margin-bottom: @baseLineHeight;
21
+ font-size: 20px;
22
+ font-weight: 200;
23
+ line-height: @baseLineHeight * 1.5;
24
+ }
25
+
26
+ // HEADINGS
27
+ // --------
28
+
29
+ h1, h2, h3, h4, h5, h6 {
30
+ margin: 0;
31
+ font-family: @headingsFontFamily;
32
+ font-weight: @headingsFontWeight;
33
+ color: @headingsColor;
34
+ text-rendering: optimizelegibility; // Fix the character spacing for headings
35
+ small {
36
+ font-weight: normal;
37
+ color: @grayLight;
38
+ }
39
+ }
40
+ h1 {
41
+ font-size: 30px;
42
+ line-height: @baseLineHeight * 2;
43
+ small {
44
+ font-size: 18px;
45
+ }
46
+ }
47
+ h2 {
48
+ font-size: 24px;
49
+ line-height: @baseLineHeight * 2;
50
+ small {
51
+ font-size: 18px;
52
+ }
53
+ }
54
+ h3 {
55
+ line-height: @baseLineHeight * 1.5;
56
+ font-size: 18px;
57
+ small {
58
+ font-size: 14px;
59
+ }
60
+ }
61
+ h4, h5, h6 {
62
+ line-height: @baseLineHeight;
63
+ }
64
+ h4 {
65
+ font-size: 14px;
66
+ small {
67
+ font-size: 12px;
68
+ }
69
+ }
70
+ h5 {
71
+ font-size: 12px;
72
+ }
73
+ h6 {
74
+ font-size: 11px;
75
+ color: @grayLight;
76
+ text-transform: uppercase;
77
+ }
78
+
79
+ // Page header
80
+ .page-header {
81
+ padding-bottom: @baseLineHeight - 1;
82
+ margin: @baseLineHeight 0;
83
+ border-bottom: 1px solid @grayLighter;
84
+ }
85
+ .page-header h1 {
86
+ line-height: 1;
87
+ }
88
+
89
+
90
+
91
+ // LISTS
92
+ // -----
93
+
94
+ // Unordered and Ordered lists
95
+ ul, ol {
96
+ padding: 0;
97
+ margin: 0 0 @baseLineHeight / 2 25px;
98
+ }
99
+ ul ul,
100
+ ul ol,
101
+ ol ol,
102
+ ol ul {
103
+ margin-bottom: 0;
104
+ }
105
+ ul {
106
+ list-style: disc;
107
+ }
108
+ ol {
109
+ list-style: decimal;
110
+ }
111
+ li {
112
+ line-height: @baseLineHeight;
113
+ }
114
+ ul.unstyled,
115
+ ol.unstyled {
116
+ margin-left: 0;
117
+ list-style: none;
118
+ }
119
+
120
+ // Description Lists
121
+ dl {
122
+ margin-bottom: @baseLineHeight;
123
+ }
124
+ dt,
125
+ dd {
126
+ line-height: @baseLineHeight;
127
+ }
128
+ dt {
129
+ font-weight: bold;
130
+ line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug
131
+ }
132
+ dd {
133
+ margin-left: @baseLineHeight / 2;
134
+ }
135
+ // Horizontal layout (like forms)
136
+ .dl-horizontal {
137
+ dt {
138
+ float: left;
139
+ clear: left;
140
+ width: 120px;
141
+ text-align: right;
142
+ }
143
+ dd {
144
+ margin-left: 130px;
145
+ }
146
+ }
147
+
148
+ // MISC
149
+ // ----
150
+
151
+ // Horizontal rules
152
+ hr {
153
+ margin: @baseLineHeight 0;
154
+ border: 0;
155
+ border-top: 1px solid @hrBorder;
156
+ border-bottom: 1px solid @white;
157
+ }
158
+
159
+ // Emphasis
160
+ strong {
161
+ font-weight: bold;
162
+ }
163
+ em {
164
+ font-style: italic;
165
+ }
166
+ .muted {
167
+ color: @grayLight;
168
+ }
169
+
170
+ // Abbreviations and acronyms
171
+ abbr[title] {
172
+ border-bottom: 1px dotted #ddd;
173
+ cursor: help;
174
+ }
175
+ abbr.initialism {
176
+ font-size: 90%;
177
+ text-transform: uppercase;
178
+ }
179
+
180
+ // Blockquotes
181
+ blockquote {
182
+ padding: 0 0 0 15px;
183
+ margin: 0 0 @baseLineHeight;
184
+ border-left: 5px solid @grayLighter;
185
+ p {
186
+ margin-bottom: 0;
187
+ #font > .shorthand(16px,300,@baseLineHeight * 1.25);
188
+ }
189
+ small {
190
+ display: block;
191
+ line-height: @baseLineHeight;
192
+ color: @grayLight;
193
+ &:before {
194
+ content: '\2014 \00A0';
195
+ }
196
+ }
197
+
198
+ // Float right with text-align: right
199
+ &.pull-right {
200
+ float: right;
201
+ padding-left: 0;
202
+ padding-right: 15px;
203
+ border-left: 0;
204
+ border-right: 5px solid @grayLighter;
205
+ p,
206
+ small {
207
+ text-align: right;
208
+ }
209
+ }
210
+ }
211
+
212
+ // Quotes
213
+ q:before,
214
+ q:after,
215
+ blockquote:before,
216
+ blockquote:after {
217
+ content: "";
218
+ }
219
+
220
+ // Addresses
221
+ address {
222
+ display: block;
223
+ margin-bottom: @baseLineHeight;
224
+ line-height: @baseLineHeight;
225
+ font-style: normal;
226
+ }
227
+
228
+ // Misc
229
+ small {
230
+ font-size: 100%;
231
+ }
232
+ cite {
233
+ font-style: normal;
234
+ }
themes-ai1ec/vortex/less/utilities.less ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // UTILITY CLASSES
2
+ // ---------------
3
+
4
+ // Quick floats
5
+ .pull-right {
6
+ float: right;
7
+ }
8
+ .pull-left {
9
+ float: left;
10
+ }
11
+
12
+ // Toggling content
13
+ .hide {
14
+ display: none;
15
+ }
16
+ .show {
17
+ display: block;
18
+ }
19
+
20
+ // Visibility
21
+ .invisible {
22
+ visibility: hidden;
23
+ }
themes-ai1ec/vortex/less/variables.less ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @file
3
+ *
4
+ * This is adapted from Twitter Bootstrap. Change these variables to modify the
5
+ * look of the calendar.
6
+ */
7
+
8
+
9
+ // GLOBAL VALUES
10
+ // --------------------------------------------------
11
+
12
+
13
+ // Grays
14
+ // -------------------------
15
+ @black: #000;
16
+ @grayDarkest: #111;
17
+ @grayDarker: #222;
18
+ @grayDark: #333;
19
+ @gray: #555;
20
+ @grayLight: #999;
21
+ @grayLighter: #eee;
22
+ @grayLightest: #f0f0f0;
23
+ @white: #fff;
24
+
25
+
26
+ // Accent colors
27
+ // -------------------------
28
+ @blue: #049cdb;
29
+ @blueDark: #0064cd;
30
+ @blueLight: #E0EFFF;
31
+ @green: #49c157;
32
+ @red: #9d261d;
33
+ @yellow: #ffc40d;
34
+ @yellowLight: #ffd;
35
+ @orange: #f89406;
36
+ @pink: #c3325f;
37
+ @purple: #7a43b6;
38
+
39
+
40
+ // Scaffolding
41
+ // -------------------------
42
+ @bodyBackground: @white;
43
+ @textColor: @grayDark;
44
+ @textEmboss: @white;
45
+
46
+ // Links
47
+ // -------------------------
48
+ @linkColor: #507295;
49
+ @linkColorHover: darken(@linkColor, 15%);
50
+
51
+
52
+ // Typography
53
+ // -------------------------
54
+ @baseFontSize: 13px;
55
+ @baseFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
56
+ @baseLineHeight: 16px;
57
+ @altFontFamily: Georgia, "Times New Roman", Times, serif;
58
+
59
+ @headingsFontFamily: Calibri, Nunito, 'Helvetica Neue', Helvetica, Arial, sans-serif;
60
+ @headingsFontWeight: bold;
61
+ @headingsColor: @grayDark;
62
+
63
+
64
+ // Tables
65
+ // -------------------------
66
+ @tableBackground: @bodyBackground; // overall background-color
67
+ @tableBackgroundAccent: #f9f9f9; // for striping
68
+ @tableBackgroundHover: #f5f5f5; // for hover
69
+ @tableBorder: #ddd; // table and cell border
70
+ @tableLabelBackground: #f5f5f5;
71
+ @tableLabelText: mix(@textColor, @tableLabelBackground, 45%);
72
+
73
+ // Buttons
74
+ // -------------------------
75
+ @btnBackground: @white;
76
+ @btnBackgroundHighlight: darken(@btnBackground, 10%);
77
+ @btnBorder: darken(@btnBackground, 20%);
78
+
79
+ @btnPrimaryBackground: lighten(@linkColor, 5%);
80
+ @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%);
81
+
82
+ @btnInfoBackground: @blueLight;
83
+ @btnInfoBackgroundHighlight: @blueLight;
84
+
85
+ @btnSuccessBackground: #62c462;
86
+ @btnSuccessBackgroundHighlight: #51a351;
87
+
88
+ @btnWarningBackground: lighten(@orange, 15%);
89
+ @btnWarningBackgroundHighlight: @orange;
90
+
91
+ @btnDangerBackground: #ee5f5b;
92
+ @btnDangerBackgroundHighlight: #bd362f;
93
+
94
+ @btnInverseBackground: @gray;
95
+ @btnInverseBackgroundHighlight: @grayDarker;
96
+
97
+
98
+ // Forms
99
+ // -------------------------
100
+ @inputBackground: @bodyBackground;
101
+ @inputBorder: #ccc;
102
+ @inputDisabledBackground: @grayLighter;
103
+ @labelColor: @grayLight;
104
+
105
+
106
+ // Dropdowns
107
+ // -------------------------
108
+ @dropdownBackground: @bodyBackground;
109
+ @dropdownBorder: rgba(0,0,0,.2);
110
+ @dropdownLinkColor: @textColor;
111
+ @dropdownLinkColorHover: @black;
112
+ @dropdownLinkBackgroundHover: @blueLight;
113
+
114
+
115
+
116
+ // COMPONENT VARIABLES
117
+ // --------------------------------------------------
118
+
119
+ // Z-index master list
120
+ // -------------------------
121
+ // Used for a bird's eye view of components dependent on the z-axis
122
+ // Try to avoid customizing these :)
123
+ @zindexDropdown: 2000;
124
+ @zindexPopover: 2010;
125
+ @zindexTooltip: 2020;
126
+ @zindexFixedNavbar: 2030;
127
+ @zindexModalBackdrop: 2040;
128
+ @zindexModal: 2050;
129
+
130
+
131
+ // Input placeholder text color
132
+ // -------------------------
133
+ @placeholderText: @grayLight;
134
+
135
+
136
+ // Hr border color
137
+ // -------------------------
138
+ @hrBorder: @grayLighter;
139
+
140
+ /* Not used...
141
+ // Navbar
142
+ // -------------------------
143
+ @navbarHeight: 40px;
144
+ @navbarBackground: @grayDarker;
145
+ @navbarBackgroundHighlight: @grayDark;
146
+
147
+ @navbarText: @grayLight;
148
+ @navbarLinkColor: @grayLight;
149
+ @navbarLinkColorHover: @white;
150
+ @navbarLinkColorActive: @navbarLinkColorHover;
151
+ @navbarLinkBackgroundHover: transparent;
152
+ @navbarLinkBackgroundActive: @navbarBackground;
153
+
154
+ @navbarSearchBackground: lighten(@navbarBackground, 25%);
155
+ @navbarSearchBackgroundFocus: @white;
156
+ @navbarSearchBorder: darken(@navbarSearchBackground, 30%);
157
+ @navbarSearchPlaceholderColor: #ccc;
158
+
159
+
160
+ // Hero unit
161
+ // -------------------------
162
+ @heroUnitBackground: @grayLighter;
163
+ @heroUnitHeadingColor: inherit;
164
+ @heroUnitLeadColor: inherit;
165
+ */
166
+
167
+ // Form states and alerts
168
+ // -------------------------
169
+ @warningText: #c09853;
170
+ @warningBackground: #fcf8e3;
171
+ @warningBorder: darken(spin(@warningBackground, -10), 3%);
172
+
173
+ @errorText: #b94a48;
174
+ @errorBackground: #f2dede;
175
+ @errorBorder: darken(spin(@errorBackground, -10), 3%);
176
+
177
+ @successText: #468847;
178
+ @successBackground: #dff0d8;
179
+ @successBorder: darken(spin(@successBackground, -10), 5%);
180
+
181
+ @infoText: #3a87ad;
182
+ @infoBackground: #d9edf7;
183
+ @infoBorder: darken(spin(@infoBackground, -10), 7%);
184
+
185
+
186
+ // GRID
187
+ // --------------------------------------------------
188
+
189
+ // Default 940px grid
190
+ // -------------------------
191
+ @gridColumns: 12;
192
+ @gridColumnWidth: 60px;
193
+ @gridGutterWidth: 20px;
194
+ @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
195
+
196
+
197
+ // Fluid grid
198
+ // -------------------------
199
+ @fluidGridColumnWidth: 6.382978723%;
200
+ @fluidGridGutterWidth: 2.127659574%;
201
+
202
+
203
+ // ======================
204
+ // = Calendar constants =
205
+ // ======================
206
+
207
+ @categoryBackground: @grayLightest;
208
+ @categoryBackgroundHover: darken(@categoryBackground, 8%);
209
+ @categoryBorder: @categoryBackgroundHover;
210
+ @categoryActiveBackground: @blueLight;
211
+ @categoryActiveBackgroundHover: darken(@categoryActiveBackground, 8%);
212
+ @categoryActiveBorder: @categoryActiveBackgroundHover;
213
+ @tagActiveBackground: @categoryActiveBackground;
214
+ @todayColor: @yellowLight;
215
+
216
+ @eventDefaultColor: @linkColor;
217
+ @eventDefaultColorHover: @linkColorHover;
218
+ @eventStubAllDayText: @white;
219
+
220
+ @eventBorder: #D4D4D4;
221
+ @eventBorderHover: darken(@eventBorder, 15%);
222
+ @eventBackground: @bodyBackground;
223
+ @eventBackgroundBottom: #FAFAE3;
224
+ @eventText: @textColor;
225
+
226
+ @monthViewDateBackground: lighten(@blueLight, 2%);
227
+
228
+ @dayViewNowMarkerColor: #f2c539;
229
+ @singleEventLabelBackground: rgba(0,0,0,0.07);
230
+
231
+ @agendaDateTitleBorder: lighten(@linkColor, 20%);
232
+ @agendaDateTitleBackground: @bodyBackground;
233
+ @agendaDateTitleMonthText: @bodyBackground;
234
+ @agendaDateBackground: #f2f2f2;
235
+ @agendaTodayBackground: darken(desaturate(@todayColor, 30%), 8%);
{app/view → themes-ai1ec/vortex}/month.php RENAMED
@@ -1,26 +1,27 @@
1
- <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ) ?></h2>
2
- <span class="ai1ec-title-buttons">
3
- <a id="ai1ec-today" class="ai1ec-load-view ai1ec-button" href="#action=ai1ec_month&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
4
- <?php _e( 'Today', AI1EC_PLUGIN_NAME ) ?>
5
- </a>
6
- </span>
7
- <ul class="ai1ec-pagination">
8
- <?php foreach( $pagination_links as $link ): ?>
9
- <li>
10
- <a id="<?php echo $link['id'] ?>"
11
- class="ai1ec-load-view ai1ec-button"
12
- href="<?php echo esc_attr( $link['href'] ) ?>&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
13
- <?php echo esc_html( $link['text'] ) ?>
14
- </a>
15
- </li>
16
- <?php endforeach ?>
17
- </ul>
 
18
  <table class="ai1ec-month-view">
19
  <thead>
20
  <tr>
21
  <?php foreach( $weekdays as $weekday ): ?>
22
  <th class="ai1ec-weekday"><?php echo $weekday; ?></th>
23
- <?php endforeach // weekday ?>
24
  </tr>
25
  </thead>
26
  <tbody>
@@ -29,14 +30,26 @@
29
  <?php foreach( $week as $day ): ?>
30
  <?php if( $day['date'] ): ?>
31
  <td <?php if( $day['today'] ) echo 'class="ai1ec-today"' ?>>
 
 
 
 
 
 
 
 
 
 
32
  <div class="ai1ec-day">
33
  <div class="ai1ec-date"><?php echo $day['date'] ?></div>
34
  <?php foreach( $day['events'] as $event ): ?>
35
  <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
 
36
  class="ai1ec-event-container
37
  ai1ec-event-id-<?php echo $event->post_id ?>
38
  ai1ec-event-instance-id-<?php echo $event->instance_id ?>
39
- <?php if( $event->allday ) echo 'ai1ec-allday' ?>">
 
40
 
41
  <?php // Insert post ID for use by JavaScript filtering later ?>
42
  <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id ?>" />
1
+ <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ); ?></h2>
2
+ <div class="ai1ec-title-buttons btn-toolbar">
3
+ <div class="btn-group">
4
+ <a id="ai1ec-today" class="ai1ec-load-view btn btn-mini"
5
+ href="#action=ai1ec_month&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
6
+ <?php _e( 'Today', AI1EC_PLUGIN_NAME ); ?>
7
+ </a>
8
+ </div>
9
+ <div class="ai1ec-pagination btn-group pull-right">
10
+ <?php foreach( $pagination_links as $link ): ?>
11
+ <a id="<?php echo $link['id']; ?>"
12
+ class="ai1ec-load-view btn"
13
+ href="<?php echo esc_attr( $link['href'] ); ?>&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
14
+ <?php echo esc_html( $link['text'] ); ?>
15
+ </a>
16
+ <?php endforeach; ?>
17
+ </div>
18
+ </div>
19
  <table class="ai1ec-month-view">
20
  <thead>
21
  <tr>
22
  <?php foreach( $weekdays as $weekday ): ?>
23
  <th class="ai1ec-weekday"><?php echo $weekday; ?></th>
24
+ <?php endforeach; // weekday ?>
25
  </tr>
26
  </thead>
27
  <tbody>
30
  <?php foreach( $week as $day ): ?>
31
  <?php if( $day['date'] ): ?>
32
  <td <?php if( $day['today'] ) echo 'class="ai1ec-today"' ?>>
33
+
34
+ <?php
35
+ // TODO: This div should not be needed, but with multi-day
36
+ // event bars it is required until a better method of arranging
37
+ // events is contrived:
38
+ if( ! $week['added_stretcher'] ): ?>
39
+ <div class="ai1ec-day-stretcher"></div>
40
+ <?php $week['added_stretcher'] = TRUE; ?>
41
+ <?php endif; ?>
42
+
43
  <div class="ai1ec-day">
44
  <div class="ai1ec-date"><?php echo $day['date'] ?></div>
45
  <?php foreach( $day['events'] as $event ): ?>
46
  <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
47
+ <?php if( $event->multiday ) echo 'end-date="' . $event->multiday_end_date . '"'; ?>
48
  class="ai1ec-event-container
49
  ai1ec-event-id-<?php echo $event->post_id ?>
50
  ai1ec-event-instance-id-<?php echo $event->instance_id ?>
51
+ <?php if( $event->allday ) echo 'ai1ec-allday' ?>
52
+ <?php if( $event->multiday ) echo 'ai1ec-multiday' ?>">
53
 
54
  <?php // Insert post ID for use by JavaScript filtering later ?>
55
  <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id ?>" />
themes-ai1ec/vortex/oneday.php ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ); ?></h2>
2
+
3
+ <div class="ai1ec-title-buttons btn-toolbar">
4
+ <div class="btn-group">
5
+ <a id="ai1ec-today" class="ai1ec-load-view btn btn-mini"
6
+ href="#action=ai1ec_oneday&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
7
+ <?php _e( 'Today', AI1EC_PLUGIN_NAME ); ?>
8
+ </a>
9
+ </div>
10
+ <div class="ai1ec-pagination btn-group pull-right">
11
+ <?php foreach( $pagination_links as $link ) : ?>
12
+ <a id="<?php echo $link['id']; ?>"
13
+ class="ai1ec-load-view btn"
14
+ href="<?php echo esc_attr( $link['href'] ); ?>&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
15
+ <?php echo esc_html( $link['text'] ); ?>
16
+ </a>
17
+ <?php endforeach; ?>
18
+ </div>
19
+ </div>
20
+
21
+ <table class="ai1ec-oneday-view-original">
22
+ <thead>
23
+ <tr>
24
+ <?php foreach( $cell_array as $date => $day ): ?>
25
+ <th class="ai1ec-weekday <?php if( $day['today'] ) echo 'ai1ec-today' ?>">
26
+ <span class="ai1ec-weekday-date"><?php echo date_i18n( 'l', $date, true )?> </span>
27
+ </th>
28
+ <?php endforeach; // weekday ?>
29
+ </tr>
30
+ <tr>
31
+ <?php foreach( $cell_array as $day ) : ?>
32
+ <td class="ai1ec-allday-events <?php if( $day['today'] ) echo 'ai1ec-today' ?>">
33
+
34
+ <?php if( ! $done_allday_label ) : ?>
35
+ <div class="ai1ec-allday-label"><?php _e( 'All-day', AI1EC_PLUGIN_NAME ) ?></div>
36
+ <?php $done_allday_label = true ?>
37
+ <?php endif ?>
38
+
39
+ <?php foreach( $day['allday'] as $event ) : ?>
40
+ <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
41
+ class="ai1ec-event-container
42
+ ai1ec-event-id-<?php echo $event->post_id ?>
43
+ ai1ec-event-instance-id-<?php echo $event->instance_id ?>
44
+ ai1ec-allday
45
+ <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated' ?>
46
+ <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated' ?>">
47
+
48
+ <?php // Insert post ID for use by JavaScript filtering later ?>
49
+ <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id ?>" />
50
+
51
+ <div class="ai1ec-event-popup">
52
+ <div class="ai1ec-event-summary">
53
+ <?php if( $event->category_colors ): ?>
54
+ <div class="ai1ec-category-colors"><?php echo $event->category_colors ?></div>
55
+ <?php endif ?>
56
+ <?php if( $event->post_excerpt ): ?>
57
+ <strong><?php _e( 'Summary:', AI1EC_PLUGIN_NAME ) ?></strong>
58
+ <p><?php echo esc_html( $event->post_excerpt ) ?></p>
59
+ <?php endif ?>
60
+ <div class="ai1ec-read-more"><?php esc_html_e( 'click anywhere for details', AI1EC_PLUGIN_NAME ) ?></div>
61
+ </div>
62
+ <div class="ai1ec-event-popup-bg">
63
+ <span class="ai1ec-event-title">
64
+ <?php if( function_exists( 'mb_strimwidth' ) ) : ?>
65
+ <?php echo esc_html( mb_strimwidth( apply_filters( 'the_title', $event->post->post_title ), 0, 35, '...' ) ) ?></span>
66
+ <?php else : ?>
67
+ <?php $read_more = strlen( apply_filters( 'the_title', $event->post->post_title ) ) > 35 ? '...' : '' ?>
68
+ <?php echo esc_html( substr( apply_filters( 'the_title', $event->post->post_title ), 0, 35 ) . $read_more ); ?>
69
+ <?php endif; ?>
70
+ </span>
71
+ <small><?php esc_html_e( '(all-day)', AI1EC_PLUGIN_NAME ) ?></small>
72
+ </div>
73
+ </div><!-- .event-popup -->
74
+
75
+ <div class="ai1ec-event <?php if( $event->post_id == $active_event ) echo 'ai1ec-active-event' ?>" style="<?php echo $event->color_style ?>">
76
+ <span class="ai1ec-event-title"><?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ) ?></span>
77
+ </div>
78
+
79
+ </a>
80
+ <?php endforeach; // allday ?>
81
+
82
+ </td>
83
+ <?php endforeach; // weekday ?>
84
+ </tr>
85
+ </thead>
86
+ <tbody>
87
+ <tr class="ai1ec-oneday">
88
+ <td <?php if( $day['today'] ) echo 'class="ai1ec-today"'; ?>>
89
+
90
+ <div class="ai1ec-grid-container">
91
+ <?php for( $hour = 0; $hour < 24; $hour++ ) : ?>
92
+ <div class="ai1ec-hour-marker <?php if( $hour >= 8 && $hour < 18 ) echo 'ai1ec-business-hour'; ?>" style="top: <?php echo $hour * 60; ?>px;">
93
+ <div><?php echo esc_html( date_i18n( $time_format, gmmktime( $hour, 0 ), true ) ); ?></div>
94
+ </div>
95
+ <?php for( $quarter = 1; $quarter < 4; $quarter++ ) : ?>
96
+ <div class="ai1ec-quarter-marker" style="top: <?php echo $hour * 60 + $quarter * 15 ?>px;"></div>
97
+ <?php endfor; ?>
98
+ <?php endfor; ?>
99
+ <div class="ai1ec-now-marker" style="top: <?php echo $now_top ?>px;"></div>
100
+ </div>
101
+
102
+ <div class="ai1ec-day">
103
+ <?php foreach( $day['notallday'] as $notallday ) : ?>
104
+ <?php extract( $notallday ); ?>
105
+ <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id; ?>"
106
+ class="ai1ec-event-container
107
+ ai1ec-event-id-<?php echo $event->post_id; ?>
108
+ ai1ec-event-instance-id-<?php echo $event->instance_id; ?>
109
+ <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated'; ?>
110
+ <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated'; ?>"
111
+ style="top: <?php echo $top; ?>px;
112
+ height: <?php echo max( $height, 31 ); ?>px;
113
+ left: <?php echo $indent * 16 + 50; ?>px;
114
+ <?php echo $event->color_style; ?>
115
+ <?php if( $event->faded_color ) : ?>
116
+ border: 2px solid <?php echo $event->faded_color; ?> !important;
117
+ border-color: <?php echo $event->rgba_color; ?> !important;
118
+ background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 1, transparent ), color-stop( 1, <?php echo $event->rgba_color; ?> ) );
119
+ background-image: -webkit-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
120
+ background-image: -moz-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
121
+ background-image: -ms-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
122
+ background-image: -o-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
123
+ background-image: linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
124
+ <?php endif; ?>
125
+ ">
126
+
127
+ <?php if( $event->start_truncated ) : ?>
128
+ <div class="ai1ec-start-truncator">◤</div>
129
+ <?php endif ?>
130
+ <?php if( $event->end_truncated ) : ?>
131
+ <div class="ai1ec-end-truncator">◢</div>
132
+ <?php endif ?> <?php // Insert post ID for use by JavaScript filtering later ?>
133
+ <input type="hidden" class="ai1ec-post-id" value="<?php echo $event->post_id; ?>" />
134
+
135
+ <div class="ai1ec-event-popup">
136
+ <div class="ai1ec-event-summary"><?php if( $event->category_colors ): ?>
137
+ <div class="ai1ec-category-colors"><?php echo $event->category_colors; ?></div>
138
+ <?php endif; ?>
139
+ <?php if( $event->post_excerpt ): ?>
140
+ <strong><?php _e( 'Summary:', AI1EC_PLUGIN_NAME ); ?></strong>
141
+ <p><?php echo esc_html( $event->post_excerpt ); ?></p>
142
+ <?php endif; ?>
143
+ <div class="ai1ec-read-more"><?php esc_html_e( 'click anywhere for details', AI1EC_PLUGIN_NAME ); ?></div>
144
+ </div>
145
+ <div class="ai1ec-event-popup-bg">
146
+ <span class="ai1ec-event-time"><?php echo esc_html( $event->short_start_time ); ?></span>
147
+ <span class="ai1ec-event-title">
148
+ <?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ); ?>
149
+ </span>
150
+ </div>
151
+ </div>
152
+ <!-- .event-popup -->
153
+
154
+ <div class="ai1ec-event <?php if( $event->post_id == $active_event ) echo 'ai1ec-active-event' ?>">
155
+ <span class="ai1ec-event-time"><?php echo esc_html( $event->short_start_time ); ?></span>
156
+ <span class="ai1ec-event-title"><?php echo esc_html( apply_filters( 'the_title', $event->post->post_title ) ); ?></span>
157
+ </div>
158
+
159
+ </a>
160
+ <?php endforeach; // events ?>
161
+ </div>
162
+ </td>
163
+ </tr>
164
+ </tbody>
165
+ </table>
themes-ai1ec/vortex/screenshot.png ADDED
Binary file
themes-ai1ec/vortex/style.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Theme Name: Vortex
3
+ * Theme URI: http://then.ly/
4
+ * Author: Then.ly
5
+ * Author URI: http://then.ly/
6
+ * Description: The default All-in-One Calendar theme.
7
+ * Version: 1.0
8
+ * Tags: light, white, gray, blue
9
+ */
{app/view → themes-ai1ec/vortex}/week.php RENAMED
@@ -1,20 +1,21 @@
1
- <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ) ?></h2>
2
- <span class="ai1ec-title-buttons">
3
- <a id="ai1ec-today" class="ai1ec-load-view ai1ec-button" href="#action=ai1ec_week&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
4
- <?php _e( 'Today', AI1EC_PLUGIN_NAME ) ?>
5
- </a>
6
- </span>
7
- <ul class="ai1ec-pagination">
8
- <?php foreach( $pagination_links as $link ) : ?>
9
- <li>
10
- <a id="<?php echo $link['id'] ?>"
11
- class="ai1ec-load-view ai1ec-button"
12
- href="<?php echo esc_attr( $link['href'] ) ?>&amp;ai1ec_post_ids=<?php echo $post_ids ?>">
13
- <?php echo esc_html( $link['text'] ) ?>
14
- </a>
15
- </li>
16
- <?php endforeach ?>
17
- </ul>
 
18
  <table class="ai1ec-week-view-original">
19
  <thead>
20
  <tr>
@@ -106,11 +107,25 @@
106
  <?php extract( $notallday ) ?>
107
  <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
108
  class="ai1ec-event-container
109
- ai1ec-event-id-<?php echo $event->post_id ?>
110
- ai1ec-event-instance-id-<?php echo $event->instance_id ?>
111
- <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated' ?>
112
- <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated' ?>"
113
- style="top: <?php echo $top ?>px; height: <?php echo max( $height, 31 ) ?>px; left: <?php echo $indent * 8 ?>px; <?php echo $event->color_style ?> <?php if( $event->faded_color ) echo "border: 2px solid $event->faded_color !important;" ?> background: linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -o-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -moz-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important; background: -webkit-gradient( linear, left top, left bottom, color-stop( 0, # ), color-stop( 1, <?php echo $event->faded_color ?> ) ) !important; background: -webkit-linear-gradient( top, #fff, <?php echo $event->faded_color ?> ) !important;">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  <?php if( $event->start_truncated ) : ?><div class="ai1ec-start-truncator">◤</div><?php endif ?>
116
  <?php if( $event->end_truncated ) : ?><div class="ai1ec-end-truncator">◢</div><?php endif ?>
1
+ <h2 class="ai1ec-calendar-title"><?php echo esc_html( $title ); ?></h2>
2
+ <div class="ai1ec-title-buttons btn-toolbar">
3
+ <div class="btn-group">
4
+ <a id="ai1ec-today" class="ai1ec-load-view btn btn-mini"
5
+ href="#action=ai1ec_week&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
6
+ <?php _e( 'Today', AI1EC_PLUGIN_NAME ); ?>
7
+ </a>
8
+ </div>
9
+ <div class="ai1ec-pagination btn-group pull-right">
10
+ <?php foreach( $pagination_links as $link ) : ?>
11
+ <a id="<?php echo $link['id']; ?>"
12
+ class="ai1ec-load-view btn"
13
+ href="<?php echo esc_attr( $link['href'] ); ?>&amp;ai1ec_post_ids=<?php echo $post_ids; ?>">
14
+ <?php echo esc_html( $link['text'] ) ?>
15
+ </a>
16
+ <?php endforeach; ?>
17
+ </div>
18
+ </div>
19
  <table class="ai1ec-week-view-original">
20
  <thead>
21
  <tr>
107
  <?php extract( $notallday ) ?>
108
  <a href="<?php echo esc_attr( get_permalink( $event->post_id ) ) . $event->instance_id ?>"
109
  class="ai1ec-event-container
110
+ ai1ec-event-id-<?php echo $event->post_id; ?>
111
+ ai1ec-event-instance-id-<?php echo $event->instance_id; ?>
112
+ <?php if( $event->start_truncated ) echo 'ai1ec-start-truncated'; ?>
113
+ <?php if( $event->end_truncated ) echo 'ai1ec-end-truncated'; ?>"
114
+ style="top: <?php echo $top ?>px;
115
+ height: <?php echo max( $height, 31 ); ?>px;
116
+ left: <?php echo $indent * 8 ?>px;
117
+ <?php echo $event->color_style; ?>
118
+ <?php if( $event->faded_color ) : ?>
119
+ border: 2px solid <?php echo $event->faded_color; ?> !important;
120
+ border-color: <?php echo $event->rgba_color; ?> !important;
121
+ background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 1, transparent ), color-stop( 1, <?php echo $event->rgba_color; ?> ) );
122
+ background-image: -webkit-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
123
+ background-image: -moz-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
124
+ background-image: -ms-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
125
+ background-image: -o-linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
126
+ background-image: linear-gradient( top, transparent, <?php echo $event->rgba_color; ?> );
127
+ <?php endif; ?>
128
+ ">
129
 
130
  <?php if( $event->start_truncated ) : ?><div class="ai1ec-start-truncator">◤</div><?php endif ?>
131
  <?php if( $event->end_truncated ) : ?><div class="ai1ec-end-truncator">◢</div><?php endif ?>