wpForo Forum - Version 1.1.2

Version Description

| 26.02.2017 =

wpForo v1.1.2 Release Summary

  • Added: New topic type - Private
  • Added: Checkbox option on Topic editor: Private Topics
  • Added: Private/Public button with other moderation tools
  • Added: Profile buttons under Member Avatar on Members and Posts list
  • Added: Member Social Network information under avatar
  • Added: Phrase Packages for addon quick translation
  • Added: Polish (pl_PL) by Bogusaw Grecki
  • Added: Checking avatar size before uploading
  • Added Access: "Can set topic private" (Admins and Moderators)
  • Added Access: "Can set own topic private" (Regular users)
  • Added Access: "Can view private topic" (Admin, Moderator and Topic Creator)
  • Performance: Huge SQL optimization and built-in caching system
  • SEO Optimization: added rel="nofollow" to links with GET variables
  • New Addon: wpForo - Private Messages
  • New Addon: wpForo - Ads Manager (comming next week...)
  • Fixed Bug: Menu problem on IE / Edge
  • Fixed Bug: SubForums problem. Title and topics atatched to wrong forum
  • Fixed Bug: Search result displays private topics to non-permitted users
  • Fixed Bug: Private Forum topics in RSS Feed
  • Fixed Bug: Topic Pagination problem (conflict with pot pagination option)
  • Fixed Bug: RTL - Font color switcher problem
  • Fixed Bug: Removed Delete and Ban buttons for current user in dashboard
  • Fixed Bug: Typo CAN titles Dahsboard > Dashboard (needs re-translation)
  • Fixed Bug: Online Users widget avatar size problem
  • Fixed Bug: Signature image oversize
  • Fixed Bug: Q&A Layout recent topics order by sticky and created date
  • Fixed Bug: Editor - Add Link pop-up window size issue on mobile
  • Fixed Bug: Undefined variable: size_da in .../dashboard.php on line 182
  • Fixed Bug: SSL Problem

IMPORTANT:

  • To load old customized colors please refresh forum page twice.
  • If you have a Cache Plugin, please delete all caches after wpForo update.
  • If you use CDN and found some issue please purge it.
  • If you have custom forum template, please update these template files:
    • profile.php
    • members.php
    • layouts/1/post.php
    • layouts/2/post.php
Download this release

Release Info

Developer Tomdever
Plugin Icon 128x128 wpForo Forum
Version 1.1.2
Comparing to
See all releases

Code changes from version 1.1.1 to 1.1.2

