Our Team Showcase - Version 1.0

Version Description

Download this release

Release Info

Developer smartcat
Plugin Icon 128x128 Our Team Showcase
Version 1.0
Comparing to
See all releases

Version 1.0

LICENSE ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ {description}
294
+ Copyright (C) {year} {fullname}
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ {signature of Ty Coon}, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
README.md ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ our-team
2
+ ========
3
+
4
+ WordPress Plugin used to display an appealing team profile as a widget or shortcode.
img/check.png ADDED
Binary file
img/email.png ADDED
Binary file
img/fb.png ADDED
Binary file
img/google.png ADDED
Binary file
img/icon.png ADDED
Binary file
img/linkedin.png ADDED
Binary file
img/noprofile.jpg ADDED
Binary file
img/spinner.gif ADDED
Binary file
img/twitter.png ADDED
Binary file
inc/grid.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Short description
4
+ * @author bilal hassan <info@smartcatdesign.net>
5
+ *
6
+ */
7
+ $args = array(
8
+ 'post_type' => 'team_member',
9
+ 'meta_key' => 'sc_member_order',
10
+ 'orderby' => 'meta_value',
11
+ 'order' => 'ASC'
12
+ );
13
+ $members = new WP_Query($args);
14
+ ?>
15
+ <div id="sc_our_team" class="<?php echo get_option('sc_our_team_template'); ?>">
16
+ <?php
17
+ if ($members->have_posts()) {
18
+ while ($members->have_posts()) {
19
+ $members->the_post();
20
+ ?>
21
+ <div itemscope itemtype="http://schema.org/Person" class="sc_team_member">
22
+ <div class="sc_team_member_inner">
23
+ <?php
24
+ if (has_post_thumbnail())
25
+ // $thumb_url = wp_get_attachment_url(get_post_thumbnail_id(get_the_ID()));
26
+ echo the_post_thumbnail('medium');
27
+ else {
28
+ echo '<img src="' . SC_TEAM_PATH .'img/noprofile.jpg" class="attachment-medium wp-post-image"/>';
29
+ // $thumb_url = SC_TEAM_PATH . 'img/noprofile.jpg';
30
+ }
31
+
32
+ ?>
33
+ <div class="sc_team_member_overlay">
34
+ <div itemprop="name" class="sc_team_member_name">
35
+ <?php the_title() ?>
36
+ </div>
37
+ <div itemprop="jobtitle" class="sc_team_member_jobtitle">
38
+ <?php echo get_post_meta(get_the_ID(), 'team_member_title', true); ?>
39
+ </div>
40
+ <div class='icons'>
41
+
42
+ <?php // the_content(); ?>
43
+ <?php
44
+ $facebook = get_post_meta(get_the_ID(), 'team_member_facebook', true);
45
+ $twitter = get_post_meta(get_the_ID(), 'team_member_twitter', true);
46
+ $linkedin = get_post_meta(get_the_ID(), 'team_member_linkedin', true);
47
+ $gplus = get_post_meta(get_the_ID(), 'team_member_gplus', true);
48
+ $email = get_post_meta(get_the_ID(), 'team_member_email', true);
49
+
50
+ if ($facebook != '')
51
+ echo '<a href="' . $facebook . '"><img src="' . SC_TEAM_PATH . 'img/fb.png"/></a>';
52
+ if ($twitter != '')
53
+ echo '<a href="' . $twitter . '"><img src="' . SC_TEAM_PATH . 'img/twitter.png"/></a>';
54
+ if ($linkedin != '')
55
+ echo '<a href="' . $linkedin . '"><img src="' . SC_TEAM_PATH . 'img/linkedin.png"/></a>';
56
+ if ($gplus != '')
57
+ echo '<a href="' . $gplus . '"><img src="' . SC_TEAM_PATH . 'img/google.png"/></a>';
58
+ if ($email != '')
59
+ echo '<a href=mailto:"' . $email . '"><img src="' . SC_TEAM_PATH . 'img/email.png"/></a>';
60
+ ?>
61
+
62
+ </div>
63
+ </div>
64
+
65
+ </div>
66
+
67
+ </div>
68
+ <?php
69
+ }
70
+ } else {
71
+ echo 'There are no team members to display';
72
+ }
73
+ ?>
74
+ </div>
inc/grid_circles.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by Bilal Hassan.
4
+ * Date: 2014-06-26
5
+ * Time: 11:04 AM
6
+ */
7
+
8
+ $args = array(
9
+ 'post_type' => 'team_member',
10
+ 'meta_key' => 'sc_member_order',
11
+ 'orderby' => 'meta_value',
12
+ 'order' => 'ASC'
13
+ );
14
+ $members = new WP_Query($args);
15
+ ?>
16
+ <div id="sc_our_team" class="<?php echo get_option('sc_our_team_template'); ?>">
17
+ <?php
18
+ if ($members->have_posts()) {
19
+ while ($members->have_posts()) {
20
+ $members->the_post();
21
+ if (has_post_thumbnail())
22
+ $thumb_url = wp_get_attachment_url(get_post_thumbnail_id(get_the_ID()));
23
+
24
+ else {
25
+ // echo '<img src="' . SC_TEAM_PATH .'img/noprofile.jpg" class="attachment-medium wp-post-image"/>';
26
+ $thumb_url = SC_TEAM_PATH . 'img/noprofile.jpg';
27
+ }
28
+ // echo wp_get_attachment_url( get_post_thumbnail_id(get_the_ID() ));
29
+ ?>
30
+ <div itemscope itemtype="http://schema.org/Person" class="sc_team_member">
31
+ <div class="sc_team_member_inner" style="background-image: url(<?php echo $thumb_url; ?>);">
32
+ <div class="sc_team_member_overlay">
33
+ <div itemprop="name" class="sc_team_member_name">
34
+ <?php the_title() ?>
35
+ </div>
36
+ <div itemprop="jobtitle" class="sc_team_member_jobtitle">
37
+ <?php echo get_post_meta(get_the_ID(), 'team_member_title', true); ?>
38
+ </div>
39
+ <div class='icons'>
40
+
41
+ <?php // the_content(); ?>
42
+ <?php
43
+ $facebook = get_post_meta(get_the_ID(), 'team_member_facebook', true);
44
+ $twitter = get_post_meta(get_the_ID(), 'team_member_twitter', true);
45
+ $linkedin = get_post_meta(get_the_ID(), 'team_member_linkedin', true);
46
+ $gplus = get_post_meta(get_the_ID(), 'team_member_gplus', true);
47
+ $email = get_post_meta(get_the_ID(), 'team_member_email', true);
48
+
49
+ if ($facebook != '')
50
+ echo '<a href="' . $facebook . '"><img src="' . SC_TEAM_PATH . 'img/fb.png"/></a>';
51
+ if ($twitter != '')
52
+ echo '<a href="' . $twitter . '"><img src="' . SC_TEAM_PATH . 'img/twitter.png"/></a>';
53
+ if ($linkedin != '')
54
+ echo '<a href="' . $linkedin . '"><img src="' . SC_TEAM_PATH . 'img/linkedin.png"/></a>';
55
+ if ($gplus != '')
56
+ echo '<a href="' . $gplus . '"><img src="' . SC_TEAM_PATH . 'img/google.png"/></a>';
57
+ if ($email != '')
58
+ echo '<a href=mailto:"' . $email . '"><img src="' . SC_TEAM_PATH . 'img/email.png"/></a>';
59
+ ?>
60
+
61
+ </div>
62
+ </div>
63
+
64
+ </div>
65
+
66
+ </div>
67
+ <?php
68
+ }
69
+ } else {
70
+ echo 'There are no team members to display';
71
+ }
72
+ ?>
73
+ </div>
inc/options.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php include_once 'setting.php'; ?>
2
+ <div class="width70 left">
3
+ <p><em>This plugin is currently going through some serious development! This is just a sneak peak!
4
+ Over the next couple of weeks I will be adding many new additions such as more templates, color customizations,
5
+ and many more features that I am sure you will love !</em></p>
6
+ <form name="post_form" method="post" action="" enctype="multipart/form-data">
7
+ <p></p>
8
+ <table class="widefat">
9
+ <thead>
10
+ <tr>
11
+ <th colspan="2"><b>General Settings</b></th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <tr>
16
+ <td>Template</td>
17
+ <td>
18
+ <select>
19
+ <option>Grid Default</option>
20
+ <option disabled="disabled">Grid Circles - <em>Coming Soon</em></option>
21
+ <option disabled="disabled">Stacked - <em>Coming Soon</em></option>
22
+ </select>
23
+ </td>
24
+ </tr>
25
+ </tbody>
26
+ </table>
27
+
28
+
29
+ <!--<input type="submit" name="wp_popup_reset" value="Reset" class="button button-primary" onclick="return confirm_reset();"/>-->
30
+ <input type="submit" name="wp_popup_save" value="Update" class="button button-primary" />
31
+ </form>
32
+ </div>
33
+ </div>
34
+ <script>
35
+ function confirm_reset() {
36
+ if (confirm("Are you sure you want to reset to defaults ?")) {
37
+ return true;
38
+ } else {
39
+ return false;
40
+ }
41
+ }
42
+ jQuery(document).ready(function($) {
43
+ $("#sc_popup_shortcode").focusout(function() {
44
+ var shortcode = jQuery(this).val();
45
+ shortcode = shortcode.replace(/"/g, "").replace(/'/g, "");
46
+ jQuery(this).val(shortcode);
47
+ });
48
+
49
+ });
50
+
51
+ </script>
inc/reorder.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php include_once 'setting.php'; ?>
2
+
3
+ <div class="width70 left">
4
+ <table class="widefat">
5
+ <thead>
6
+ <tr>
7
+ <th><b>Drag & Drop the member's pictures to sort them in the order you want them to appear</b></th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr>
12
+ <td>
13
+ <ul class="sortable grid" data-action="<?php echo SC_TEAM_PATH; ?>">
14
+ <?php
15
+ $args = array(
16
+ 'post_type' => 'team_member',
17
+ 'meta_key' => 'sc_member_order',
18
+ 'orderby' => 'meta_value',
19
+ 'order' => 'ASC'
20
+ );
21
+ $members = new WP_Query($args);
22
+ if ($members->have_posts()) {
23
+ while ($members->have_posts()) {
24
+ $members->the_post();
25
+ $id = get_the_ID();
26
+ if (has_post_thumbnail())
27
+ $thumb_url = wp_get_attachment_url(get_post_thumbnail_id($id));
28
+ else
29
+ $thumb_url = SC_TEAM_PATH . 'img/noprofile.jpg';
30
+ ?>
31
+ <li id="<?php echo $id; ?>" itemscope itemtype="http://schema.org/Person" class="sc_team_member ui-state-default">
32
+ <div class="sc_team_member_inner">
33
+ <img src="<?php echo $thumb_url; ?>" />
34
+ <div class="sc_team_member_overlay">
35
+ <?php the_title() ?>
36
+ </div>
37
+ <div itemprop="jobtitle" class="sc_team_member_jobtitle">
38
+ <?php echo get_post_meta($id, 'team_member_title', true); ?>
39
+ </div>
40
+ </div>
41
+ </li>
42
+ <?php
43
+ }
44
+ } else {
45
+ echo 'There are no team members to display';
46
+ }
47
+ ?>
48
+ </ul>
49
+ </tr>
50
+ </tbody>
51
+ </table>
52
+ <!--<input type="submit" name="wp_popup_reset" value="Reset" class="button button-primary" onclick="return confirm_reset();"/>-->
53
+ <a class="button button-primary" id="set_order">Save Order</a>
54
+ <p class="sc_team_member_update_status">
55
+ <span class="sc_team_member_updating"><img src="<?php echo SC_TEAM_PATH . 'img/spinner.gif' ?>" class=""/> Saving</span>
56
+ <span class="sc_team_member_saved"><img src="<?php echo SC_TEAM_PATH . 'img/check.png' ?>" class=""/> Saved!</span>
57
+ </p>
58
+ </div>
59
+ </div>
60
+ <script>
61
+ function confirm_reset() {
62
+ if (confirm("Are you sure you want to reset to defaults ?")) {
63
+ return true;
64
+ } else {
65
+ return false;
66
+ }
67
+ }
68
+ jQuery(document).ready(function($) {
69
+ $("#sc_popup_shortcode").focusout(function() {
70
+ var shortcode = jQuery(this).val();
71
+ shortcode = shortcode.replace(/"/g, "").replace(/'/g, "");
72
+ jQuery(this).val(shortcode);
73
+ });
74
+
75
+ });
76
+
77
+ </script>
inc/sc_team_update_order.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Short description
5
+ * @author bilal hassan <info@smartcatdesign.net>
6
+ *
7
+ */
8
+ //global $post;
9
+ //
10
+ //$post_id = $_GET['post_id'];
11
+ //$sc_member_order = $_GET['sc_member_order'];
12
+ //
13
+ ////update_post_meta($post_id, $meta_key, $sc_member_order)
14
+ //
15
+ //update_post_meta($post_id, 'sc_member_order', $sc_member_order);
16
+ //
17
+ //echo 'test';
18
+
19
+
20
+
21
+ ?>
inc/setting.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style>
2
+ #gopro{
3
+ width: 100%;
4
+ display: block;
5
+ clear: both;
6
+ padding: 10px;
7
+ margin: 10px 8px 15px 5px;
8
+ border: 1px solid #e1e1e1;
9
+ background: #464646;
10
+ color: #ffffff;
11
+ overflow: hidden;
12
+ }
13
+ #wrapper{
14
+ border: 1px solid #f0f0f0;
15
+ width: 95%;
16
+
17
+ }
18
+ #wrapper{
19
+ border: 1px solid #f0f0f0;
20
+ width: 95%;
21
+
22
+ }
23
+ table.widefat{
24
+ margin-bottom: 15px;
25
+ }
26
+ table.widefat tr{
27
+ transition: 0.3s all ease-in-out;
28
+ -moz-transition: 0.3s all ease-in-out;
29
+ -webkit-transition: 0.3s all ease-in-out;
30
+ }
31
+ table.widefat tr:hover{
32
+ /*background: #E6E6E6;*/
33
+ }
34
+
35
+ #wrapper input[type='text']{
36
+ width: 80%;
37
+ transition: 0.3s all ease-in-out;
38
+ -moz-transition: 0.3s all ease-in-out;
39
+ -webkit-transition: 0.3s all ease-in-out;
40
+ }
41
+ #wrapper input[type='text']:focus{
42
+ border: 1px solid #1784c9;
43
+ box-shadow: 0 0 7px #1784c9;
44
+ -moz-box-shadow: 0 0 5px #1784c9;
45
+ -webkit-box-shadow: 0 0 5px #1784c9;
46
+ }
47
+ #wrapper input[type='text'].small-text{
48
+ width: 20%;
49
+ }
50
+ .proversion{
51
+ color: red;
52
+ font-style: italic;
53
+ }
54
+ .choose-progress{
55
+ display: none;
56
+ }
57
+ .sc_popup_mode{
58
+ display: inline-block;
59
+ width: 15px;
60
+ height: 15px;
61
+ border-radius: 100%;
62
+ position: relative;
63
+ top: 2px;
64
+ box-shadow: 0 0 3px #333;
65
+ -moz-box-shadow: 0 0 3px #333;
66
+ -webkit-box-shadow: 0 0 3px #333;
67
+ }
68
+
69
+ .sc_popup_mode_off{
70
+ background: #F54412;
71
+ }
72
+ .sc_popup_mode_live{
73
+ background: #84E11F;
74
+ }
75
+ .sc_popup_mode_test{
76
+ background: #FF9717;
77
+ }
78
+ .left{ float: left;}
79
+ .right {float: right;}
80
+ .center{text-align: center;}
81
+ .width70{ width: 70%;}
82
+ .width25{ width: 25% !important;}
83
+ .width50{ width: 50%;}
84
+ </style>
85
+
86
+ <div id="wrapper">
87
+ <div id="gopro">
88
+ <div class="left">
89
+ <h1><b>Our Team Settings</b></h1>
90
+ <div>Professional, sleek and easily customizable Team page & widget with extra options!</div>
91
+ </div>
92
+ <div class="right">
93
+ <!--<a href="http://smartcatdesign.net/wp-construction-mode-pro-wordpress-plugin/" target="_blank" class="button-primary" style="padding: 40px;line-height: 0;font-size: 20px">GO PRO NOW</a>-->
94
+ </div>
95
+ </div>
96
+ <div class="width25 right">
97
+ <table class="widefat">
98
+ <thead>
99
+ <tr>
100
+ <th><b>Looking for Support?</b> </th>
101
+ </tr>
102
+ <tr>
103
+ <td>
104
+ If you have any questions, please head to my <a target="_blank" href="http://smartcatdesign.net/support/">website</a>, or use the <a target="_blank" href="http://wordpress.org/support/plugin/our-team-showcase">support forums</a> on WordPress.org. <br><br>
105
+ If you need priority support, or specific customization, please <a href="http://smartcatdesign.net">contact me.</a>
106
+ </td>
107
+ </tr>
108
+ <!-- <tr>
109
+ <td class='center'>
110
+ <a href='http://smartcatdesign.net/under-construction-maintenance-mode-free-wordpress-plugin/' target='_blank' class='button-primary'>Support</a>
111
+ <a href='http://smartcatdesign.net/under-construction-maintenance-mode-free-wordpress-plugin/' target='_blank' class='button-primary'>Go Pro</a>
112
+ </td>
113
+ </tr>-->
114
+ </thead>
115
+ </table>
116
+ <table class="widefat">
117
+ <thead>
118
+ <tr>
119
+ <th>
120
+ <b>Show your appreciation</b>
121
+ </th>
122
+ </tr>
123
+ <tr>
124
+ <td>
125
+ <ul>
126
+ <li>- <a href="http://wordpress.org/support/view/plugin-reviews/our-team-showcase" target="_blank">Leave ★★★★★ rating on WordPress.org</a></li>
127
+ <li>- Write a comment on the <a href="https://www.facebook.com/SmartcatDesign" target="_blank">Facebook Page</a></li>
128
+ </ul>
129
+
130
+ </td>
131
+ </tr>
132
+ </thead>
133
+ </table>
134
+ <table class="widefat">
135
+ <thead>
136
+ <tr>
137
+ <th>
138
+ <b>About the Developer</b>
139
+ </th>
140
+ </tr>
141
+ <tr>
142
+ <td>
143
+ My name is Bilal Hassan, from Kingston, Ontario, Canada. I am a web developer, and WordPress is my favorite framework. I love making plugins
144
+ that help you add cool and user-friendly features to your website. I also make WordPress themes.<br><br>
145
+ Take a look at my website and other plugins, I also develop WordPress themes.<br><br>
146
+ I know the WordPress framework very well, if you need help with customization or development, I am available for hire :)<br><br>
147
+ Please like my Facebook page to keep up to date with my plugins and themes.<br><br>
148
+ <iframe src="//www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FSmartcatDesign&amp;width&amp;layout=standard&amp;action=like&amp;show_faces=false&amp;share=false&amp;height=35&amp;appId=233286813420319" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:35px;" allowTransparency="true"></iframe>
149
+ </td>
150
+ </tr>
151
+ </thead>
152
+ </table>
153
+ </div>
inc/stacked.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Short description
4
+ * @author bilal hassan <info@smartcatdesign.net>
5
+ *
6
+ */
7
+ $args = array(
8
+ 'post_type' => 'team_member',
9
+ );
10
+ $members = new WP_Query($args);
11
+ if ($members->have_posts()) {
12
+ while ($members->have_posts()) {
13
+ $members->the_post();
14
+ ?>
15
+ <div class="sc_our_team <?php echo get_option('sc_our_team_template'); ?>">
16
+ <h1><?php the_title() ?></h1>
17
+ <div class='content'>
18
+ <?php the_post_thumbnail(); ?>
19
+ <?php the_content(); ?>
20
+ <?php the_time('F jS, Y'); ?>
21
+ <?php echo get_post_meta(get_the_ID(), 'team_member_facebook', true); ?>
22
+ <?php echo get_post_meta(get_the_ID(), 'team_member_twitter', true); ?>
23
+ <?php echo get_post_meta(get_the_ID(), 'team_member_linkedin', true); ?>
24
+ <?php echo get_post_meta(get_the_ID(), 'team_member_gplus', true); ?>
25
+ </div>
26
+ </div>
27
+ <?php
28
+ }
29
+ } else {
30
+ echo 'There are no team members to display';
31
+ }
32
+ ?>
readme.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Our Team Showcase ===
2
+ Contributors: smartcat
3
+ Donate link: http://smartcatdesign.net
4
+ Tags: team, page, widget, shortcode, members, title
5
+ Requires at least: 3.2
6
+ Tested up to: 3.91
7
+ Stable tag: 1.0
8
+ License: GPLv2 or later
9
+
10
+ Ready out of the box! Display your team members in a professional and modern style.
11
+
12
+ == Description ==
13
+ * This plugin allows you to add, edit, search and display your team members on any page, or in a widget
14
+ quickly and easily.
15
+ * It comes with a couple of different styles to choose from.(coming soon)
16
+ * Re-order team members with a simple drag & drop.
17
+ * output your team members anywhere with the shortcode [our-team]
18
+
19
+
20
+ == Installation ==
21
+ 1. Download the plugin, then upload the zipped file to your site from the WordPress dashboard plugin uploader menu
22
+ 2. OR - Upload the unpacked folder folder via FTP into /wp-content/plugins
23
+
24
+ == Changelog ==
25
+ = 1.0 = initial release
sc_our_team.php ADDED
@@ -0,0 +1,369 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Our Team Showcase
4
+ Plugin URI: http://smartcatdesign.net/our-team-wordpress-plugin
5
+ Description: Display your team members in a very attractive way as a widget or page with a shortcode
6
+ Version: 1.0
7
+ Author: SmartCat
8
+ Author URI: http://smartcatdesign.net
9
+ License: GPL v2
10
+ */
11
+
12
+ define('SC_TEAM_PATH',plugin_dir_url(__FILE__));
13
+
14
+
15
+ register_activation_hook(__FILE__, 'sc_team');
16
+
17
+ function sc_team(){
18
+ add_option('sc_team_activation_redirect', true);
19
+ sc_team_register_options();
20
+ }
21
+
22
+ function sc_team_register_options(){
23
+ // declare options array
24
+ $sc_team_options = array(
25
+ 'sc_our_team_template' => 'grid',
26
+ );
27
+ // check if option is set, if not, add it
28
+ foreach ($sc_team_options as $option_name => $option_value) {
29
+ if (get_option($option_name) === false) {
30
+ add_option($option_name, $option_value);
31
+ } else {
32
+ update_option($option_name, addslashes($_POST[$option_name]));
33
+ }
34
+ }
35
+ }
36
+
37
+ // redirect when activated
38
+ add_action('admin_init', 'sc_team_activation_redirect');
39
+
40
+ function sc_team_activation_redirect(){
41
+ if (get_option('sc_team_activation_redirect', false)) {
42
+ delete_option('sc_team_activation_redirect');
43
+ wp_redirect(admin_url() . 'edit.php?post_type=team_member&page=sc_team_settings');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Hook implements admin_menu
49
+ * function adds menu and calls options function
50
+ * function adds submenu and calls reorder function
51
+ */
52
+ add_action('admin_menu', 'sc_team_menu');
53
+
54
+ function sc_team_menu(){
55
+ // add_options_page('Our Team Plugin Settings', 'Our Team Settings', 'administrator', 'sc_team_options.php', 'sc_team_options');
56
+ add_submenu_page('edit.php?post_type=team_member', 'Settings', 'Settings', 'administrator', 'sc_team_settings','sc_team_settings');
57
+ add_submenu_page('edit.php?post_type=team_member', 'Re-Order Members', 'Re-Order Members', 'administrator', 'sc_team_reorder','sc_team_reorder');
58
+ }
59
+
60
+ function sc_team_reorder(){
61
+ include_once 'inc/reorder.php';
62
+ }
63
+
64
+ function sc_team_settings(){
65
+ include_once 'inc/options.php';
66
+ }
67
+
68
+ /**
69
+ * Hook implements admin_head
70
+ * Function sets menu icon
71
+ */
72
+ add_action('admin_head', 'sc_team_add_menu_icon');
73
+
74
+ function sc_team_add_menu_icon(){
75
+ ?>
76
+ <style>
77
+ /* #adminmenu .menu-icon-team_member div.wp-menu-image:before {
78
+ content: '\f338';
79
+ }*/
80
+ </style>
81
+ <?php
82
+ }
83
+
84
+ /**
85
+ * Hook implements wp_enqueue_scripts
86
+ * function loads plugin styles and scripts
87
+ */
88
+
89
+ function my_enqueue($hook) {
90
+ wp_enqueue_style('sc_team_admin_style', SC_TEAM_PATH . 'style/sc_our_team_admin.css');
91
+ wp_enqueue_script( 'my_custom_script', SC_TEAM_PATH . 'script/sc_our_team_admin.js',array('jquery') );
92
+ }
93
+ add_action( 'admin_enqueue_scripts', 'my_enqueue' );
94
+
95
+ add_action('wp_enqueue_scripts', 'sc_team_load_styles_scripts');
96
+ function sc_team_load_styles_scripts(){
97
+
98
+ // plugin main style
99
+ wp_enqueue_style('sc_team_default_style', plugin_dir_url(__FILE__) . 'style/sc_our_team.css', false, '1.0');
100
+
101
+ // plugin main script
102
+ wp_enqueue_script('sc_team_default_script', plugin_dir_url(__FILE__) . 'script/sc_our_team.js', array('jquery'), '1.0');
103
+ }
104
+
105
+ /**
106
+ * Hook adds shortcode
107
+ * function triggered by shortcode and displays team page
108
+ */
109
+ add_shortcode('our-team', 'set_our_team');
110
+
111
+ function set_our_team($atts){
112
+ extract(shortcode_atts(array(
113
+ 'id' => '1'
114
+ ), $atts));
115
+
116
+ if(get_option('sc_our_team_template') === false or get_option('sc_our_team_template') == '')
117
+ include 'inc/grid.php';
118
+ else
119
+ include 'inc/' . get_option('sc_our_team_template') . '.php';
120
+
121
+ }
122
+
123
+ /**
124
+ * Hook implements init
125
+ * function creates and registers custom post type
126
+ */
127
+ add_action('init', 'team_members');
128
+
129
+ function team_members(){
130
+ $labels = array(
131
+ 'name' => _x('Team', 'post type general name'),
132
+ 'singular_name' => _x('Team Member', 'post type singular name'),
133
+ 'add_new' => _x('Add New', 'book'),
134
+ 'add_new_item' => __('Add New Member'),
135
+ 'edit_item' => __('Edit Member'),
136
+ 'new_item' => __('New Team Member'),
137
+ 'all_items' => __('All Team Members'),
138
+ 'view_item' => __('View Team Member'),
139
+ 'search_items' => __('Search Team Members'),
140
+ 'not_found' => __('No member found'),
141
+ 'not_found_in_trash' => __('No member found in the Trash'),
142
+ 'parent_item_colon' => '',
143
+ 'menu_name' => 'Our Team'
144
+ );
145
+ $args = array(
146
+ 'labels' => $labels,
147
+ 'description' => 'Holds our team members specific data',
148
+ 'public' => true,
149
+ 'menu_position' => 5,
150
+ 'menu_icon' => SC_TEAM_PATH . 'img/icon.png',
151
+ 'supports' => array('title', 'editor', 'thumbnail'),
152
+ 'has_archive' => true,
153
+ );
154
+ register_post_type('team_member', $args);
155
+ }
156
+
157
+ /*
158
+ * Handle Taxonomy for custom types
159
+ */
160
+ //add_action('init', 'team_member_positions', 0);
161
+ //
162
+ //function team_member_positions(){
163
+ // $labels = array(
164
+ // 'name' => _x('Positions', 'taxonomy general name'),
165
+ // 'singular_name' => _x('Position', 'taxonomy singular name'),
166
+ // 'search_items' => __('Search Positions'),
167
+ // 'all_items' => __('All Positions'),
168
+ // 'parent_item' => __('Parent Position'),
169
+ // 'parent_item_colon' => __('Parent Position:'),
170
+ // 'edit_item' => __('Edit Position'),
171
+ // 'update_item' => __('Update Position'),
172
+ // 'add_new_item' => __('Add New Position'),
173
+ // 'new_item_name' => __('New Position'),
174
+ // 'menu_name' => __('Positions'),
175
+ // );
176
+ // $args = array(
177
+ // 'labels' => $labels,
178
+ // 'hierarchical' => true,
179
+ // );
180
+ // register_taxonomy('team_member_position', 'team_member', $args);
181
+ //}
182
+
183
+ /**
184
+ * Hook to add custom fields box
185
+ * calls a function
186
+ */
187
+ add_action('add_meta_boxes', 'team_member_info_box');
188
+
189
+ function team_member_info_box(){
190
+ add_meta_box(
191
+ 'team_member_info_box', __('Additional Information', 'myplugin_textdomain'), 'team_member_info_box_content', 'team_member', 'advanced', 'high'
192
+ );
193
+ }
194
+
195
+ /**
196
+ * function called by team_member_info_box
197
+ */
198
+ function team_member_info_box_content($post){
199
+ //nonce
200
+ wp_nonce_field(plugin_basename(__FILE__), 'team_member_info_box_content_nonce');
201
+
202
+ //social
203
+
204
+ echo '<p><em>Fields that are left blank, will simply not display any output</em></p>';
205
+
206
+ echo '<table>';
207
+
208
+ echo '<tr><td><lablel for="team_member_title">Job Title</lablel></td>';
209
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_title', true) . '" id="team_member_title" name="team_member_title" placeholder="Enter Job Title"/></td></tr>';
210
+
211
+ echo '<tr><td><lablel for="team_member_email">Email Address</lablel></td>';
212
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_email', true) . '" id="team_member_email" name="team_member_email" placeholder="Enter Email Address"/></td></tr>';
213
+
214
+ echo '<tr><td><lablel for="team_member_facebook">Facebook URL</lablel></td>';
215
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_facebook', true) . '" id="team_member_facebook" name="team_member_facebook" placeholder="Enter Facebook URL"/></td></tr>';
216
+
217
+ echo '<tr><td><label for="team_member_twitter">Twitter URL</lablel></td>';
218
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_twitter', true) . '" id="team_member_twitter" name="team_member_twitter" placeholder="Enter Twitter URL"/></td></tr>';
219
+
220
+ echo '<tr><td><lablel for="team_member_linkedin">Linkedin URL</lablel></td>';
221
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_linkedin', true) . '" id="team_member_linkedin" name="team_member_linkedin" placeholder="Enter Linkedin URL"/></td></tr>';
222
+
223
+ echo '<tr><td><lablel for="team_member_gplus">Google Plus URL</lablel></td>';
224
+ echo '<td><input type="text" value="' . get_post_meta($post->ID, 'team_member_gplus', true) . '" id="team_member_gplus" name="team_member_gplus" placeholder="Enter Google Plus URL"/></td></tr>';
225
+
226
+ echo '</table>';
227
+ }
228
+
229
+ /**
230
+ * Hook that handles submitted data
231
+ */
232
+ add_action('save_post', 'team_member_box_save');
233
+
234
+ function team_member_box_save($post_id){
235
+
236
+ $slug = 'team_member';
237
+
238
+ if(isset($_POST['post_type'])){
239
+ if ($slug != $_POST['post_type']) {
240
+ return;
241
+ }
242
+ }
243
+
244
+ // get var values
245
+ if(get_post_meta($post_id,'sc_member_order',true) == '' || get_post_meta($post_id,'sc_member_order',true) === FALSE)
246
+ update_post_meta($post_id,'sc_member_order',0);
247
+
248
+
249
+ if (isset($_REQUEST['team_member_title'])) {
250
+ $facebook_url = $_POST['team_member_title'];
251
+ update_post_meta($post_id, 'team_member_title', $facebook_url);
252
+ }
253
+
254
+ if (isset($_REQUEST['team_member_email'])) {
255
+ $facebook_url = $_POST['team_member_email'];
256
+ update_post_meta($post_id, 'team_member_email', $facebook_url);
257
+ }
258
+
259
+
260
+ if (isset($_REQUEST['team_member_facebook'])) {
261
+ $facebook_url = $_POST['team_member_facebook'];
262
+ update_post_meta($post_id, 'team_member_facebook', $facebook_url);
263
+ }
264
+
265
+ if (isset($_REQUEST['team_member_twitter'])) {
266
+ $twitter_url = $_POST['team_member_twitter'];
267
+ update_post_meta($post_id, 'team_member_twitter', $twitter_url);
268
+ }
269
+
270
+ if (isset($_REQUEST['team_member_linkedin'])) {
271
+ $linkedin_url = $_POST['team_member_linkedin'];
272
+ update_post_meta($post_id, 'team_member_linkedin', $linkedin_url);
273
+ }
274
+
275
+ if (isset($_REQUEST['team_member_gplus'])) {
276
+ $gplus_url = $_POST['team_member_gplus'];
277
+ update_post_meta($post_id, 'team_member_gplus', $gplus_url);
278
+ }
279
+
280
+ }
281
+
282
+ /**
283
+ * Create custom widget
284
+ */
285
+ // Creating the widget
286
+ class sc_team_widget extends WP_Widget {
287
+
288
+ function __construct() {
289
+ parent::__construct(
290
+ 'sc_team_widget',
291
+ __('Our Team Widget', 'sc_team_widget_domain'),
292
+ array( 'description' => __( 'Use this widget to display the Our Team anywhere on the site.', 'sc_team_widget_domain' ), )
293
+ );
294
+ }
295
+
296
+ // Creating widget front-end
297
+ // This is where the action happens
298
+ public function widget( $args, $instance ) {
299
+ $title = apply_filters( 'widget_title', $instance['title'] );
300
+
301
+ // before and after widget arguments are defined by themes
302
+ echo $args['before_widget'];
303
+ if ( ! empty( $title ) )
304
+ echo $args['before_title'] . $title . $args['after_title'];
305
+
306
+ // This is where you run the code and display the output
307
+ include 'inc/grid.php';
308
+ // echo $args['after_title'];
309
+
310
+ }
311
+
312
+ // Widget Backend
313
+ public function form( $instance ) {
314
+ if ( isset( $instance[ 'title' ] ) ) {
315
+ $title = $instance[ 'title' ];
316
+ }
317
+ else {
318
+ $title = __( 'Meet Our Team', 'sc_team_widget_domain' );
319
+ }
320
+ // Widget admin form
321
+ ?>
322
+ <p>
323
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
324
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
325
+ </p>
326
+ <?php
327
+ }
328
+
329
+ // Updating widget replacing old instances with new
330
+ public function update( $new_instance, $old_instance ) {
331
+ $instance = array();
332
+ $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
333
+ return $instance;
334
+ }
335
+ } // Class sc_team_widget ends here
336
+
337
+ // Register and load the widget
338
+ function wpb_load_widget() {
339
+ register_widget( 'sc_team_widget' );
340
+ }
341
+ add_action( 'widgets_init', 'wpb_load_widget' );
342
+
343
+
344
+ /**
345
+ * Show post thumbnails on backend
346
+ */
347
+ add_filter('manage_posts_columns', 'posts_columns', 5);
348
+ add_action('manage_posts_custom_column', 'posts_custom_columns', 5, 2);
349
+ function posts_columns($defaults){
350
+ $defaults['riv_post_thumbs'] = __('Profile Picture');
351
+ return $defaults;
352
+ }
353
+ function posts_custom_columns($column_name, $id){
354
+ if($column_name === 'riv_post_thumbs'){
355
+ echo the_post_thumbnail( 'thumbnail' );
356
+ }
357
+ }
358
+
359
+ /**
360
+ * ajax function to update post order
361
+ */
362
+ add_action('wp_ajax_my_update_pm', 'sc_team_update_order');
363
+ add_action('wp_ajax_nopriv_my_update_pm', 'sc_team_update_order');
364
+ function sc_team_update_order(){
365
+ $post_id = $_POST['id'];
366
+ $sc_member_order = $_POST['sc_member_order'];
367
+ //update_post_meta($post_id, $meta_key, $sc_member_order)
368
+ update_post_meta($post_id, 'sc_member_order', $sc_member_order);
369
+ }
script/sc_our_team.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * To change this template, choose Tools | Templates
3
+ * and open the template in the editor.
4
+ */
5
+
6
+ jQuery(document).ready(function($){
7
+ $('.grid#sc_our_team .sc_team_member').hover(function(){
8
+ $('.sc_team_member_overlay',this).stop(true,false).animate({'height' : '100%'},350);
9
+ },function(){
10
+ $('.sc_team_member_overlay',this).stop(true,false).animate({'height' : '35px'},330);
11
+ });
12
+ });
script/sc_our_team_admin.js ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * To change this template, choose Tools | Templates
3
+ * and open the template in the editor.
4
+ */
5
+
6
+
7
+ jQuery(document).ready(function($) {
8
+ sc_team_set_order();
9
+
10
+ $('.sortable').sortable();
11
+ $('.handles').sortable({
12
+ handle: 'span'
13
+ });
14
+ $('.connected').sortable({
15
+ connectWith: '.connected'
16
+ });
17
+ $('.exclude').sortable({
18
+ items: ':not(.disabled)'
19
+ });
20
+ $('.sortable').sortable().bind('sortupdate', function(e, ui) {
21
+ sc_team_set_order();
22
+ });
23
+
24
+ function sc_team_set_order() {
25
+ $('.sortable li').each(function() {
26
+ $(this).attr('sc_member_order', $(this).index());
27
+ });
28
+ }
29
+
30
+ $('#set_order').click(function() {
31
+ var post_path = $('.sortable').attr('data-action');
32
+ // UX
33
+ $(this).attr('disabled','disable');
34
+
35
+ $('.sc_team_member_update_status .sc_team_member_updating').stop(true,false).fadeIn(200,function(){
36
+ $(this).delay(800).fadeOut(200);
37
+ });
38
+
39
+ $('.sortable li').each(function() {
40
+ var data = {
41
+ action: 'my_update_pm',
42
+ id: $(this).attr('id'),
43
+ sc_member_order: $(this).attr('sc_member_order')
44
+ };
45
+ jQuery.post('admin-ajax.php', data, function(response) {
46
+ // whatever you need to do; maybe nothing
47
+ $('.sc_team_member_update_status .sc_team_member_updating').hide();
48
+ $('.sc_team_member_update_status .sc_team_member_saved').stop(true,false).fadeIn(200,function() {
49
+ $(this).delay(1000).fadeOut(200);
50
+ });
51
+ $('#set_order').removeAttr('disabled');
52
+ });
53
+ });
54
+ });
55
+ });
56
+
57
+ /*
58
+ * HTML5 Sortable jQuery Plugin
59
+ * http://farhadi.ir/projects/html5sortable
60
+ *
61
+ * Copyright 2012, Ali Farhadi
62
+ * Released under the MIT license.
63
+ */
64
+ (function($) {
65
+ var dragging, placeholders = $();
66
+ $.fn.sortable = function(options) {
67
+ var method = String(options);
68
+ options = $.extend({
69
+ connectWith: false
70
+ }, options);
71
+ return this.each(function() {
72
+ if (/^enable|disable|destroy$/.test(method)) {
73
+ var items = $(this).children($(this).data('items')).attr('draggable', method == 'enable');
74
+ if (method == 'destroy') {
75
+ items.add(this).removeData('connectWith items')
76
+ .off('dragstart.h5s dragend.h5s selectstart.h5s dragover.h5s dragenter.h5s drop.h5s');
77
+ }
78
+ return;
79
+ }
80
+ var isHandle, index, items = $(this).children(options.items);
81
+ var placeholder = $('<' + (/^ul|ol$/i.test(this.tagName) ? 'li' : 'div') + ' class="sortable-placeholder">');
82
+ items.find(options.handle).mousedown(function() {
83
+ isHandle = true;
84
+ }).mouseup(function() {
85
+ isHandle = false;
86
+ });
87
+ $(this).data('items', options.items)
88
+ placeholders = placeholders.add(placeholder);
89
+ if (options.connectWith) {
90
+ $(options.connectWith).add(this).data('connectWith', options.connectWith);
91
+ }
92
+ items.attr('draggable', 'true').on('dragstart.h5s', function(e) {
93
+ if (options.handle && !isHandle) {
94
+ return false;
95
+ }
96
+ isHandle = false;
97
+ var dt = e.originalEvent.dataTransfer;
98
+ dt.effectAllowed = 'move';
99
+ dt.setData('Text', 'dummy');
100
+ index = (dragging = $(this)).addClass('sortable-dragging').index();
101
+ }).on('dragend.h5s', function() {
102
+ if (!dragging) {
103
+ return;
104
+ }
105
+ dragging.removeClass('sortable-dragging').show();
106
+ placeholders.detach();
107
+ if (index != dragging.index()) {
108
+ dragging.parent().trigger('sortupdate', {item: dragging});
109
+ }
110
+ dragging = null;
111
+ }).not('a[href], img').on('selectstart.h5s', function() {
112
+ this.dragDrop && this.dragDrop();
113
+ return false;
114
+ }).end().add([this, placeholder]).on('dragover.h5s dragenter.h5s drop.h5s', function(e) {
115
+ if (!items.is(dragging) && options.connectWith !== $(dragging).parent().data('connectWith')) {
116
+ return true;
117
+ }
118
+ if (e.type == 'drop') {
119
+ e.stopPropagation();
120
+ placeholders.filter(':visible').after(dragging);
121
+ dragging.trigger('dragend.h5s');
122
+ return false;
123
+ }
124
+ e.preventDefault();
125
+ e.originalEvent.dataTransfer.dropEffect = 'move';
126
+ if (items.is(this)) {
127
+ if (options.forcePlaceholderSize) {
128
+ placeholder.height(dragging.outerHeight());
129
+ }
130
+ dragging.hide();
131
+ $(this)[placeholder.index() < $(this).index() ? 'after' : 'before'](placeholder);
132
+ placeholders.not(placeholder).detach();
133
+ } else if (!placeholders.is(this) && !$(this).children(options.items).length) {
134
+ placeholders.detach();
135
+ $(this).append(placeholder);
136
+ }
137
+ return false;
138
+ });
139
+ });
140
+ };
141
+ })(jQuery);
style/sc_our_team.css ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Document : sc_our_team
3
+ Created on : Jun 23, 2014, 7:07:26 PM
4
+ Author : Bilal
5
+ Description:
6
+ Purpose of the stylesheet follows.
7
+ */
8
+
9
+ /**
10
+ * Grid CSS
11
+ */
12
+ .grid#sc_our_team{
13
+ overflow: hidden;
14
+ width: 100%;
15
+ }
16
+ .grid#sc_our_team .sc_team_member{
17
+ overflow: hidden;
18
+ box-sizing: border-box;
19
+ padding: 5px;
20
+
21
+ }
22
+ .grid#sc_our_team .sc_team_member .icons{
23
+ margin-top: 70%;
24
+ }
25
+ .grid#sc_our_team .sc_team_member .icons img{
26
+ width: 25px;
27
+ margin-right: 5px;
28
+
29
+ }
30
+ .grid#sc_our_team .sc_team_member .sc_team_member_jobtitle,
31
+ .grid#sc_our_team .sc_team_member .sc_team_member_name{
32
+ height: 15px;
33
+ }
34
+ .grid#sc_our_team .sc_team_member img.wp-post-image{
35
+
36
+ width: 100%;
37
+ display: block;
38
+ margin: 0 auto;
39
+ float: none;
40
+ border: none;
41
+ padding: 0;
42
+ }
43
+ .grid#sc_our_team .sc_team_member .sc_team_member_name{
44
+ font-weight: bold;
45
+ font-size: 16px;
46
+ }
47
+
48
+ .grid#sc_our_team .sc_team_member_inner{
49
+ height: 200px;
50
+ width: 200px;
51
+ overflow: hidden;
52
+ background-size: cover;
53
+ position: relative;
54
+ text-align: center;
55
+ background: #404040;
56
+ }
57
+ .grid#sc_our_team .sc_team_member .sc_team_member_overlay{
58
+ position: absolute;
59
+ width: 100%;
60
+ left: 0;
61
+ bottom: 0;
62
+ padding: 0 10px;
63
+ height: 35px;
64
+ color: #fff;
65
+ background: rgba(50,50,50,0.5);
66
+ }
67
+ @media (min-width: 768px){
68
+ .grid#sc_our_team .sc_team_member{
69
+ float: left;
70
+ width: 25%;
71
+ }
72
+ .grid#sc_our_team .sc_team_member img.wp-post-image{
73
+
74
+ }
75
+ .grid#sc_our_team .sc_team_member_inner{
76
+
77
+ }
78
+ }
79
+
80
+ @media (min-width: 481px) and (max-width: 767px){
81
+ .grid#sc_our_team .sc_team_member{
82
+ float: left;
83
+ width: 33.33%;
84
+ }
85
+ }
86
+ @media (max-width: 480px){
87
+ .grid#sc_our_team .sc_team_member{
88
+ float: left;
89
+ width: 50%;
90
+ }
91
+ }
style/sc_our_team_admin.css ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Document : sc_our_team_admin
3
+ Created on : Jun 25, 2014, 10:07:44 PM
4
+ Author : Bilal
5
+ Description:
6
+ Purpose of the stylesheet follows.
7
+ */
8
+
9
+ root {
10
+ display: block;
11
+ }
12
+
13
+ .sc_team_member{
14
+ width: 20%;
15
+ float: left;
16
+ overflow: hidden;
17
+ }
18
+ .sc_team_member img{
19
+ width: 100%;
20
+ }
21
+
22
+ .sc_team_member_update_status .sc_team_member_updating,
23
+ .sc_team_member_update_status .sc_team_member_saved{
24
+ display: none;
25
+ }
26
+
27
+ .sc_team_member_inner{
28
+ height: 100%;
29
+ width: 100%;
30
+ position: relative;
31
+ }
32
+ .sc_team_member_overlay{
33
+ position: absolute;
34
+ height: 20px;
35
+ color: #fff;
36
+ width: 100%;
37
+ bottom: -5px;
38
+ left: 0;
39
+ line-height: 20px;
40
+ background: rgba(50,50,50,0.5);
41
+ }
42
+
43
+ #features {
44
+ margin: auto;
45
+ width: 460px;
46
+ font-size: 0.9em;
47
+ }
48
+ .connected, .sortable, .exclude, .handles {
49
+ margin: auto;
50
+ padding: 0;
51
+ width: 450px;
52
+ -webkit-touch-callout: none;
53
+ -webkit-user-select: none;
54
+ -khtml-user-select: none;
55
+ -moz-user-select: none;
56
+ -ms-user-select: none;
57
+ user-select: none;
58
+ }
59
+ .sortable.grid {
60
+ overflow: hidden;
61
+ }
62
+ .connected li, .sortable li, .exclude li, .handles li {
63
+ list-style: none;
64
+ border: 1px solid #CCC;
65
+ background: #F6F6F6;
66
+ font-family: "Tahoma";
67
+ color: #1C94C4;
68
+ margin: 5px;
69
+ padding: 5px;
70
+ height: 22px;
71
+ }
72
+ .handles span {
73
+ cursor: move;
74
+ }
75
+ li.disabled {
76
+ opacity: 0.5;
77
+ }
78
+ .sortable.grid li {
79
+ line-height: 80px;
80
+ float: left;
81
+ width: 80px;
82
+ height: 80px;
83
+ text-align: center;
84
+ }
85
+ li.highlight {
86
+ background: #FEE25F;
87
+ }
88
+ #connected {
89
+ width: 440px;
90
+ overflow: hidden;
91
+ margin: auto;
92
+ }
93
+ .connected {
94
+ float: left;
95
+ width: 200px;
96
+ }
97
+ .connected.no2 {
98
+ float: right;
99
+ }
100
+ li.sortable-placeholder {
101
+ border: 1px dashed #CCC;
102
+ background: none;
103
+ }