Files changed (118) hide show
  1. readme.txt +70 -18
  2. wpf-admin/admin.php +6 -6
  3. wpf-admin/dashboard.php +6 -1
  4. wpf-admin/forum.php +2 -2
  5. wpf-admin/member.php +10 -10
  6. wpf-admin/phrase.php +4 -4
  7. wpf-admin/themes.php +1 -1
  8. wpf-admin/xml/english.xml +8 -1
  9. wpf-assets/addons/pm/header-off.png +0 -0
  10. wpf-assets/addons/pm/header.png +0 -0
  11. wpf-assets/css/font-awesome/LICENSE +22 -0
  12. wpf-assets/css/font-awesome/css/font-awesome.css +2337 -0
  13. wpf-assets/css/font-awesome/css/font-awesome.min.css +4 -4
  14. wpf-assets/css/font-awesome/font-awesome-rtl.css +358 -0
  15. wpf-assets/css/font-awesome/fonts/FontAwesome.otf +0 -0
  16. wpf-assets/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  17. wpf-assets/css/font-awesome/fonts/fontawesome-webfont.svg +2671 -685
  18. wpf-assets/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  19. wpf-assets/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  20. wpf-assets/css/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  21. wpf-assets/css/font-awesome/less/animated.less +34 -34
  22. wpf-assets/css/font-awesome/less/bordered-pulled.less +25 -25
  23. wpf-assets/css/font-awesome/less/core.less +12 -12
  24. wpf-assets/css/font-awesome/less/fixed-width.less +6 -6
  25. wpf-assets/css/font-awesome/less/font-awesome.less +18 -18
  26. wpf-assets/css/font-awesome/less/icons.less +789 -733
  27. wpf-assets/css/font-awesome/less/larger.less +13 -13
  28. wpf-assets/css/font-awesome/less/list.less +19 -19
  29. wpf-assets/css/font-awesome/less/mixins.less +60 -60
  30. wpf-assets/css/font-awesome/less/path.less +15 -15
  31. wpf-assets/css/font-awesome/less/rotated-flipped.less +20 -20
  32. wpf-assets/css/font-awesome/less/screen-reader.less +5 -5
  33. wpf-assets/css/font-awesome/less/stacked.less +20 -20
  34. wpf-assets/css/font-awesome/less/variables.less +800 -744
  35. wpf-assets/css/font-awesome/scss/_animated.scss +34 -34
  36. wpf-assets/css/font-awesome/scss/_bordered-pulled.scss +25 -25
  37. wpf-assets/css/font-awesome/scss/_core.scss +12 -12
  38. wpf-assets/css/font-awesome/scss/_fixed-width.scss +6 -6
  39. wpf-assets/css/font-awesome/scss/_icons.scss +789 -733
  40. wpf-assets/css/font-awesome/scss/_larger.scss +13 -13
  41. wpf-assets/css/font-awesome/scss/_list.scss +19 -19
  42. wpf-assets/css/font-awesome/scss/_mixins.scss +60 -60
  43. wpf-assets/css/font-awesome/scss/_path.scss +15 -15
  44. wpf-assets/css/font-awesome/scss/_rotated-flipped.scss +20 -20
  45. wpf-assets/css/font-awesome/scss/_screen-reader.scss +5 -5
  46. wpf-assets/css/font-awesome/scss/_stacked.scss +20 -20
  47. wpf-assets/css/font-awesome/scss/_variables.scss +800 -744
  48. wpf-assets/css/font-awesome/scss/font-awesome.scss +18 -18
  49. wpf-assets/images/sn/aim.png +0 -0
  50. wpf-assets/images/sn/facebook.png +0 -0
  51. wpf-assets/images/sn/gtalk.png +0 -0
  52. wpf-assets/images/sn/icq.png +0 -0
  53. wpf-assets/images/sn/msn.png +0 -0
  54. wpf-assets/images/sn/skype.png +0 -0
  55. wpf-assets/images/sn/twitter.png +0 -0
  56. wpf-assets/images/sn/yahoo.png +0 -0
  57. wpf-assets/js/ajax.js +53 -4
  58. wpf-assets/js/frontend.js +25 -2
  59. wpf-includes/class-forums.php +7 -7
  60. wpf-includes/class-members.php +14 -11
  61. wpf-includes/class-permissions.php +31 -12
  62. wpf-includes/class-phrases.php +24 -14
  63. wpf-includes/class-posts.php +98 -23
  64. wpf-includes/class-subscribes.php +10 -5
  65. wpf-includes/class-template.php +163 -27
  66. wpf-includes/class-topics.php +56 -5
  67. wpf-includes/class-usergroups.php +22 -3
  68. wpf-includes/functions-installation.php +67 -28
  69. wpf-includes/functions-template.php +17 -4
  70. wpf-includes/functions.php +77 -10
  71. wpf-includes/install-sql.php +8 -4
  72. wpf-includes/wpf-actions.php +11 -3
  73. wpf-includes/wpf-hooks.php +96 -17
  74. wpf-includes/wpf-phrases.php +26 -13
  75. wpf-languages/wpforo-cs_CZ.mo +0 -0
  76. wpf-languages/wpforo-cs_CZ.po +3332 -3282
  77. wpf-languages/wpforo-de_DE.mo +0 -0
  78. wpf-languages/wpforo-de_DE.po +3372 -3324
  79. wpf-languages/wpforo-es_ES.mo +0 -0
  80. wpf-languages/wpforo-es_ES.po +3388 -3317
  81. wpf-languages/wpforo-es_MX.mo +0 -0
  82. wpf-languages/wpforo-es_MX.po +3388 -3317
  83. wpf-languages/wpforo-fa_IR.mo +0 -0
  84. wpf-languages/wpforo-fa_IR.po +1046 -666
  85. wpf-languages/wpforo-fr_FR.mo +0 -0
  86. wpf-languages/wpforo-fr_FR.po +191 -93
  87. wpf-languages/wpforo-he_IL.po +3207 -3207
  88. wpf-languages/wpforo-ja.mo +0 -0
  89. wpf-languages/wpforo-ja.po +3063 -3063
  90. wpf-languages/wpforo-ko_KR.mo +0 -0
  91. wpf-languages/wpforo-ko_KR.po +3428 -3357
  92. wpf-languages/wpforo-nl_NL.mo +0 -0
  93. wpf-languages/wpforo-nl_NL.po +3429 -3358
  94. wpf-languages/wpforo-pl_PL.mo +0 -0
  95. wpf-languages/wpforo-pl_PL.po +3415 -0
  96. wpf-languages/wpforo-ru_RU.mo +0 -0
  97. wpf-languages/wpforo-ru_RU.po +3031 -3028
  98. wpf-languages/wpforo.pot +199 -149
  99. wpf-themes/classic/colors.css +40 -17
  100. wpf-themes/classic/footer.php +5 -2
  101. wpf-themes/classic/functions.php +6 -1
  102. wpf-themes/classic/index.php +127 -115
  103. wpf-themes/classic/layouts/1/forum.php +1 -1
  104. wpf-themes/classic/layouts/1/post.php +14 -4
  105. wpf-themes/classic/layouts/2/post.php +9 -5
  106. wpf-themes/classic/layouts/3/forum.php +1 -1
  107. wpf-themes/classic/layouts/3/post.php +12 -10
  108. wpf-themes/classic/members.php +11 -4
  109. wpf-themes/classic/profile-account.php +3 -3
  110. wpf-themes/classic/profile-home.php +9 -9
  111. wpf-themes/classic/profile-subscriptions.php +1 -0
  112. wpf-themes/classic/profile.php +13 -9
  113. wpf-themes/classic/style-rtl.css +19 -26
  114. wpf-themes/classic/style.css +24 -29
  115. wpf-themes/classic/styles/css.php +1 -16
  116. wpf-themes/classic/widgets-rtl.css +1 -1
  117. wpf-themes/classic/widgets.css +1 -1
  118. wpforo.php +29 -27
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: gVectors Team
3
Tags: forum, community, discussion, bulletin board, question and answers, qa, support, foro, forums
4
Requires at least: 4.1
5
Tested up to: 4.7
6
- Stable tag: 1.1.1
7
License: GPLv2 or later
8
License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
@@ -14,7 +14,8 @@ New Forum plugin. Everything you need to run an efficient and professional commu
14
New Generation of WordPress forum plugins made by [gVectors Team](http://gvectors.com/). Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features.
15
16
<blockquote>
17
- This is a new forum plugin. If you found some issue or bug please open a support topic in plugin page or in our support forum: http://wpforo.com/community/.
18
<br/><br/>
19
</blockquote>
20
@@ -33,18 +34,20 @@ Complete Question & Answers discussion board for professional support and for co
33
* | German (de_DE) by Markus Herrmann
34
* | Spanish (es_ES) Poncho Camacho
35
* | Spanish (Mexico) (es_MX) Poncho Camacho
36
- * | French (fr_FR) by Julien Coopmann
37
* | Persian (fa_IR) by wpforo.ir
38
* | Hebrew (he_IL) Gal Zilberman
39
* | Japanese (JA_ja) by Seg Way
40
* | Korean (ko_KO) by Jeehwan Song
41
- * | Dutch(nl_NL) Ger Metselaar i.o.v. Parma multimedia BV
42
* | Russian (ru_RU) by Dmitry Butkevich
43
44
= wpForo Addons =
45
46
* | [wpForo - Embeds](http://gvectors.com/product/wpforo-embeds/)
47
* | [wpForo - Advanced Attachments](http://gvectors.com/product/wpforo-advanced-attachments/)
48
49
= WPFORO FEATURES =
50
@@ -71,12 +74,14 @@ Complete Question & Answers discussion board for professional support and for co
71
* wpForo Anti-Spam...
72
* Social Network Sharing Buttons...
73
* [Go2wpForo](http://wpforo.com/community/migrate-to-wpforo-from-other-forum-plugins/migrate-to-wpforo-go2wpforo-tool/) Migration Tool...
74
- * wpForo Documentation...
75
76
== Installation ==
77
78
1. Install the plugin through the WordPress plugins screen directly or upload the plugin files to the `/wp-content/plugins/wpforo` directory
79
2. Activate the plugin through the 'Plugins' screen in WordPress
80
81
== Frequently Asked Questions ==
82
@@ -85,23 +90,29 @@ Complete Question & Answers discussion board for professional support and for co
85
86
1. **Forum Page:** wpForo creates a page with `/community/` slug. If this slug is used you'll have `/community-2/` or `/community-3/` slug. You can find the correct one in Forums > Settings > General Tab. Make sure you use WordPress permalinks. wpForo doesn't work with default `?p=1` URL structure.
87
88
- 2. **Change Forum Page:** If you need to change forum page you should put `[wpforo]` shortcode in new page content and insert the new page URL in Dashboard > Forums > Settings > General Tab > "Forum Base URL" option field.
89
90
- 3. **Forum Menu:** In Dashboard > Appearance > Menu admin page wpForo creates new navigation menu called "wpForo Navigation (wpForo Menu)" and attaches this menu to wpForo Menu location, it's the main, top forum menu. You can customize forum menu items through Appearance > Menu settings.
91
92
- 4. **Forum Sidebar and Widgets:** In Dashboard > Appearance > Widgets wpForo creates forum specific widgets and wpForo Sidebar. if you use wpForo sidebar you should make sure the forum page has not other sidebars, the page Template should be set "Full Width" or "One Column" or "Two Column with Right Sidebar". wpForo Sidebar is a left sidebar.
93
94
- 5. **Forum Management:** In Dashboard > Forums > Forums admin page you can manage forums, add/edit/delete/order, set parent-child relationship, manage Forum Access Roles for each Usergroup.
95
96
- 6. **Forum Style & Colors:** In Dashboard > Settings > Styles admin page you can set forum Style/Colors. You can choose either "Default (Blue)", "Red", "Green", "Orange", "Grey".
97
98
7. **Login and Registration** In Forums > Settings > Features admin page you can force WP to use wpForo Login and Register pages or keep default WordPress pages. For custom Login/Register/Lostpassword Pages please navigate to Members Tab and use "Custom Authorization URLs" option.
99
100
8. **Forum is loaded on website top:** In this case you should navigate to Forums > Settings > Features admin page and check "Enable Output Buffer" option.
101
102
- 9. **Forums don't show up on the main page** Please read this FAQ topic: http://wpforo.com/community/faq/forums-dont-show-up-on-the-main-page/
103
104
- 10. **wpForo Shortcodes** - http://wpforo.com/community/faq/wpforo-shortcodes/
105
106
wpForo Support Forum: <http://wpforo.com/community/>
107
@@ -127,6 +138,53 @@ wpForo Support Forum: <http://wpforo.com/community/>
127
128
== Changelog ==
129
130
= 1.1.1 | 20.12.2016 =
131
132
* Added: Compatible with WordPress 4.7
@@ -141,12 +199,6 @@ wpForo Support Forum: <http://wpforo.com/community/>
141
* Fixed Bug: Disable banning yourself
142
* [More info...](http://wpforo.com/community/wpforo-announcements/wpforo-1-1-1-is-released/)
143
144
- IMPORTANT:
145
-
146
- - To load old customized colors please refresh forum page twice.
147
- - If you have a Cache Plugin, please delete all caches after wpForo update.
148
- - If you use CDN and found some issue please purge it.
149
-
150
151
= 1.1.0 | 04.12.2016 =
152
3
Tags: forum, community, discussion, bulletin board, question and answers, qa, support, foro, forums
4
Requires at least: 4.1
5
Tested up to: 4.7
6
+ Stable tag: 1.1.2
7
License: GPLv2 or later
8
License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
14
New Generation of WordPress forum plugins made by [gVectors Team](http://gvectors.com/). Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features.
15
16
<blockquote>
17
+ Community and Demo: http://wpforo.com/community/ <br/>
18
+ Documentation: http://wpforo.com/documentation/
19
<br/><br/>
20
</blockquote>
21
34
* | German (de_DE) by Markus Herrmann
35
* | Spanish (es_ES) Poncho Camacho
36
* | Spanish (Mexico) (es_MX) Poncho Camacho
37
* | Persian (fa_IR) by wpforo.ir
38
* | Hebrew (he_IL) Gal Zilberman
39
* | Japanese (JA_ja) by Seg Way
40
* | Korean (ko_KO) by Jeehwan Song
41
+ * | Dutch (nl_NL) Ger Metselaar i.o.v. Parma multimedia BV
42
* | Russian (ru_RU) by Dmitry Butkevich
43
+ * | Polish (pl_PL) by Bogusław Górecki
44
+ * | French (fr_FR) by Julien Coopmann | Florent Lanternier | Youri Le Cottier
45
46
= wpForo Addons =
47
48
* | [wpForo - Embeds](http://gvectors.com/product/wpforo-embeds/)
49
* | [wpForo - Advanced Attachments](http://gvectors.com/product/wpforo-advanced-attachments/)
50
+ * | [wpForo - Private Messages](http://gvectors.com/product/wpforo-private-messages/)
51
52
= WPFORO FEATURES =
53
74
* wpForo Anti-Spam...
75
* Social Network Sharing Buttons...
76
* [Go2wpForo](http://wpforo.com/community/migrate-to-wpforo-from-other-forum-plugins/migrate-to-wpforo-go2wpforo-tool/) Migration Tool...
77
+
78
79
== Installation ==
80
81
1. Install the plugin through the WordPress plugins screen directly or upload the plugin files to the `/wp-content/plugins/wpforo` directory
82
2. Activate the plugin through the 'Plugins' screen in WordPress
83
+ 3. Getting Started Doc http://wpforo.com/docs/root/getting-started/
84
+
85
86
== Frequently Asked Questions ==
87
90
91
1. **Forum Page:** wpForo creates a page with `/community/` slug. If this slug is used you'll have `/community-2/` or `/community-3/` slug. You can find the correct one in Forums > Settings > General Tab. Make sure you use WordPress permalinks. wpForo doesn't work with default `?p=1` URL structure.
92
93
+ 2. **Change Forum Page:**
94
+ http://wpforo.com/docs/root/getting-started/forum-page/change-forum-page/
95
96
+ 3. **Forum Menu:**
97
+ http://wpforo.com/docs/root/getting-started/forum-menu/
98
99
+ 4. **Forum Sidebar and Widgets:**
100
+ http://wpforo.com/docs/root/getting-started/forum-sidebar-and-widgets/
101
102
+ 5. **Forum Management:** http://wpforo.com/docs/root/categories-and-forums/forum-manager/
103
104
+ 6. **Forum Style & Colors:**
105
+ http://wpforo.com/docs/root/wpforo-settings/style-settings/
106
107
7. **Login and Registration** In Forums > Settings > Features admin page you can force WP to use wpForo Login and Register pages or keep default WordPress pages. For custom Login/Register/Lostpassword Pages please navigate to Members Tab and use "Custom Authorization URLs" option.
108
109
8. **Forum is loaded on website top:** In this case you should navigate to Forums > Settings > Features admin page and check "Enable Output Buffer" option.
110
111
+ 9. **Forums don't show up on the main page** Please read this FAQ topic:
112
+ http://wpforo.com/community/faq/forums-dont-show-up-on-the-main-page/
113
114
+ 10. **wpForo Shortcodes**
115
+ http://wpforo.com/community/faq/wpforo-shortcodes/
116
117
wpForo Support Forum: <http://wpforo.com/community/>
118
138
139
== Changelog ==
140
141
+
142
+ = 1.1.2 | 26.02.2017 =
143
+
144
+ [wpForo v1.1.2 Release Summary](http://wpforo.com/community/wpforo-announcements/wpforo-1-1-2-is-released/)
145
+
146
+ * Added: New topic type - Private
147
+ * Added: Checkbox option on Topic editor: Private Topics
148
+ * Added: Private/Public button with other moderation tools
149
+ * Added: Profile buttons under Member Avatar on Members and Posts list
150
+ * Added: Member Social Network information under avatar
151
+ * Added: Phrase Packages for addon quick translation
152
+ * Added: Polish (pl_PL) by Bogusław Górecki
153
+ * Added: Checking avatar size before uploading
154
+ * Added Access: "Can set topic private" (Admins and Moderators)
155
+ * Added Access: "Can set own topic private" (Regular users)
156
+ * Added Access: "Can view private topic" (Admin, Moderator and Topic Creator)
157
+ * Performance: Huge SQL optimization and built-in caching system
158
+ * SEO Optimization: added rel="nofollow" to links with GET variables
159
+ * New Addon: [wpForo - Private Messages](http://gvectors.com/product/wpforo-private-messages/)
160
+ * New Addon: wpForo - Ads Manager (comming next week...)
161
+ * Fixed Bug: Menu problem on IE / Edge
162
+ * Fixed Bug: SubForums problem. Title and topics atatched to wrong forum
163
+ * Fixed Bug: Search result displays private topics to non-permitted users
164
+ * Fixed Bug: Private Forum topics in RSS Feed
165
+ * Fixed Bug: Topic Pagination problem (conflict with pot pagination option)
166
+ * Fixed Bug: RTL - Font color switcher problem
167
+ * Fixed Bug: Removed Delete and Ban buttons for current user in dashboard
168
+ * Fixed Bug: Typo CAN titles Dahsboard > Dashboard (needs re-translation)
169
+ * Fixed Bug: Online Users widget avatar size problem
170
+ * Fixed Bug: Signature image oversize
171
+ * Fixed Bug: Q&A Layout recent topics order by sticky and created date
172
+ * Fixed Bug: Editor - Add Link pop-up window size issue on mobile
173
+ * Fixed Bug: Undefined variable: size_da in .../dashboard.php on line 182
174
+ * Fixed Bug: SSL Problem
175
+
176
+ IMPORTANT:
177
+
178
+ - To load old customized colors please refresh forum page twice.
179
+ - If you have a Cache Plugin, please delete all caches after wpForo update.
180
+ - If you use CDN and found some issue please purge it.
181
+ - If you have custom forum template, please update these template files:
182
+ * profile.php
183
+ * members.php
184
+ * layouts/1/post.php
185
+ * layouts/2/post.php
186
+
187
+
188
= 1.1.1 | 20.12.2016 =
189
190
* Added: Compatible with WordPress 4.7
199
* Fixed Bug: Disable banning yourself
200
* [More info...](http://wpforo.com/community/wpforo-announcements/wpforo-1-1-1-is-released/)
201
202
203
= 1.1.0 | 04.12.2016 =
204
wpf-admin/admin.php CHANGED
@@ -8,15 +8,15 @@
8
$position = ( isset($wpforo->general_options['menu_position']) && $wpforo->general_options['menu_position'] > 0 ) ? $wpforo->general_options['menu_position'] : 23;
9
if( $wpforo->current_user_groupid == 1 ||
10
$wpforo->current_user_groupid == 2 ||
11
- $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vm' ) ||
12
- ( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'cf' ) &&
13
- $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'ef' ) &&
14
- $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'df' ) )
15
) add_menu_page(__('Dashboard', 'wpforo'), __('Forums', 'wpforo'), 'read', 'wpforo-community', 'wpforo_toplevel_page', 'dashicons-format-chat', $position);
16
if( $wpforo->current_user_groupid == 1 || $wpforo->current_user_groupid == 2 ) add_submenu_page('wpforo-community', __('Dashboard', 'wpforo'), __('Dashboard', 'wpforo'), 'read', 'wpforo-community', 'wpforo_toplevel_page' );
17
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'cf' ) && $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'ef' ) && $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'df' ) ) add_submenu_page('wpforo-community', __('Forums', 'wpforo'), __('Forums', 'wpforo'), 'read', 'wpforo-forums', 'wpforo_forum_menu');
18
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Settings', 'wpforo'), __('Settings', 'wpforo'), 'read', 'wpforo-settings', 'wpforo_settings');
19
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vm' ) ) add_submenu_page('wpforo-community', __('Members', 'wpforo'), __('Members', 'wpforo'), 'read', 'wpforo-members', 'wpforo_member_menu');
20
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Usergroups', 'wpforo'), __('Usergroups', 'wpforo'), 'read', 'wpforo-usergroups', 'wpforo_usergroups_menu');
21
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Phrases', 'wpforo'), __('Phrases', 'wpforo'), 'read', 'wpforo-phrases', 'wpforo_phrases');
22
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Themes', 'wpforo'), __('Themes', 'wpforo'), 'read', 'wpforo-themes', 'wpforo_themes');
8
$position = ( isset($wpforo->general_options['menu_position']) && $wpforo->general_options['menu_position'] > 0 ) ? $wpforo->general_options['menu_position'] : 23;
9
if( $wpforo->current_user_groupid == 1 ||
10
$wpforo->current_user_groupid == 2 ||
11
+ $wpforo->perm->usergroup_can('vm') ||
12
+ ( $wpforo->perm->usergroup_can('cf') &&
13
+ $wpforo->perm->usergroup_can('ef') &&
14
+ $wpforo->perm->usergroup_can('df') )
15
) add_menu_page(__('Dashboard', 'wpforo'), __('Forums', 'wpforo'), 'read', 'wpforo-community', 'wpforo_toplevel_page', 'dashicons-format-chat', $position);
16
if( $wpforo->current_user_groupid == 1 || $wpforo->current_user_groupid == 2 ) add_submenu_page('wpforo-community', __('Dashboard', 'wpforo'), __('Dashboard', 'wpforo'), 'read', 'wpforo-community', 'wpforo_toplevel_page' );
17
+ if( $wpforo->perm->usergroup_can('cf') && $wpforo->perm->usergroup_can('ef') && $wpforo->perm->usergroup_can('df') ) add_submenu_page('wpforo-community', __('Forums', 'wpforo'), __('Forums', 'wpforo'), 'read', 'wpforo-forums', 'wpforo_forum_menu');
18
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Settings', 'wpforo'), __('Settings', 'wpforo'), 'read', 'wpforo-settings', 'wpforo_settings');
19
+ if( $wpforo->perm->usergroup_can('vm') ) add_submenu_page('wpforo-community', __('Members', 'wpforo'), __('Members', 'wpforo'), 'read', 'wpforo-members', 'wpforo_member_menu');
20
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Usergroups', 'wpforo'), __('Usergroups', 'wpforo'), 'read', 'wpforo-usergroups', 'wpforo_usergroups_menu');
21
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Phrases', 'wpforo'), __('Phrases', 'wpforo'), 'read', 'wpforo-phrases', 'wpforo_phrases');
22
if( $wpforo->current_user_groupid == 1 ) add_submenu_page('wpforo-community', __('Themes', 'wpforo'), __('Themes', 'wpforo'), 'read', 'wpforo-themes', 'wpforo_themes');
wpf-admin/dashboard.php CHANGED
@@ -116,6 +116,8 @@
116
</div>
117
</div><!-- widget / postbox -->
118
119
</div><!-- normal-sortables -->
120
</div><!-- wpforo_postbox_container -->
121
@@ -153,6 +155,7 @@
153
<td class="wpf-dw-td-value"><?php echo intval($statistic['online_members_count']) ?></td>
154
</tr>
155
<?php
156
$upload_dir = wp_upload_dir();
157
if( is_dir( $upload_dir['basedir'] . '/wpforo/avatars/') ) $size_avatar = wpforo_dir_size( $upload_dir['basedir'] . '/wpforo/avatars' );
158
if( is_dir( $upload_dir['basedir'] . '/wpforo/default_attachments/') ) $size_da = wpforo_dir_size( $upload_dir['basedir'] . '/wpforo/default_attachments' );
@@ -208,6 +211,8 @@
208
</div>
209
</div><!-- widget / postbox -->
210
211
</div><!-- normal-sortables -->
212
</div><!-- wpforo_postbox_container -->
213
<?php endif; ?>
@@ -215,7 +220,7 @@
215
<div class="postbox-container" id="postbox-container-3">
216
<div class="meta-box-sortables ui-sortable" id="normal-sortables">
217
218
-
219
220
</div><!-- normal-sortables -->
221
</div><!-- wpforo_postbox_container -->
116
</div>
117
</div><!-- widget / postbox -->
118
119
+ <?php do_action( 'wpforo_dashboard_widgets_col1', $wpforo ); ?>
120
+
121
</div><!-- normal-sortables -->
122
</div><!-- wpforo_postbox_container -->
123
155
<td class="wpf-dw-td-value"><?php echo intval($statistic['online_members_count']) ?></td>
156
</tr>
157
<?php
158
+ $size_da = 0; $size_aa = 0;
159
$upload_dir = wp_upload_dir();
160
if( is_dir( $upload_dir['basedir'] . '/wpforo/avatars/') ) $size_avatar = wpforo_dir_size( $upload_dir['basedir'] . '/wpforo/avatars' );
161
if( is_dir( $upload_dir['basedir'] . '/wpforo/default_attachments/') ) $size_da = wpforo_dir_size( $upload_dir['basedir'] . '/wpforo/default_attachments' );
211
</div>
212
</div><!-- widget / postbox -->
213
214
+ <?php do_action( 'wpforo_dashboard_widgets_col2', $wpforo ); ?>
215
+
216
</div><!-- normal-sortables -->
217
</div><!-- wpforo_postbox_container -->
218
<?php endif; ?>
220
<div class="postbox-container" id="postbox-container-3">
221
<div class="meta-box-sortables ui-sortable" id="normal-sortables">
222
223
+ <?php do_action( 'wpforo_dashboard_widgets_col3', $wpforo ); ?>
224
225
</div><!-- normal-sortables -->
226
</div><!-- wpforo_postbox_container -->
wpf-admin/forum.php CHANGED
@@ -48,7 +48,7 @@
48
49
<!-- Forum Hierarchy -->
50
<?php if( !isset($_GET['action'])) : ?>
51
- <?php if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'ef')): ?>
52
53
<div class="wpf-info-bar" style="line-height: 1em; clear:both; padding: 5px 30px; font-size:15px; display:block; box-shadow:none; margin: 20px 0 10px 0; font-style: italic; background: #FFFFC6; width:90%;">
54
<ul style="list-style-type: disc; line-height:18px;">
@@ -85,7 +85,7 @@
85
<br style="clear: both;"/>
86
<!-- Forum Add || Edit -->
87
<?php if( ( isset($_GET['action']) && $_GET['action'] == 'add' ) || ( isset($_GET['action']) && $_GET['action'] == 'edit' ) ) : ?>
88
- <?php if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'cf')): ?>
89
<?php if(isset($_GET['id'])) $data = $wpforo->forum->get_forum( array('forumid' => $_GET['id']) ); ?>
90
<div id="poststuff">
91
<form name="forum" action="" method="post">
48
49
<!-- Forum Hierarchy -->
50
<?php if( !isset($_GET['action'])) : ?>
51
+ <?php if($wpforo->perm->usergroup_can('ef')): ?>
52
53
<div class="wpf-info-bar" style="line-height: 1em; clear:both; padding: 5px 30px; font-size:15px; display:block; box-shadow:none; margin: 20px 0 10px 0; font-style: italic; background: #FFFFC6; width:90%;">
54
<ul style="list-style-type: disc; line-height:18px;">
85
<br style="clear: both;"/>
86
<!-- Forum Add || Edit -->
87
<?php if( ( isset($_GET['action']) && $_GET['action'] == 'add' ) || ( isset($_GET['action']) && $_GET['action'] == 'edit' ) ) : ?>
88
+ <?php if($wpforo->perm->usergroup_can('cf')): ?>
89
<?php if(isset($_GET['id'])) $data = $wpforo->forum->get_forum( array('forumid' => $_GET['id']) ); ?>
90
<div id="poststuff">
91
<form name="forum" action="" method="post">
wpf-admin/member.php CHANGED
@@ -1,7 +1,7 @@
1
<?php
2
// Exit if accessed directly
3
if( !defined( 'ABSPATH' ) ) exit;
4
- if( !$wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vm') ) exit;
5
?>
6
7
<div id="wpf-admin-wrap" class="wrap">
@@ -15,36 +15,36 @@
15
$search_fields[] = 'title';
16
$search_fields[] = 'display_name';
17
$filter_fields = array();
18
- if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vmu')){
19
$fields[] = 'user_login';
20
$search_fields[] = 'user_login';
21
}
22
- if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vmm')){
23
$fields[] = 'user_email';
24
$search_fields[] = 'user_email';
25
}
26
- if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vmg')){
27
$fields[] = 'groupid';
28
$filter_fields[] = 'groupid';
29
}
30
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'bm') ){
31
$fields[] = 'status';
32
$filter_fields[] = 'status';
33
}
34
- if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vmr')){
35
$fields[] = 'rank';
36
}
37
- if($wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'vms')){
38
$search_fields[] = 'signature';
39
}
40
$actions = array('button');
41
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'em') ) $actions = array('edit_user', 'edit_profile');
42
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'bm') ){
43
$actions[] = 'ban';
44
$bulk_actions[] = 'ban';
45
$bulk_actions[] = 'unban';
46
}
47
- if( $wpforo->perm->usergroup_can( $wpforo->current_user_groupid, 'dm') ){
48
$actions[] = 'user_delete';
49
$bulk_actions[] = 'del';
50
}
1
<?php
2
// Exit if accessed directly
3
if( !defined( 'ABSPATH' ) ) exit;
4
+ if( !$wpforo->perm->usergroup_can('vm') ) exit;
5
?>
6
7
<div id="wpf-admin-wrap" class="wrap">
15
$search_fields[] = 'title';
16
$search_fields[] = 'display_name';
17
$filter_fields = array();
18
+ if($wpforo->perm->usergroup_can('vmu')){
19
$fields[] = 'user_login';
20
$search_fields[] = 'user_login';
21
}
22
+ if($wpforo->perm->usergroup_can('vmm')){
23
$fields[] = 'user_email';
24
$search_fields[] = 'user_email';
25
}
26
+ if($wpforo->perm->usergroup_can('vmg')){
27
$fields[] = 'groupid';
28
$filter_fields[] = 'groupid';
29
}
30
+ if( $wpforo->perm->usergroup_can('bm') ){
31
$fields[] = 'status';
32
$filter_fields[] = 'status';
33
}
34
+ if($wpforo->perm->usergroup_can('vmr')){
35
$fields[] = 'rank';
36
}
37
+ if($wpforo->perm->usergroup_can('vms')){
38
$search_fields[] = 'signature';
39
}
40
$actions = array('button');
41
+ if( $wpforo->perm->usergroup_can('em') ) $actions = array('edit_user', 'edit_profile');
42
+ if( $wpforo->perm->usergroup_can('bm') ){
43
$actions[] = 'ban';
44
$bulk_actions[] = 'ban';
45
$bulk_actions[] = 'unban';
46
}
47
+ if( $wpforo->perm->usergroup_can('dm') ){
48
$actions[] = 'user_delete';
49
$bulk_actions[] = 'del';
50
}
wpf-admin/phrase.php CHANGED
@@ -10,10 +10,10 @@
10
<h2 style="padding:30px 0px 0px 0px;line-height: 20px;"><?php _e('Front-end Phrases', 'wpforo'); ?> &nbsp;<a href="<?php echo admin_url( 'admin.php?page=wpforo-phrases&action=add' ) ?>" class="add-new-h2"><?php wpforo_phrase('add_new') ?></a></h2>
11
<?php $wpforo->notice->show(FALSE) ?>
12
<?php
13
- if(!isset($_GET['action']) && !isset($_GET['action2'])){
14
- $fields = array( 'phrase_key', 'phrase_value' );
15
$search_fields = array( 'phrase_key', 'phrase_value' );
16
- $filter_fields = array( 'langid' );
17
wpforo_create_form_table( 'phrase', 'phraseid', $fields, $search_fields, $filter_fields, array('edit'), array('edit'));
18
}
19
?>
@@ -31,7 +31,7 @@
31
<span class="description">(<?php echo esc_html($data['phrase_key']); ?>)</span></label>
32
</th>
33
<td>
34
- <textarea name="phrase[data][<?php echo intval($phraseid) ?>][title]" id="phrase" required style="width:80%; height:150px;"><?php wpfo($data['phrase_value'], true, 'esc_textarea'); ?></textarea>
35
</td>
36
</tr>
37
<?php endforeach; ?>
10
<h2 style="padding:30px 0px 0px 0px;line-height: 20px;"><?php _e('Front-end Phrases', 'wpforo'); ?> &nbsp;<a href="<?php echo admin_url( 'admin.php?page=wpforo-phrases&action=add' ) ?>" class="add-new-h2"><?php wpforo_phrase('add_new') ?></a></h2>
11
<?php $wpforo->notice->show(FALSE) ?>
12
<?php
13
+ if( !((isset($_GET['action']) && $_GET['action'] != '-1') || (isset($_GET['action2']) && $_GET['action2'] != '-1')) ){
14
+ $fields = array( 'phrase_key', 'phrase_value', 'package' );
15
$search_fields = array( 'phrase_key', 'phrase_value' );
16
+ $filter_fields = array( 'langid', 'package' );
17
wpforo_create_form_table( 'phrase', 'phraseid', $fields, $search_fields, $filter_fields, array('edit'), array('edit'));
18
}
19
?>
31
<span class="description">(<?php echo esc_html($data['phrase_key']); ?>)</span></label>
32
</th>
33
<td>
34
+ <textarea name="phrase[data][<?php echo intval($phraseid) ?>][title]" id="phrase" required style="width:80%; height:29px;"><?php wpfo($data['phrase_value'], true, 'esc_textarea'); ?></textarea>
35
</td>
36
</tr>
37
<?php endforeach; ?>
wpf-admin/themes.php CHANGED
@@ -58,7 +58,7 @@
58
<div class="wpf-theme-info">
59
<h3 style="margin-top:5px; margin-bottom:10px;"><?php echo esc_html(wpforo_text( $theme['name']['value'], 30, false )) ?> | <?php echo ($theme['version']['value']) ? 'version ' . esc_html($theme['version']['value']) : ''; ?></h3>
60
<p style="font-size:14px;" title="<?php echo esc_attr($theme['author']['value']) ?>"><?php echo ($theme['author']['value']) ? '<strong>Author:</strong>&nbsp; ' . esc_html(wpforo_text( $theme['author']['value'], 30, false )) : ''; ?></p>
61
- <p style="font-size:14px;" title="<?php echo esc_attr($theme['theme_url']['value']) ?>"><?php echo ($theme['theme_url']['value']) ? '<strong>URI:</strong>&nbsp; <a href="'.esc_url($theme['theme_url']['value']).'" target="_blank">' . esc_html(wpforo_text( $theme['theme_url']['value'], 30, false )) .'</a>' : ''; ?></p>
62
<p style="margin-top:5px;"><?php echo ($theme['description']['value']) ? esc_html(wpforo_text($theme['description']['value'], 200, false)) : ''; ?></p>
63
</div>
64
<div class="wpf-theme-actions">
58
<div class="wpf-theme-info">
59
<h3 style="margin-top:5px; margin-bottom:10px;"><?php echo esc_html(wpforo_text( $theme['name']['value'], 30, false )) ?> | <?php echo ($theme['version']['value']) ? 'version ' . esc_html($theme['version']['value']) : ''; ?></h3>
60
<p style="font-size:14px;" title="<?php echo esc_attr($theme['author']['value']) ?>"><?php echo ($theme['author']['value']) ? '<strong>Author:</strong>&nbsp; ' . esc_html(wpforo_text( $theme['author']['value'], 30, false )) : ''; ?></p>
61
+ <p style="font-size:14px;" title="<?php echo esc_attr($theme['theme_url']['value']) ?>"><?php echo ($theme['theme_url']['value']) ? '<strong>URI:</strong>&nbsp; <a href="'.esc_url($theme['theme_url']['value']).'" target="_blank">' . mb_substr( $theme['theme_url']['value'], 0, 30 ) . '</a>' : ''; ?></p>
62
<p style="margin-top:5px;"><?php echo ($theme['description']['value']) ? esc_html(wpforo_text($theme['description']['value'], 200, false)) : ''; ?></p>
63
</div>
64
<div class="wpf-theme-actions">
wpf-admin/xml/english.xml CHANGED
@@ -82,7 +82,7 @@
82
<phrase name="Forums"><![CDATA[Forums]]></phrase>
83
<phrase name="General options successfully updated"><![CDATA[General options successfully updated]]></phrase>
84
<phrase name="Group"><![CDATA[Group]]></phrase>
85
- <phrase name="Gtalk"><![CDATA[Gtalk]]></phrase>
86
<phrase name="Guest"><![CDATA[Guest]]></phrase>
87
<phrase name="ICQ"><![CDATA[ICQ]]></phrase>
88
<phrase name="Illegal character in username."><![CDATA[Illegal character in username.]]></phrase>
@@ -364,4 +364,11 @@
364
<phrase name="Welcome back %s!"><![CDATA[Welcome back %s!]]></phrase>
365
<phrase name="Member Profile"><![CDATA[Member Profile]]></phrase>
366
<phrase name="Member"><![CDATA[Member]]></phrase>
367
</language>
82
<phrase name="Forums"><![CDATA[Forums]]></phrase>
83
<phrase name="General options successfully updated"><![CDATA[General options successfully updated]]></phrase>
84
<phrase name="Group"><![CDATA[Group]]></phrase>
85
+ <phrase name="Google+"><![CDATA[Google+]]></phrase>
86
<phrase name="Guest"><![CDATA[Guest]]></phrase>
87
<phrase name="ICQ"><![CDATA[ICQ]]></phrase>
88
<phrase name="Illegal character in username."><![CDATA[Illegal character in username.]]></phrase>
364
<phrase name="Welcome back %s!"><![CDATA[Welcome back %s!]]></phrase>
365
<phrase name="Member Profile"><![CDATA[Member Profile]]></phrase>
366
<phrase name="Member"><![CDATA[Member]]></phrase>
367
+ <phrase name="Private"><![CDATA[Private]]></phrase>
368
+ <phrase name="Public"><![CDATA[Public]]></phrase>
369
+ <phrase name="Private Topic"><![CDATA[Private Topic]]></phrase>
370
+ <phrase name="Only Admins and Moderators can see your private topics."><![CDATA[Only Admins and Moderators can see your private topics.]]></phrase>
371
+ <phrase name="Forum ID is not detected"><![CDATA[Forum ID is not detected]]></phrase>
372
+ <phrase name="You are not permitted to subscribe here"><![CDATA[You are not permitted to subscribe here]]></phrase>
373
+ <phrase name="Subscribe to this topic"><![CDATA[Subscribe to this topic]]></phrase>
374
</language>
wpf-assets/addons/pm/header-off.png ADDED
Binary file
wpf-assets/addons/pm/header.png ADDED
Binary file
wpf-assets/css/font-awesome/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Greg Roach
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
wpf-assets/css/font-awesome/css/font-awesome.css ADDED
@@ -0,0 +1,2337 @@
1
+ /*!
2
+ * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4
+ */
5
+ /* FONT PATH
6
+ * -------------------------- */
7
+ @font-face {
8
+ font-family: 'FontAwesome';
9
+ src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
10
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
11
+ font-weight: normal;
12
+ font-style: normal;
13
+ }
14
+ .fa {
15
+ display: inline-block;
16
+ font: normal normal normal 14px/1 FontAwesome;
17
+ font-size: inherit;
18
+ text-rendering: auto;
19
+ -webkit-font-smoothing: antialiased;
20
+ -moz-osx-font-smoothing: grayscale;
21
+ }
22
+ /* makes the font 33% larger relative to the icon container */
23
+ .fa-lg {
24
+ font-size: 1.33333333em;
25
+ line-height: 0.75em;
26
+ vertical-align: -15%;
27
+ }
28
+ .fa-2x {
29
+ font-size: 2em;
30
+ }
31
+ .fa-3x {
32
+ font-size: 3em;
33
+ }
34
+ .fa-4x {
35
+ font-size: 4em;
36
+ }
37
+ .fa-5x {
38
+ font-size: 5em;
39
+ }
40
+ .fa-fw {
41
+ width: 1.28571429em;
42
+ text-align: center;
43
+ }
44
+ .fa-ul {
45
+ padding-left: 0;
46
+ margin-left: 2.14285714em;
47
+ list-style-type: none;
48
+ }
49
+ .fa-ul > li {
50
+ position: relative;
51
+ }
52
+ .fa-li {
53
+ position: absolute;
54
+ left: -2.14285714em;
55
+ width: 2.14285714em;
56
+ top: 0.14285714em;
57
+ text-align: center;
58
+ }
59
+ .fa-li.fa-lg {
60
+ left: -1.85714286em;
61
+ }
62
+ .fa-border {
63
+ padding: .2em .25em .15em;
64
+ border: solid 0.08em #eeeeee;
65
+ border-radius: .1em;
66
+ }
67
+ .fa-pull-left {
68
+ float: left;
69
+ }
70
+ .fa-pull-right {
71
+ float: right;
72
+ }
73
+ .fa.fa-pull-left {
74
+ margin-right: .3em;
75
+ }
76
+ .fa.fa-pull-right {
77
+ margin-left: .3em;
78
+ }
79
+ /* Deprecated as of 4.4.0 */
80
+ .pull-right {
81
+ float: right;
82
+ }
83
+ .pull-left {
84
+ float: left;
85
+ }
86
+ .fa.pull-left {
87
+ margin-right: .3em;
88
+ }
89
+ .fa.pull-right {
90
+ margin-left: .3em;
91
+ }
92
+ .fa-spin {
93
+ -webkit-animation: fa-spin 2s infinite linear;
94
+ animation: fa-spin 2s infinite linear;
95
+ }
96
+ .fa-pulse {
97
+ -webkit-animation: fa-spin 1s infinite steps(8);
98
+ animation: fa-spin 1s infinite steps(8);
99
+ }
100
+ @-webkit-keyframes fa-spin {
101
+ 0% {
102
+ -webkit-transform: rotate(0deg);
103
+ transform: rotate(0deg);
104
+ }
105
+ 100% {
106
+ -webkit-transform: rotate(359deg);
107
+ transform: rotate(359deg);
108
+ }
109
+ }
110
+ @keyframes fa-spin {
111
+ 0% {
112
+ -webkit-transform: rotate(0deg);
113
+ transform: rotate(0deg);
114
+ }
115
+ 100% {
116
+ -webkit-transform: rotate(359deg);
117
+ transform: rotate(359deg);
118
+ }
119
+ }
120
+ .fa-rotate-90 {
121
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
122
+ -webkit-transform: rotate(90deg);
123
+ -ms-transform: rotate(90deg);
124
+ transform: rotate(90deg);
125
+ }
126
+ .fa-rotate-180 {
127
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
128
+ -webkit-transform: rotate(180deg);
129
+ -ms-transform: rotate(180deg);
130
+ transform: rotate(180deg);
131
+ }
132
+ .fa-rotate-270 {
133
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
134
+ -webkit-transform: rotate(270deg);
135
+ -ms-transform: rotate(270deg);
136
+ transform: rotate(270deg);
137
+ }
138
+ .fa-flip-horizontal {
139
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
140
+ -webkit-transform: scale(-1, 1);
141
+ -ms-transform: scale(-1, 1);
142
+ transform: scale(-1, 1);
143
+ }
144
+ .fa-flip-vertical {
145
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
146
+ -webkit-transform: scale(1, -1);
147
+ -ms-transform: scale(1, -1);
148
+ transform: scale(1, -1);
149
+ }
150
+ :root .fa-rotate-90,
151
+ :root .fa-rotate-180,
152
+ :root .fa-rotate-270,
153
+ :root .fa-flip-horizontal,
154
+ :root .fa-flip-vertical {
155
+ filter: none;
156
+ }
157
+ .fa-stack {
158
+ position: relative;
159
+ display: inline-block;
160
+ width: 2em;
161
+ height: 2em;
162
+ line-height: 2em;
163
+ vertical-align: middle;
164
+ }
165
+ .fa-stack-1x,
166
+ .fa-stack-2x {
167
+ position: absolute;
168
+ left: 0;
169
+ width: 100%;
170
+ text-align: center;
171
+ }
172
+ .fa-stack-1x {
173
+ line-height: inherit;
174
+ }
175
+ .fa-stack-2x {
176
+ font-size: 2em;
177
+ }
178
+ .fa-inverse {
179
+ color: #ffffff;
180
+ }
181
+ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
182
+ readers do not read off random characters that represent icons */
183
+ .fa-glass:before {
184
+ content: "\f000";
185
+ }
186
+ .fa-music:before {
187
+ content: "\f001";
188
+ }
189
+ .fa-search:before {
190
+ content: "\f002";
191
+ }
192
+ .fa-envelope-o:before {
193
+ content: "\f003";
194
+ }
195
+ .fa-heart:before {
196
+ content: "\f004";
197
+ }
198
+ .fa-star:before {
199
+ content: "\f005";
200
+ }
201
+ .fa-star-o:before {
202
+ content: "\f006";
203
+ }
204
+ .fa-user:before {
205
+ content: "\f007";
206
+ }
207
+ .fa-film:before {
208
+ content: "\f008";
209
+ }
210
+ .fa-th-large:before {
211
+ content: "\f009";
212
+ }
213
+ .fa-th:before {
214
+ content: "\f00a";
215
+ }
216
+ .fa-th-list:before {
217
+ content: "\f00b";
218
+ }
219
+ .fa-check:before {
220
+ content: "\f00c";
221
+ }
222
+ .fa-remove:before,
223
+ .fa-close:before,
224
+ .fa-times:before {
225
+ content: "\f00d";
226
+ }
227
+ .fa-search-plus:before {
228
+ content: "\f00e";
229
+ }
230
+ .fa-search-minus:before {
231
+ content: "\f010";
232
+ }
233
+ .fa-power-off:before {
234
+ content: "\f011";
235
+ }
236
+ .fa-signal:before {
237
+ content: "\f012";
238
+ }
239
+ .fa-gear:before,
240
+ .fa-cog:before {
241
+ content: "\f013";
242
+ }
243
+ .fa-trash-o:before {
244
+ content: "\f014";
245
+ }
246
+ .fa-home:before {
247
+ content: "\f015";
248
+ }
249
+ .fa-file-o:before {
250
+ content: "\f016";
251
+ }
252
+ .fa-clock-o:before {
253
+ content: "\f017";
254
+ }
255
+ .fa-road:before {
256
+ content: "\f018";
257
+ }
258
+ .fa-download:before {
259
+ content: "\f019";
260
+ }
261
+ .fa-arrow-circle-o-down:before {
262
+ content: "\f01a";
263
+ }
264
+ .fa-arrow-circle-o-up:before {
265
+ content: "\f01b";
266
+ }
267
+ .fa-inbox:before {
268
+ content: "\f01c";
269
+ }
270
+ .fa-play-circle-o:before {
271
+ content: "\f01d";
272
+ }
273
+ .fa-rotate-right:before,
274
+ .fa-repeat:before {
275
+ content: "\f01e";
276
+ }
277
+ .fa-refresh:before {
278
+ content: "\f021";
279
+ }
280
+ .fa-list-alt:before {
281
+ content: "\f022";
282
+ }
283
+ .fa-lock:before {
284
+ content: "\f023";
285
+ }
286
+ .fa-flag:before {
287
+ content: "\f024";
288
+ }
289
+ .fa-headphones:before {
290
+ content: "\f025";
291
+ }
292
+ .fa-volume-off:before {
293
+ content: "\f026";
294
+ }
295
+ .fa-volume-down:before {
296
+ content: "\f027";
297
+ }
298
+ .fa-volume-up:before {
299
+ content: "\f028";
300
+ }
301
+ .fa-qrcode:before {
302
+ content: "\f029";
303
+ }
304
+ .fa-barcode:before {
305
+ content: "\f02a";
306
+ }
307
+ .fa-tag:before {
308
+ content: "\f02b";
309
+ }
310
+ .fa-tags:before {
311
+ content: "\f02c";
312
+ }
313
+ .fa-book:before {
314
+ content: "\f02d";
315
+ }
316
+ .fa-bookmark:before {
317
+ content: "\f02e";
318
+ }
319
+ .fa-print:before {
320
+ content: "\f02f";
321
+ }
322
+ .fa-camera:before {
323
+ content: "\f030";
324
+ }
325
+ .fa-font:before {
326
+ content: "\f031";
327
+ }
328
+ .fa-bold:before {
329
+ content: "\f032";
330
+ }
331
+ .fa-italic:before {
332
+ content: "\f033";
333
+ }
334
+ .fa-text-height:before {
335
+ content: "\f034";
336
+ }
337
+ .fa-text-width:before {
338
+ content: "\f035";
339
+ }
340
+ .fa-align-left:before {
341
+ content: "\f036";
342
+ }
343
+ .fa-align-center:before {
344
+ content: "\f037";
345
+ }
346
+ .fa-align-right:before {
347
+ content: "\f038";
348
+ }
349
+ .fa-align-justify:before {
350
+ content: "\f039";
351
+ }
352
+ .fa-list:before {
353
+ content: "\f03a";
354
+ }
355
+ .fa-dedent:before,
356
+ .fa-outdent:before {
357
+ content: "\f03b";
358
+ }
359
+ .fa-indent:before {
360
+ content: "\f03c";
361
+ }
362
+ .fa-video-camera:before {
363
+ content: "\f03d";
364
+ }
365
+ .fa-photo:before,
366
+ .fa-image:before,
367
+ .fa-picture-o:before {
368
+ content: "\f03e";
369
+ }
370
+ .fa-pencil:before {
371
+ content: "\f040";
372
+ }
373
+ .fa-map-marker:before {
374
+ content: "\f041";
375
+ }
376
+ .fa-adjust:before {
377
+ content: "\f042";
378
+ }
379
+ .fa-tint:before {
380
+ content: "\f043";
381
+ }
382
+ .fa-edit:before,
383
+ .fa-pencil-square-o:before {
384
+ content: "\f044";
385
+ }
386
+ .fa-share-square-o:before {
387
+ content: "\f045";
388
+ }
389
+ .fa-check-square-o:before {
390
+ content: "\f046";
391
+ }
392
+ .fa-arrows:before {
393
+ content: "\f047";
394
+ }
395
+ .fa-step-backward:before {
396
+ content: "\f048";
397
+ }
398
+ .fa-fast-backward:before {
399
+ content: "\f049";
400
+ }
401
+ .fa-backward:before {
402
+ content: "\f04a";
403
+ }
404
+ .fa-play:before {
405
+ content: "\f04b";
406
+ }
407
+ .fa-pause:before {
408
+ content: "\f04c";
409
+ }
410
+ .fa-stop:before {
411
+ content: "\f04d";
412
+ }
413
+ .fa-forward:before {
414
+ content: "\f04e";
415
+ }
416
+ .fa-fast-forward:before {
417
+ content: "\f050";
418
+ }
419
+ .fa-step-forward:before {
420
+ content: "\f051";
421
+ }
422
+ .fa-eject:before {
423
+ content: "\f052";
424
+ }
425
+ .fa-chevron-left:before {
426
+ content: "\f053";
427
+ }
428
+ .fa-chevron-right:before {
429
+ content: "\f054";
430
+ }
431
+ .fa-plus-circle:before {
432
+ content: "\f055";
433
+ }
434
+ .fa-minus-circle:before {
435
+ content: "\f056";
436
+ }
437
+ .fa-times-circle:before {
438
+ content: "\f057";
439
+ }
440
+ .fa-check-circle:before {
441
+ content: "\f058";
442
+ }
443
+ .fa-question-circle:before {
444
+ content: "\f059";
445
+ }
446
+ .fa-info-circle:before {
447
+ content: "\f05a";
448
+ }
449
+ .fa-crosshairs:before {
450
+ content: "\f05b";
451
+ }
452
+ .fa-times-circle-o:before {
453
+ content: "\f05c";
454
+ }
455
+ .fa-check-circle-o:before {
456
+ content: "\f05d";
457
+ }
458
+ .fa-ban:before {
459
+ content: "\f05e";
460
+ }
461
+ .fa-arrow-left:before {
462
+ content: "\f060";
463
+ }
464
+ .fa-arrow-right:before {
465
+ content: "\f061";
466
+ }
467
+ .fa-arrow-up:before {
468
+ content: "\f062";
469
+ }
470
+ .fa-arrow-down:before {
471
+ content: "\f063";
472
+ }
473
+ .fa-mail-forward:before,
474
+ .fa-share:before {
475
+ content: "\f064";
476
+ }
477
+ .fa-expand:before {
478
+ content: "\f065";
479
+ }
480
+ .fa-compress:before {
481
+ content: "\f066";
482
+ }
483
+ .fa-plus:before {
484
+ content: "\f067";
485
+ }
486
+ .fa-minus:before {
487
+ content: "\f068";
488
+ }
489
+ .fa-asterisk:before {
490
+ content: "\f069";
491
+ }
492
+ .fa-exclamation-circle:before {
493
+ content: "\f06a";
494
+ }
495
+ .fa-gift:before {
496
+ content: "\f06b";
497
+ }
498
+ .fa-leaf:before {
499
+ content: "\f06c";
500
+ }
501
+ .fa-fire:before {
502
+ content: "\f06d";
503
+ }
504
+ .fa-eye:before {
505
+ content: "\f06e";
506
+ }
507
+ .fa-eye-slash:before {
508
+ content: "\f070";
509
+ }
510
+ .fa-warning:before,
511
+ .fa-exclamation-triangle:before {
512
+ content: "\f071";
513
+ }
514
+ .fa-plane:before {
515
+ content: "\f072";
516
+ }
517
+ .fa-calendar:before {
518
+ content: "\f073";
519
+ }
520
+ .fa-random:before {
521
+ content: "\f074";
522
+ }
523
+ .fa-comment:before {
524
+ content: "\f075";
525
+ }
526
+ .fa-magnet:before {
527
+ content: "\f076";
528
+ }
529
+ .fa-chevron-up:before {
530
+ content: "\f077";
531
+ }
532
+ .fa-chevron-down:before {
533
+ content: "\f078";
534
+ }
535
+ .fa-retweet:before {
536
+ content: "\f079";
537
+ }
538
+ .fa-shopping-cart:before {
539
+ content: "\f07a";
540
+ }
541
+ .fa-folder:before {
542
+ content: "\f07b";
543
+ }
544
+ .fa-folder-open:before {
545
+ content: "\f07c";
546
+ }
547
+ .fa-arrows-v:before {
548
+ content: "\f07d";
549
+ }
550
+ .fa-arrows-h:before {
551
+ content: "\f07e";
552
+ }
553
+ .fa-bar-chart-o:before,
554
+ .fa-bar-chart:before {
555
+ content: "\f080";
556
+ }
557
+ .fa-twitter-square:before {
558
+ content: "\f081";
559
+ }
560
+ .fa-facebook-square:before {
561
+ content: "\f082";
562
+ }
563
+ .fa-camera-retro:before {
564
+ content: "\f083";
565
+ }
566
+ .fa-key:before {
567
+ content: "\f084";
568
+ }
569
+ .fa-gears:before,
570
+ .fa-cogs:before {
571
+ content: "\f085";
572
+ }
573
+ .fa-comments:before {
574
+ content: "\f086";
575
+ }
576
+ .fa-thumbs-o-up:before {
577
+ content: "\f087";
578
+ }
579
+ .fa-thumbs-o-down:before {
580
+ content: "\f088";
581
+ }
582
+ .fa-star-half:before {
583
+ content: "\f089";
584
+ }
585
+ .fa-heart-o:before {
586
+ content: "\f08a";
587
+ }
588
+ .fa-sign-out:before {
589
+ content: "\f08b";
590
+ }
591
+ .fa-linkedin-square:before {
592
+ content: "\f08c";
593
+ }
594
+ .fa-thumb-tack:before {
595
+ content: "\f08d";
596
+ }
597
+ .fa-external-link:before {
598
+ content: "\f08e";
599
+ }
600
+ .fa-sign-in:before {
601
+ content: "\f090";
602
+ }
603
+ .fa-trophy:before {
604
+ content: "\f091";
605
+ }
606
+ .fa-github-square:before {
607
+ content: "\f092";
608
+ }
609
+ .fa-upload:before {
610
+ content: "\f093";
611
+ }
612
+ .fa-lemon-o:before {
613
+ content: "\f094";
614
+ }
615
+ .fa-phone:before {
616
+ content: "\f095";
617
+ }
618
+ .fa-square-o:before {
619
+ content: "\f096";
620
+ }
621
+ .fa-bookmark-o:before {
622
+ content: "\f097";
623
+ }
624
+ .fa-phone-square:before {
625
+ content: "\f098";
626
+ }
627
+ .fa-twitter:before {
628
+ content: "\f099";
629
+ }
630
+ .fa-facebook-f:before,
631
+ .fa-facebook:before {
632
+ content: "\f09a";
633
+ }
634
+ .fa-github:before {
635
+ content: "\f09b";
636
+ }
637
+ .fa-unlock:before {
638
+ content: "\f09c";
639
+ }
640
+ .fa-credit-card:before {
641
+ content: "\f09d";
642
+ }
643
+ .fa-feed:before,
644
+ .fa-rss:before {
645
+ content: "\f09e";
646
+ }
647
+ .fa-hdd-o:before {
648
+ content: "\f0a0";
649
+ }
650
+ .fa-bullhorn:before {
651
+ content: "\f0a1";
652
+ }
653
+ .fa-bell:before {
654
+ content: "\f0f3";
655
+ }
656
+ .fa-certificate:before {
657
+ content: "\f0a3";
658
+ }
659
+ .fa-hand-o-right:before {
660
+ content: "\f0a4";
661
+ }
662
+ .fa-hand-o-left:before {
663
+ content: "\f0a5";
664
+ }
665
+ .fa-hand-o-up:before {
666
+ content: "\f0a6";
667
+ }
668
+ .fa-hand-o-down:before {
669
+ content: "\f0a7";
670
+ }
671
+ .fa-arrow-circle-left:before {
672
+ content: "\f0a8";
673
+ }
674
+ .fa-arrow-circle-right:before {
675
+ content: "\f0a9";
676
+ }
677
+ .fa-arrow-circle-up:before {
678
+ content: "\f0aa";
679
+ }
680
+ .fa-arrow-circle-down:before {
681
+ content: "\f0ab";
682
+ }
683
+ .fa-globe:before {
684
+ content: "\f0ac";
685
+ }
686
+ .fa-wrench:before {
687
+ content: "\f0ad";
688
+ }
689
+ .fa-tasks:before {
690
+ content: "\f0ae";
691
+ }
692
+ .fa-filter:before {
693
+ content: "\f0b0";
694
+ }
695
+ .fa-briefcase:before {
696
+ content: "\f0b1";
697
+ }
698
+ .fa-arrows-alt:before {
699
+ content: "\f0b2";
700
+ }
701
+ .fa-group:before,
702
+ .fa-users:before {
703
+ content: "\f0c0";
704
+ }
705
+ .fa-chain:before,
706
+ .fa-link:before {
707
+ content: "\f0c1";
708
+ }
709
+ .fa-cloud:before {
710
+ content: "\f0c2";
711
+ }
712
+ .fa-flask:before {
713
+ content: "\f0c3";
714
+ }
715
+ .fa-cut:before,
716
+ .fa-scissors:before {
717
+ content: "\f0c4";
718
+ }
719
+ .fa-copy:before,
720
+ .fa-files-o:before {
721
+ content: "\f0c5";
722
+ }
723
+ .fa-paperclip:before {
724
+ content: "\f0c6";
725
+ }
726
+ .fa-save:before,
727
+ .fa-floppy-o:before {
728
+ content: "\f0c7";
729
+ }
730
+ .fa-square:before {
731
+ content: "\f0c8";
732
+ }
733
+ .fa-navicon:before,
734
+ .fa-reorder:before,
735
+ .fa-bars:before {
736
+ content: "\f0c9";
737
+ }
738
+ .fa-list-ul:before {
739
+ content: "\f0ca";
740
+ }
741
+ .fa-list-ol:before {
742
+ content: "\f0cb";
743
+ }
744
+ .fa-strikethrough:before {
745
+ content: "\f0cc";
746
+ }
747
+ .fa-underline:before {
748
+ content: "\f0cd";
749
+ }
750
+ .fa-table:before {
751
+ content: "\f0ce";
752
+ }
753
+ .fa-magic:before {
754
+ content: "\f0d0";
755
+ }
756
+ .fa-truck:before {
757
+ content: "\f0d1";
758
+ }
759
+ .fa-pinterest:before {
760
+ content: "\f0d2";
761
+ }
762
+ .fa-pinterest-square:before {
763
+ content: "\f0d3";
764
+ }
765
+ .fa-google-plus-square:before {
766
+ content: "\f0d4";
767
+ }
768
+ .fa-google-plus:before {
769
+ content: "\f0d5";
770
+ }
771
+ .fa-money:before {
772
+ content: "\f0d6";
773
+ }
774
+ .fa-caret-down:before {
775
+ content: "\f0d7";
776
+ }
777
+ .fa-caret-up:before {
778
+ content: "\f0d8";
779
+ }
780
+ .fa-caret-left:before {
781
+ content: "\f0d9";
782
+ }
783
+ .fa-caret-right:before {
784
+ content: "\f0da";
785
+ }
786
+ .fa-columns:before {
787
+ content: "\f0db";
788
+ }
789
+ .fa-unsorted:before,
790
+ .fa-sort:before {
791
+ content: "\f0dc";
792
+ }
793
+ .fa-sort-down:before,
794
+ .fa-sort-desc:before {
795
+ content: "\f0dd";
796
+ }
797
+ .fa-sort-up:before,
798
+ .fa-sort-asc:before {
799
+ content: "\f0de";
800
+ }
801
+ .fa-envelope:before {
802
+ content: "\f0e0";
803
+ }
804
+ .fa-linkedin:before {
805
+ content: "\f0e1";
806
+ }
807
+ .fa-rotate-left:before,
808
+ .fa-undo:before {
809
+ content: "\f0e2";
810
+ }
811
+ .fa-legal:before,
812
+ .fa-gavel:before {
813
+ content: "\f0e3";
814
+ }
815
+ .fa-dashboard:before,
816
+ .fa-tachometer:before {
817
+ content: "\f0e4";
818
+ }
819
+ .fa-comment-o:before {
820
+ content: "\f0e5";
821
+ }
822
+ .fa-comments-o:before {
823
+ content: "\f0e6";
824
+ }
825
+ .fa-flash:before,
826
+ .fa-bolt:before {
827
+ content: "\f0e7";
828
+ }
829
+ .fa-sitemap:before {
830
+ content: "\f0e8";
831
+ }
832
+ .fa-umbrella:before {
833
+ content: "\f0e9";
834
+ }
835
+ .fa-paste:before,
836
+ .fa-clipboard:before {
837
+ content: "\f0ea";
838
+ }
839
+ .fa-lightbulb-o:before {
840
+ content: "\f0eb";
841
+ }
842
+ .fa-exchange:before {
843
+ content: "\f0ec";
844
+ }
845
+ .fa-cloud-download:before {
846
+ content: "\f0ed";
847
+ }
848
+ .fa-cloud-upload:before {
849
+ content: "\f0ee";
850
+ }
851
+ .fa-user-md:before {
852
+ content: "\f0f0";
853
+ }
854
+ .fa-stethoscope:before {
855
+ content: "\f0f1";
856
+ }
857
+ .fa-suitcase:before {
858
+ content: "\f0f2";
859
+ }
860
+ .fa-bell-o:before {
861
+ content: "\f0a2";
862
+ }
863
+ .fa-coffee:before {
864
+ content: "\f0f4";
865
+ }
866
+ .fa-cutlery:before {
867
+ content: "\f0f5";
868
+ }
869
+ .fa-file-text-o:before {
870
+ content: "\f0f6";
871
+ }
872
+ .fa-building-o:before {
873
+ content: "\f0f7";
874
+ }
875
+ .fa-hospital-o:before {
876
+ content: "\f0f8";
877
+ }
878
+ .fa-ambulance:before {
879
+ content: "\f0f9";
880
+ }
881
+ .fa-medkit:before {
882
+ content: "\f0fa";
883
+ }
884
+ .fa-fighter-jet:before {
885
+ content: "\f0fb";
886
+ }
887
+ .fa-beer:before {
888
+ content: "\f0fc";
889
+ }
890
+ .fa-h-square:before {
891
+ content: "\f0fd";
892
+ }
893
+ .fa-plus-square:before {
894
+ content: "\f0fe";
895
+ }
896
+ .fa-angle-double-left:before {
897
+ content: "\f100";
898
+ }
899
+ .fa-angle-double-right:before {
900
+ content: "\f101";
901
+ }
902
+ .fa-angle-double-up:before {
903
+ content: "\f102";
904
+ }
905
+ .fa-angle-double-down:before {
906
+ content: "\f103";
907
+ }
908
+ .fa-angle-left:before {
909
+ content: "\f104";
910
+ }
911
+ .fa-angle-right:before {
912
+ content: "\f105";
913
+ }
914
+ .fa-angle-up:before {
915
+ content: "\f106";
916
+ }
917
+ .fa-angle-down:before {