WordPress Social Sharing Plugin – Social Warfare - Version 3.5.0

Version Description

(26 FEB 2019) = * Fixed the side floating buttons not showing on some themes. * Fixed 'operand type' notice when making cURL share count request. * Fixed Facebook shares displaying double the value. * Fixed the Pinterest description sometimes being too long when pinning. * Escaped the Pinterest description before sending to the client. * Fixed a missing @via tag for Click to Tweets. * Fixed the CSS selector for Gutenberg blocks. * Updated location of Total Shares and Share Counts options. * Updated og:image tags to include a name attribute (for LinkedIn). * Updated the Frame Buster feature. * Updated the pinterest button search & destroy method. * Fixed notice when there are no inactive icons. * Added interface for handling oAuth handshakes.

Download this release

Release Info

Developer WarfarePlugins
Plugin Icon 128x128 WordPress Social Sharing Plugin – Social Warfare
Version 3.5.0
Comparing to
See all releases

Code changes from version 3.4.2 to 3.5.0

Files changed (56) hide show
  1. assets/css/admin-options-page.css +82 -54
  2. assets/css/admin-options-page.min.css +1 -1
  3. assets/css/admin.css +64 -60
  4. assets/css/admin.min.css +1 -1
  5. assets/css/converted_style.tmp.map +1 -0
  6. assets/css/style.css +315 -38
  7. assets/css/style.min.css +1 -1
  8. assets/css/style.scss +55 -0
  9. assets/fonts/sw-icon-font.eot +0 -0
  10. assets/fonts/sw-icon-font.svg +1 -0
  11. assets/fonts/sw-icon-font.ttf +0 -0
  12. assets/fonts/sw-icon-font.woff +0 -0
  13. assets/js/admin-options-page.js +47 -9
  14. assets/js/admin-options-page.min.js +1 -1
  15. assets/js/admin.js +549 -434
  16. assets/js/admin.min.js +1 -1
  17. assets/js/post-editor/dist/blocks.build.js +1 -132
  18. assets/js/post-editor/dist/blocks.style.build.css +1 -135
  19. assets/js/post-editor/src/block/click-to-tweet.js +69 -63
  20. assets/js/post-editor/src/block/pinterest.js +50 -48
  21. assets/js/post-editor/src/block/social-warfare.js +50 -46
  22. assets/js/post-editor/src/block/style.scss +61 -89
  23. assets/js/script.js +128 -111
  24. assets/js/script.min.js +1 -1
  25. lib/Social_Warfare.php +159 -147
  26. lib/Social_Warfare_Addon.php +300 -299
  27. lib/buttons-panel/SWP_Buttons_Panel.php +123 -124
  28. lib/buttons-panel/SWP_Buttons_Panel_Loader.php +135 -131
  29. lib/buttons-panel/SWP_Buttons_Panel_Trait.php +4 -3
  30. lib/frontend-output/SWP_Header_Output.php +123 -124
  31. lib/frontend-output/SWP_Script.php +223 -215
  32. lib/frontend-output/SWP_Shortcode.php +151 -82
  33. lib/options/SWP_Option_Button.php +97 -0
  34. lib/options/SWP_Option_Icons.php +123 -154
  35. lib/options/SWP_Option_Toggle.php +64 -64
  36. lib/options/SWP_Options_Page.php +723 -631
  37. lib/options/SWP_Options_Page_Section.php +3 -1
  38. lib/options/SWP_Section_HTML.php +495 -494
  39. lib/social-networks/SWP_Pinterest.php +112 -95
  40. lib/social-networks/SWP_Social_Network.php +40 -40
  41. lib/update-checker/composer.json +21 -21
  42. lib/update-checker/examples/plugin.json +51 -51
  43. lib/update-checker/examples/theme.json +4 -4
  44. lib/update-checker/languages/plugin-update-checker-cs_CZ.po +45 -45
  45. lib/utilities/SWP_Auth_Helper.php +219 -0
  46. lib/utilities/SWP_CURL.php +10 -2
  47. lib/utilities/SWP_Credential_Helper.php +188 -0
  48. lib/utilities/SWP_Database_Migration.php +594 -489
  49. lib/utilities/SWP_Post_Cache.php +239 -319
  50. lib/utilities/SWP_SVG.php +2930 -0
  51. lib/utilities/SWP_Utility.php +441 -319
  52. lib/widgets/SWP_Popular_Posts_Widget.php +178 -194
  53. lib/widgets/SWP_Widget.php +144 -20
  54. lib/widgets/SWP_Widget_Loader.php +52 -0
  55. readme.txt +16 -1
  56. social-warfare.php +3 -3
assets/css/admin-options-page.css CHANGED
@@ -84,8 +84,8 @@
84
  }
85
 
86
  .sw-option-container *:last-child {
87
- margin-left: 0 !important;
88
- margin-right: 0 !important;
89
  }
90
 
91
  .sw-clearfix:after, .sw-clearfix:before {
@@ -126,7 +126,7 @@ img {
126
  line-height: 20px;
127
  text-decoration: none;
128
  -webkit-border-radius: 50%;
129
- border-radius: 50%;
130
  width: 20px;
131
  display: block;
132
  float: right;
@@ -202,7 +202,7 @@ img {
202
  .sw-header-menu li:focus, .sw-header-menu li a:focus {
203
  outline: none;
204
  -webkit-box-shadow: none;
205
- box-shadow: none;
206
  }
207
 
208
  .sw-header-menu li span {
@@ -317,10 +317,10 @@ input.sw-admin-input {
317
  padding: 15px;
318
  border: 1px solid #ced3cd;
319
  -webkit-border-radius: 4px;
320
- border-radius: 4px;
321
  float: right;
322
  -webkit-box-shadow: none;
323
- box-shadow: none;
324
  margin: 2px 0 1px 0;
325
  width: 100%;
326
  }
@@ -328,23 +328,26 @@ input.sw-admin-input {
328
  .sw-grid select {
329
  width: 100%;
330
  -webkit-box-shadow: none;
331
- box-shadow: none;
332
  border: 1px solid #ced3cd;
333
  height: 51px;
334
  padding: 15px;
335
  margin: 2px 1px 3px 0;
336
  -webkit-border-radius: 4px;
337
- border-radius: 4px;
338
  }
339
 
340
- a.button.sw-navy-button, a.button.sw-blue-button, a.button.sw-green-button, a.button.sw-red-button {
 
 
 
341
  padding: 15px 30px;
342
  height: auto;
343
  line-height: 1;
344
  -webkit-border-radius: 4px;
345
- border-radius: 4px;
346
  -webkit-box-shadow: none;
347
- box-shadow: none;
348
  float: right;
349
  margin: 15px 0;
350
  }
@@ -354,7 +357,7 @@ a.button.sw-navy-button, a.button.sw-navy-button:focus {
354
  color: #fff;
355
  border-color: #2a2d34;
356
  -webkit-box-shadow: none;
357
- box-shadow: none;
358
  }
359
 
360
  a.button.sw-navy-button:hover, a.button.sw-blue-button:hover {
@@ -362,7 +365,7 @@ a.button.sw-navy-button:hover, a.button.sw-blue-button:hover {
362
  border-color: #2a2d34;
363
  color: #fff;
364
  -webkit-box-shadow: none;
365
- box-shadow: none;
366
  }
367
 
368
  a.button.sw-blue-button, a.button.sw-blue-button:focus {
@@ -370,7 +373,7 @@ a.button.sw-blue-button, a.button.sw-blue-button:focus {
370
  border-color: #6bcce9;
371
  color: #fff;
372
  -webkit-box-shadow: none;
373
- box-shadow: none;
374
  }
375
 
376
  a.button.sw-green-button, a.button.sw-green-button:focus {
@@ -378,7 +381,7 @@ a.button.sw-green-button, a.button.sw-green-button:focus {
378
  color: #fff;
379
  border-color: #71C069;
380
  -webkit-box-shadow: none;
381
- box-shadow: none;
382
  }
383
 
384
  a.button.sw-red-button, a.button.sw-red-button:focus, a.button.sw-red-button:hover {
@@ -386,7 +389,7 @@ a.button.sw-red-button, a.button.sw-red-button:focus, a.button.sw-red-button:hov
386
  color: #fff;
387
  border-color: #ee464f;
388
  -webkit-box-shadow: none;
389
- box-shadow: none;
390
  }
391
 
392
  .sw-admin-tab a.button {
@@ -402,7 +405,7 @@ a.button.sw-red-button, a.button.sw-red-button:focus, a.button.sw-red-button:hov
402
  color: #fff;
403
  padding: 15px;
404
  -webkit-border-radius: 2px;
405
- border-radius: 2px;
406
  margin: 15px 0;
407
  }
408
 
@@ -495,7 +498,7 @@ p.sw-subtitle.sw-registration-text {
495
  top: 50%;
496
  left: 50%;
497
  -webkit-border-radius: 3px;
498
- border-radius: 3px;
499
  padding: 25px;
500
  text-align: center;
501
  font-size: 20px;
@@ -529,7 +532,7 @@ p.sw-subtitle.sw-registration-text {
529
  border: 1px dashed #ced3dc;
530
  padding: 0;
531
  -webkit-border-radius: 4px;
532
- border-radius: 4px;
533
  width: auto;
534
  height: auto;
535
  display: inline-block;
@@ -542,13 +545,13 @@ p.sw-subtitle.sw-registration-text {
542
  padding: 5px 30px 4px;
543
  margin: 7px 5px 7px;
544
  -webkit-border-radius: 2px;
545
- border-radius: 2px;
546
  display: inline-block;
547
  font-style: normal;
548
  font-size: 15px;
549
  line-height: 15px;
550
  cursor: pointer;
551
- max-width: 15px;
552
  }
553
 
554
 
@@ -739,14 +742,14 @@ p.sw-subtitle.sw-registration-text {
739
  .sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],
740
  .sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],
741
  .sw-admin-wrapper[swp-addons*="advanced_display"] [premium] {
742
- display: none;
743
  }
744
 
745
  .sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],
746
  .sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],
747
  .sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],
748
  .sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{
749
- display: inherit;
750
  }
751
 
752
  .ui-tooltip.sw-admin-hover-notice {
@@ -754,11 +757,11 @@ p.sw-subtitle.sw-registration-text {
754
  color: #fff;
755
  padding: 15px;
756
  -webkit-border-radius: 2px;
757
- border-radius: 2px;
758
  margin: 15px 0;
759
  border: 0;
760
  -webkit-box-shadow: none;
761
- box-shadow: none;
762
  max-width: none;
763
  padding: 20px;
764
  }
@@ -818,18 +821,18 @@ div.error {
818
 
819
  .sw-grid-textarea {
820
  border: rgb(221, 221, 221);
821
- box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
822
- height: 120px;
823
- width: 97%
824
  }
825
 
826
  #color-notice {
827
- position: fixed;
828
- bottom: 15px;
829
- margin: 0 auto;
830
- left: 25%;
831
- right: 25%;
832
- background: rgba( 255, 225, 255, .37 );
833
  background-color: #ced3dc;
834
  color: #30394f;
835
  padding: 20px;
@@ -847,34 +850,59 @@ div.error {
847
 
848
  #color-notice .color-dismiss {
849
  float: right;
850
- color: #ffffff;
851
- font-weight: 600;
852
  }
853
 
854
  #color-notice .color-dismiss:before {
855
  content: 'x';
856
- background: #30394f;
857
- border-radius: 50%;
858
- width: 26px;
859
- display: block;
860
- text-align: center;
861
- height: 26px;
862
- line-height: 22px;
863
- font-size: 22px;
864
- cursor: pointer;
865
- padding: 0;
866
- opacity: .4;
867
  }
868
 
869
  .swp-icon-tooltip {
870
- position: absolute;
871
- padding: 10px;
872
  text-align: center;
873
  min-width: 75px;
874
- background: #ced3dc;
875
  color: #fff;
876
- border-radius: 3px;
877
- font-size: 13px;
878
- letter-spacing: 1.2px;
879
- font-family: "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
880
  }
84
  }
85
 
86
  .sw-option-container *:last-child {
87
+ margin-left: 0 !important;
88
+ margin-right: 0 !important;
89
  }
90
 
91
  .sw-clearfix:after, .sw-clearfix:before {
126
  line-height: 20px;
127
  text-decoration: none;
128
  -webkit-border-radius: 50%;
129
+ border-radius: 50%;
130
  width: 20px;
131
  display: block;
132
  float: right;
202
  .sw-header-menu li:focus, .sw-header-menu li a:focus {
203
  outline: none;
204
  -webkit-box-shadow: none;
205
+ box-shadow: none;
206
  }
207
 
208
  .sw-header-menu li span {
317
  padding: 15px;
318
  border: 1px solid #ced3cd;
319
  -webkit-border-radius: 4px;
320
+ border-radius: 4px;
321
  float: right;
322
  -webkit-box-shadow: none;
323
+ box-shadow: none;
324
  margin: 2px 0 1px 0;
325
  width: 100%;
326
  }
328
  .sw-grid select {
329
  width: 100%;
330
  -webkit-box-shadow: none;
331
+ box-shadow: none;
332
  border: 1px solid #ced3cd;
333
  height: 51px;
334
  padding: 15px;
335
  margin: 2px 1px 3px 0;
336
  -webkit-border-radius: 4px;
337
+ border-radius: 4px;
338
  }
339
 
340
+ /* old selectors */
341
+ a.button.sw-navy-button, a.button.sw-blue-button, a.button.sw-green-button, a.button.sw-red-button,
342
+ /* 2019 selector */
343
+ .swp-button {
344
  padding: 15px 30px;
345
  height: auto;
346
  line-height: 1;
347
  -webkit-border-radius: 4px;
348
+ border-radius: 4px;
349
  -webkit-box-shadow: none;
350
+ box-shadow: none;
351
  float: right;
352
  margin: 15px 0;
353
  }
357
  color: #fff;
358
  border-color: #2a2d34;
359
  -webkit-box-shadow: none;
360
+ box-shadow: none;
361
  }
362
 
363
  a.button.sw-navy-button:hover, a.button.sw-blue-button:hover {
365
  border-color: #2a2d34;
366
  color: #fff;
367
  -webkit-box-shadow: none;
368
+ box-shadow: none;
369
  }
370
 
371
  a.button.sw-blue-button, a.button.sw-blue-button:focus {
373
  border-color: #6bcce9;
374
  color: #fff;
375
  -webkit-box-shadow: none;
376
+ box-shadow: none;
377
  }
378
 
379
  a.button.sw-green-button, a.button.sw-green-button:focus {
381
  color: #fff;
382
  border-color: #71C069;
383
  -webkit-box-shadow: none;
384
+ box-shadow: none;
385
  }
386
 
387
  a.button.sw-red-button, a.button.sw-red-button:focus, a.button.sw-red-button:hover {
389
  color: #fff;
390
  border-color: #ee464f;
391
  -webkit-box-shadow: none;
392
+ box-shadow: none;
393
  }
394
 
395
  .sw-admin-tab a.button {
405
  color: #fff;
406
  padding: 15px;
407
  -webkit-border-radius: 2px;
408
+ border-radius: 2px;
409
  margin: 15px 0;
410
  }
411
 
498
  top: 50%;
499
  left: 50%;
500
  -webkit-border-radius: 3px;
501
+ border-radius: 3px;
502
  padding: 25px;
503
  text-align: center;
504
  font-size: 20px;
532
  border: 1px dashed #ced3dc;
533
  padding: 0;
534
  -webkit-border-radius: 4px;
535
+ border-radius: 4px;
536
  width: auto;
537
  height: auto;
538
  display: inline-block;
545
  padding: 5px 30px 4px;
546
  margin: 7px 5px 7px;
547
  -webkit-border-radius: 2px;
548
+ border-radius: 2px;
549
  display: inline-block;
550
  font-style: normal;
551
  font-size: 15px;
552
  line-height: 15px;
553
  cursor: pointer;
554
+ max-width: 15px;
555
  }
556
 
557
 
742
  .sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],
743
  .sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],
744
  .sw-admin-wrapper[swp-addons*="advanced_display"] [premium] {
745
+ display: none;
746
  }
747
 
748
  .sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],
749
  .sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],
750
  .sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],
751
  .sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{
752
+ display: inherit;
753
  }
754
 
755
  .ui-tooltip.sw-admin-hover-notice {
757
  color: #fff;
758
  padding: 15px;
759
  -webkit-border-radius: 2px;
760
+ border-radius: 2px;
761
  margin: 15px 0;
762
  border: 0;
763
  -webkit-box-shadow: none;
764
+ box-shadow: none;
765
  max-width: none;
766
  padding: 20px;
767
  }
821
 
822
  .sw-grid-textarea {
823
  border: rgb(221, 221, 221);
824
+ box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
825
+ height: 120px;
826
+ width: 97%
827
  }
828
 
829
  #color-notice {
830
+ position: fixed;
831
+ bottom: 15px;
832
+ margin: 0 auto;
833
+ left: 25%;
834
+ right: 25%;
835
+ background: rgba( 255, 225, 255, .37 );
836
  background-color: #ced3dc;
837
  color: #30394f;
838
  padding: 20px;
850
 
851
  #color-notice .color-dismiss {
852
  float: right;
853
+ color: #ffffff;
854
+ font-weight: 600;
855
  }
856
 
857
  #color-notice .color-dismiss:before {
858
  content: 'x';
859
+ background: #30394f;
860
+ border-radius: 50%;
861
+ width: 26px;
862
+ display: block;
863
+ text-align: center;
864
+ height: 26px;
865
+ line-height: 22px;
866
+ font-size: 22px;
867
+ cursor: pointer;
868
+ padding: 0;
869
+ opacity: .4;
870
  }
871
 
872
  .swp-icon-tooltip {
873
+ position: absolute;
874
+ padding: 10px;
875
  text-align: center;
876
  min-width: 75px;
877
+ background: #ced3dc;
878
  color: #fff;
879
+ border-radius: 3px;
880
+ font-size: 13px;
881
+ letter-spacing: 1.2px;
882
+ font-family: "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif
883
+ }
884
+
885
+ .swp-authorization-button {
886
+ width: 200px;
887
+ color: white;
888
+ text-decoration: none;
889
+ font-size: 15px;
890
+ line-height: 15px;
891
+ }
892
+
893
+ .swp-authorization-button > div {
894
+ display: flex;
895
+ width: 100%;
896
+ text-align: right;
897
+ justify-content: space-between;
898
+ align-items: center;
899
+
900
+ }
901
+
902
+ .swp-authorization-button i.sw {
903
+ padding-right: 10px;
904
+ }
905
+
906
+ .swp-authorization-button:hover {
907
+ color: white;
908
  }
assets/css/admin-options-page.min.css CHANGED
@@ -1 +1 @@
1
- .sw-grid{float:left;margin-bottom:2.127659574468%;padding-top:0}.sw-grid-right{float:right;margin-bottom:2.127659574468%;padding-top:0}.sw-col-60,.sw-col-140,.sw-col-220,.sw-col-300,.sw-col-380,.sw-col-460,.sw-col-540,.sw-col-620,.sw-col-700,.sw-col-780,.sw-col-860{margin-right:2.127659574468%}.sw-col-60{width:6.382978723404%}.sw-col-140{width:14.893617021277%}.sw-col-220{width:23.404255319149%}.sw-col-300{width:31.914893617021%}.sw-col-380{width:40.425531914894%}.sw-col-460{width:48.936170212766%}.sw-col-540{width:57.446808510638%}.sw-col-620{width:65.957446808511%}.sw-col-700{width:74.468085106383%}.sw-col-780{width:82.978723404255%}.sw-col-860{width:91.489361702128%}.sw-col-940{width:100%}.sw-fit{margin-left:0!important;margin-right:0!important}.sw-option-container *:last-child{margin-left:0!important;margin-right:0!important}.sw-clearfix:after,.sw-clearfix:before{content:' ';display:table}.sw-clearfix:after{clear:both}.sw-clearfix{clear:both;width:100%}img{-ms-interpolation-mode:bicubic;border:0;height:auto;max-width:100%;vertical-align:middle}.sw-admin-divider{width:100%;height:1px;border-bottom:1px solid #CED3DC;margin:20px 0 40px 0}.sw-hidden{display:none!important}.swp_support_link{border:1px solid #ccc;font-size:18px;line-height:20px;text-decoration:none;-webkit-border-radius:50%;border-radius:50%;width:20px;display:block;float:right;text-align:center;color:#ccc;margin-right:20px;margin-top:4px;padding:2px;font-weight:bold}.swp_support_link:hover{color:#6BCCE9;border-color:#6BCCE9}.swp_support_link.swp_four_fourths{margin-left:20px;margin-top:13px}#screen-meta-links .screen-meta-toggle{display:none!important}#wpwrap,#wpcontent{background:#fff;padding-left:0}.sw-top-menu{border-bottom:1px solid #CED3DC;float:none;background:#fff;z-index:5;margin:0}.sw-top-menu[sw-registered="0"] .sw-header-logo{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo-pro{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo{display:none}.sw-top-menu[sw-registered="0"] .sw-header-logo-pro{display:none}.sw-header-menu{height:65px;margin:0}.sw-header-menu li{float:left;margin:0 15px;font-size:14px;display:table;height:65px}.sw-header-menu li:focus,.sw-header-menu li a:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.sw-header-menu li span{padding:0 5px 5px 5px}.sw-header-menu li.sw-active-tab span,.sw-header-menu li:hover span{border-bottom:4px solid #30394f}.sw-header-menu li a{color:#30394f;text-decoration:none;display:table-cell;vertical-align:middle;padding:30px 0}.sw-top-menu .sw-grid{margin-bottom:0}.sw-admin-wrapper,.sw-header-wrapper{clear:both;margin:20px auto 20px auto;padding:0 40px 20px 40px;position:relative}.sw-header-wrapper{margin:0}.sw-tabs-container .sw-admin-tab{display:none}.sw-tabs-container .sw-admin-tab:nth-child(1){display:block}.sw-admin-tab h2{font-size:26px;line-height:1.2;margin:0}.sw-admin-tab h2.sw-h-label{line-height:56px}p.sw-subtitle{font-size:16px;line-height:1.2;margin:10px 0 30px 0}p.sw-checkbox-label,p.sw-input-label,p.sw-select-label,p.sw-authenticate-label{font-size:16px;font-weight:bold;padding-left:10%}.sw-select-label.sw-no-padding{padding-left:0}p.sw-short{margin:1em 0 0 0}p.sw-subtext-label{margin-top:-10px}.sw-admin-sidebar img{margin:5px 0 10px 0}.system-status-wrapper{display:none}.system-status-container{width:90%;height:250px;overflow:hidden;border:1px solid #CED3DC;padding:5%}h3.sw-buttons-toggle{width:100px;float:left;clear:left;margin:15px 0 30px 0;padding-left:10%}input.sw-admin-input{padding:15px;border:1px solid #ced3cd;-webkit-border-radius:4px;border-radius:4px;float:right;-webkit-box-shadow:none;box-shadow:none;margin:2px 0 1px 0;width:100%}.sw-grid select{width:100%;-webkit-box-shadow:none;box-shadow:none;border:1px solid #ced3cd;height:51px;padding:15px;margin:2px 1px 3px 0;-webkit-border-radius:4px;border-radius:4px}a.button.sw-navy-button,a.button.sw-blue-button,a.button.sw-green-button,a.button.sw-red-button{padding:15px 30px;height:auto;line-height:1;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;float:right;margin:15px 0}a.button.sw-navy-button,a.button.sw-navy-button:focus{background:#30394f;color:#fff;border-color:#2a2d34;-webkit-box-shadow:none;box-shadow:none}a.button.sw-navy-button:hover,a.button.sw-blue-button:hover{background:#2a2d34;border-color:#2a2d34;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-blue-button,a.button.sw-blue-button:focus{background:#6bcce9;border-color:#6bcce9;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-green-button,a.button.sw-green-button:focus{background:#71C069;color:#fff;border-color:#71C069;-webkit-box-shadow:none;box-shadow:none}a.button.sw-red-button,a.button.sw-red-button:focus,a.button.sw-red-button:hover{background:#ee464f;color:#fff;border-color:#ee464f;-webkit-box-shadow:none;box-shadow:none}.sw-admin-tab a.button{margin:5px 0 15px 0}.sw-save-settings{width:100%;text-align:center}.sw-red-notice,.sw-green-notice{color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0}.sw-red-notice,.sw-loading-message{background:#ee464f}.sw-green-notice,.sw-loading-complete{background:#71C069}.sw-loading-bg{width:100%;position:fixed;top:0;left:0;height:100%;background:rgba(0,0,0,0.8);z-index:999999999999}.sw-loading-message:before,.sw-green-notice:before,.sw-loading-complete:before{font-family:'Dashicons';font-size:26px;margin:0 15px 0 0;vertical-align:middle}.sw-red-notice:before,.sw-red-notice:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E'}.sw-red-notice a{color:#fff;font-weight:bold;text-decoration:none;border-bottom:2px solid #fff}.sw-red-notice a:hover{color:#30394f;border-bottom:2px solid #30394f}.sw-loading-message:before{content:"\f158"}.sw-green-notice:before,.sw-loading-complete:before{content:"\f147"}.sw-admin-tab .two-thirds-advanced h2.sw-h-label{line-height:1.2;margin-bottom:15px}.sw-italic{font-style:italic}p.sw-subtitle.sw-registration-text{padding:20px 0 0 0;font-size:120%;line-height:175%}.registration-wrapper[registration="1"] .swp_is_not_registered{display:none}.registration-wrapper[registration="0"] .swp_is_registered{display:none}.tweet-count-wrapper[registration="true"] .swp_tweets_not_activated{display:none}.sw-tweet-count-demo{margin:20px 0}.sw-loading-message,.sw-loading-complete{position:fixed;top:50%;left:50%;-webkit-border-radius:3px;border-radius:3px;padding:25px;text-align:center;font-size:20px;color:white;width:240px;margin-top:-46px;margin-left:-120px}.sw-grid textarea{width:100%;height:120px}.sw-active,.sw-inactive{margin:0 0 5px 0;min-width:50px;min-height:40px;border:1px dashed #ced3dc;padding:0;-webkit-border-radius:4px;border-radius:4px;width:auto;height:auto;display:inline-block;max-width:520px}.sw-s{font-family:'sw-icon-font';color:#fff;padding:5px 30px 4px;margin:7px 5px 7px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;font-style:normal;font-size:15px;line-height:15px;cursor:pointer;max-width:15px}.sw-twitter-icon:before{content:'s'}.sw-s.sw-twitter-icon{background-color:#429cd6;border-color:#3c87b2}.sw-google_plus-icon:before{content:'h'}.sw-s.sw-google_plus-icon{background-color:#df4b37;border-color:#c44133}.sw-facebook-icon:before{content:'j'}.sw-s.sw-facebook-icon{background-color:#3a589e;border-color:#2e4675}.sw-pinterest-icon:before{content:'b'}.sw-s.sw-pinterest-icon{background-color:#cd2029;border-color:#aa1b29}.sw-linkedin-icon:before{content:'f'}.sw-s.sw-linkedin-icon{background-color:#0d77b7;border-color:#0c6591}.sw-tumblr-icon:before{content:'r'}.sw-s.sw-tumblr-icon{background-color:#39475d;border-color:#27313f}.sw-mix-icon:before{content:'g'}.sw-s.sw-mix-icon{background-color:#f4812c;border-color:#c96a29}.sw-reddit-icon:before{content:'a'}.sw-s.sw-reddit-icon{background-color:#f04b23;border-color:#d33f27}.sw-yummly-icon:before{content:'x'}.sw-s.sw-yummly-icon{background-color:#e26426;border-color:#b65027}.sw-whatsapp-icon:before{content:'y'}.sw-s.sw-whatsapp-icon{background-color:#71c169;border-color:#28b04b}.sw-pocket-icon:before{content:'B'}.sw-s.sw-pocket-icon{background-color:#ef4056;border-color:#ce3d55}.sw-buffer-icon:before{content:'z'}.sw-s.sw-buffer-icon{background-color:#323b43;border-color:#59626a}.sw-email-icon:before{content:'k'}.sw-s.sw-email-icon{background-color:#6bcce9;border-color:#6bcce9}.sw-hacker_news-icon:before{content:'D'}.sw-s.sw-hacker_news-icon{background-color:#f16522;border-color:#d85623}.sw-flipboard-icon:before{content:'C'}.sw-s.sw-flipboard-icon{background-color:#e02828;border-color:#bf2626}@media screen and (max-width:1350px){.sw-header-menu li{font-size:14px;margin:0 10px}}@media screen and (max-width:1080px){.sw-header-logo{display:none}}.sw-admin-wrapper[sw-registered="0"] [premium="1"]{display:none!important}.sw-admin-wrapper[sw-registered="0"] .sw-option-container{position:relative}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker{display:none}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker:not(.no-icon):before{font-family:'sw-icon-font';content:'E';font-size:24px;float:right;margin:20px 20px 0 0}.sw-admin-wrapper[sw-registered="0"] i[premium-button="1"]{display:none}.sw-admin-wrapper[sw-registered="1"] .sw-premium-buttons{display:none}.sw-admin-wrapper[swp-addons*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"] [premium]{display:none}.sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{display:inherit}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}.swp_upload_image_field{display:none}.sw-admin-image-preview{max-height:50px;float:right}.toplevel_page_social-warfare .notice-error,.toplevel_page_social-warfare .notice-warning,.toplevel_page_social-warfare .notice-success,.toplevel_page_social-warfare .notice-info,.toplevel_page_social-warfare .is-dismissible,.toplevel_page_social-warfare .update-nag,.toplevel_page_social-warfare #notice-error,.toplevel_page_social-warfare #notice-warning,.toplevel_page_social-warfare #notice-success,.toplevel_page_social-warfare #notice-info,.toplevel_page_social-warfare #is-dismissible,.toplevel_page_social-warfare #update-nag,div.error{display:none}.toplevel_page_social-warfare .sw-admin-wrapper .notice-error,.toplevel_page_social-warfare .sw-admin-wrapper .notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper .notice-success,.toplevel_page_social-warfare .sw-admin-wrapper .notice-info,.toplevel_page_social-warfare .sw-admin-wrapper .is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper .update-nag,.toplevel_page_social-warfare .sw-admin-wrapper #notice-error,.toplevel_page_social-warfare .sw-admin-wrapper #notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper #notice-success,.toplevel_page_social-warfare .sw-admin-wrapper #notice-info,.toplevel_page_social-warfare .sw-admin-wrapper #is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper #update-nag,div.error{display:block}.sw-grid-textarea{border:rgb(221,221,221);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);height:120px;width:97%}#color-notice{position:fixed;bottom:15px;margin:0 auto;left:25%;right:25%;background:rgba( 255,225,255,.37 );background-color:#ced3dc;color:#30394f;padding:20px;border-radius:4px;text-align:left;width:650px}#color-notice p{font-size:16px;padding:0;margin:0}#color-notice .color-dismiss{float:right;color:#fff;font-weight:600}#color-notice .color-dismiss:before{content:'x';background:#30394f;border-radius:50%;width:26px;display:block;text-align:center;height:26px;line-height:22px;font-size:22px;cursor:pointer;padding:0;opacity:.4}.swp-icon-tooltip{position:absolute;padding:10px;text-align:center;min-width:75px;background:#ced3dc;color:#fff;border-radius:3px;font-size:13px;letter-spacing:1.2px;font-family:"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}
1
+ .sw-grid{float:left;margin-bottom:2.127659574468%;padding-top:0}.sw-grid-right{float:right;margin-bottom:2.127659574468%;padding-top:0}.sw-col-60,.sw-col-140,.sw-col-220,.sw-col-300,.sw-col-380,.sw-col-460,.sw-col-540,.sw-col-620,.sw-col-700,.sw-col-780,.sw-col-860{margin-right:2.127659574468%}.sw-col-60{width:6.382978723404%}.sw-col-140{width:14.893617021277%}.sw-col-220{width:23.404255319149%}.sw-col-300{width:31.914893617021%}.sw-col-380{width:40.425531914894%}.sw-col-460{width:48.936170212766%}.sw-col-540{width:57.446808510638%}.sw-col-620{width:65.957446808511%}.sw-col-700{width:74.468085106383%}.sw-col-780{width:82.978723404255%}.sw-col-860{width:91.489361702128%}.sw-col-940{width:100%}.sw-fit{margin-left:0!important;margin-right:0!important}.sw-option-container *:last-child{margin-left:0!important;margin-right:0!important}.sw-clearfix:after,.sw-clearfix:before{content:' ';display:table}.sw-clearfix:after{clear:both}.sw-clearfix{clear:both;width:100%}img{-ms-interpolation-mode:bicubic;border:0;height:auto;max-width:100%;vertical-align:middle}.sw-admin-divider{width:100%;height:1px;border-bottom:1px solid #CED3DC;margin:20px 0 40px 0}.sw-hidden{display:none!important}.swp_support_link{border:1px solid #ccc;font-size:18px;line-height:20px;text-decoration:none;-webkit-border-radius:50%;border-radius:50%;width:20px;display:block;float:right;text-align:center;color:#ccc;margin-right:20px;margin-top:4px;padding:2px;font-weight:bold}.swp_support_link:hover{color:#6BCCE9;border-color:#6BCCE9}.swp_support_link.swp_four_fourths{margin-left:20px;margin-top:13px}#screen-meta-links .screen-meta-toggle{display:none!important}#wpwrap,#wpcontent{background:#fff;padding-left:0}.sw-top-menu{border-bottom:1px solid #CED3DC;float:none;background:#fff;z-index:5;margin:0}.sw-top-menu[sw-registered="0"] .sw-header-logo{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo-pro{height:75px;float:left}.sw-top-menu[sw-registered="1"] .sw-header-logo{display:none}.sw-top-menu[sw-registered="0"] .sw-header-logo-pro{display:none}.sw-header-menu{height:65px;margin:0}.sw-header-menu li{float:left;margin:0 15px;font-size:14px;display:table;height:65px}.sw-header-menu li:focus,.sw-header-menu li a:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.sw-header-menu li span{padding:0 5px 5px 5px}.sw-header-menu li.sw-active-tab span,.sw-header-menu li:hover span{border-bottom:4px solid #30394f}.sw-header-menu li a{color:#30394f;text-decoration:none;display:table-cell;vertical-align:middle;padding:30px 0}.sw-top-menu .sw-grid{margin-bottom:0}.sw-admin-wrapper,.sw-header-wrapper{clear:both;margin:20px auto 20px auto;padding:0 40px 20px 40px;position:relative}.sw-header-wrapper{margin:0}.sw-tabs-container .sw-admin-tab{display:none}.sw-tabs-container .sw-admin-tab:nth-child(1){display:block}.sw-admin-tab h2{font-size:26px;line-height:1.2;margin:0}.sw-admin-tab h2.sw-h-label{line-height:56px}p.sw-subtitle{font-size:16px;line-height:1.2;margin:10px 0 30px 0}p.sw-checkbox-label,p.sw-input-label,p.sw-select-label,p.sw-authenticate-label{font-size:16px;font-weight:bold;padding-left:10%}.sw-select-label.sw-no-padding{padding-left:0}p.sw-short{margin:1em 0 0 0}p.sw-subtext-label{margin-top:-10px}.sw-admin-sidebar img{margin:5px 0 10px 0}.system-status-wrapper{display:none}.system-status-container{width:90%;height:250px;overflow:hidden;border:1px solid #CED3DC;padding:5%}h3.sw-buttons-toggle{width:100px;float:left;clear:left;margin:15px 0 30px 0;padding-left:10%}input.sw-admin-input{padding:15px;border:1px solid #ced3cd;-webkit-border-radius:4px;border-radius:4px;float:right;-webkit-box-shadow:none;box-shadow:none;margin:2px 0 1px 0;width:100%}.sw-grid select{width:100%;-webkit-box-shadow:none;box-shadow:none;border:1px solid #ced3cd;height:51px;padding:15px;margin:2px 1px 3px 0;-webkit-border-radius:4px;border-radius:4px}a.button.sw-navy-button,a.button.sw-blue-button,a.button.sw-green-button,a.button.sw-red-button,.swp-button{padding:15px 30px;height:auto;line-height:1;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;float:right;margin:15px 0}a.button.sw-navy-button,a.button.sw-navy-button:focus{background:#30394f;color:#fff;border-color:#2a2d34;-webkit-box-shadow:none;box-shadow:none}a.button.sw-navy-button:hover,a.button.sw-blue-button:hover{background:#2a2d34;border-color:#2a2d34;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-blue-button,a.button.sw-blue-button:focus{background:#6bcce9;border-color:#6bcce9;color:#fff;-webkit-box-shadow:none;box-shadow:none}a.button.sw-green-button,a.button.sw-green-button:focus{background:#71C069;color:#fff;border-color:#71C069;-webkit-box-shadow:none;box-shadow:none}a.button.sw-red-button,a.button.sw-red-button:focus,a.button.sw-red-button:hover{background:#ee464f;color:#fff;border-color:#ee464f;-webkit-box-shadow:none;box-shadow:none}.sw-admin-tab a.button{margin:5px 0 15px 0}.sw-save-settings{width:100%;text-align:center}.sw-red-notice,.sw-green-notice{color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0}.sw-red-notice,.sw-loading-message{background:#ee464f}.sw-green-notice,.sw-loading-complete{background:#71C069}.sw-loading-bg{width:100%;position:fixed;top:0;left:0;height:100%;background:rgba(0,0,0,0.8);z-index:999999999999}.sw-loading-message:before,.sw-green-notice:before,.sw-loading-complete:before{font-family:'Dashicons';font-size:26px;margin:0 15px 0 0;vertical-align:middle}.sw-red-notice:before,.sw-red-notice:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E'}.sw-red-notice a{color:#fff;font-weight:bold;text-decoration:none;border-bottom:2px solid #fff}.sw-red-notice a:hover{color:#30394f;border-bottom:2px solid #30394f}.sw-loading-message:before{content:"\f158"}.sw-green-notice:before,.sw-loading-complete:before{content:"\f147"}.sw-admin-tab .two-thirds-advanced h2.sw-h-label{line-height:1.2;margin-bottom:15px}.sw-italic{font-style:italic}p.sw-subtitle.sw-registration-text{padding:20px 0 0 0;font-size:120%;line-height:175%}.registration-wrapper[registration="1"] .swp_is_not_registered{display:none}.registration-wrapper[registration="0"] .swp_is_registered{display:none}.tweet-count-wrapper[registration="true"] .swp_tweets_not_activated{display:none}.sw-tweet-count-demo{margin:20px 0}.sw-loading-message,.sw-loading-complete{position:fixed;top:50%;left:50%;-webkit-border-radius:3px;border-radius:3px;padding:25px;text-align:center;font-size:20px;color:white;width:240px;margin-top:-46px;margin-left:-120px}.sw-grid textarea{width:100%;height:120px}.sw-active,.sw-inactive{margin:0 0 5px 0;min-width:50px;min-height:40px;border:1px dashed #ced3dc;padding:0;-webkit-border-radius:4px;border-radius:4px;width:auto;height:auto;display:inline-block;max-width:520px}.sw-s{font-family:'sw-icon-font';color:#fff;padding:5px 30px 4px;margin:7px 5px 7px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;font-style:normal;font-size:15px;line-height:15px;cursor:pointer;max-width:15px}.sw-twitter-icon:before{content:'s'}.sw-s.sw-twitter-icon{background-color:#429cd6;border-color:#3c87b2}.sw-google_plus-icon:before{content:'h'}.sw-s.sw-google_plus-icon{background-color:#df4b37;border-color:#c44133}.sw-facebook-icon:before{content:'j'}.sw-s.sw-facebook-icon{background-color:#3a589e;border-color:#2e4675}.sw-pinterest-icon:before{content:'b'}.sw-s.sw-pinterest-icon{background-color:#cd2029;border-color:#aa1b29}.sw-linkedin-icon:before{content:'f'}.sw-s.sw-linkedin-icon{background-color:#0d77b7;border-color:#0c6591}.sw-tumblr-icon:before{content:'r'}.sw-s.sw-tumblr-icon{background-color:#39475d;border-color:#27313f}.sw-mix-icon:before{content:'g'}.sw-s.sw-mix-icon{background-color:#f4812c;border-color:#c96a29}.sw-reddit-icon:before{content:'a'}.sw-s.sw-reddit-icon{background-color:#f04b23;border-color:#d33f27}.sw-yummly-icon:before{content:'x'}.sw-s.sw-yummly-icon{background-color:#e26426;border-color:#b65027}.sw-whatsapp-icon:before{content:'y'}.sw-s.sw-whatsapp-icon{background-color:#71c169;border-color:#28b04b}.sw-pocket-icon:before{content:'B'}.sw-s.sw-pocket-icon{background-color:#ef4056;border-color:#ce3d55}.sw-buffer-icon:before{content:'z'}.sw-s.sw-buffer-icon{background-color:#323b43;border-color:#59626a}.sw-email-icon:before{content:'k'}.sw-s.sw-email-icon{background-color:#6bcce9;border-color:#6bcce9}.sw-hacker_news-icon:before{content:'D'}.sw-s.sw-hacker_news-icon{background-color:#f16522;border-color:#d85623}.sw-flipboard-icon:before{content:'C'}.sw-s.sw-flipboard-icon{background-color:#e02828;border-color:#bf2626}@media screen and (max-width:1350px){.sw-header-menu li{font-size:14px;margin:0 10px}}@media screen and (max-width:1080px){.sw-header-logo{display:none}}.sw-admin-wrapper[sw-registered="0"] [premium="1"]{display:none!important}.sw-admin-wrapper[sw-registered="0"] .sw-option-container{position:relative}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker{display:none}.sw-admin-wrapper[sw-registered="0"] [premium="1"] .sw-premium-blocker:not(.no-icon):before{font-family:'sw-icon-font';content:'E';font-size:24px;float:right;margin:20px 20px 0 0}.sw-admin-wrapper[sw-registered="0"] i[premium-button="1"]{display:none}.sw-admin-wrapper[sw-registered="1"] .sw-premium-buttons{display:none}.sw-admin-wrapper[swp-addons*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"] [premium]{display:none}.sw-admin-wrapper[swp-addons*="pro"][swp-registrations*="pro"] [premium],.sw-admin-wrapper[swp-addons*="affiliatewp"][swp-registrations*="affiliatewp"] [premium],.sw-admin-wrapper[swp-addons*="enhanced_shortcodes"][swp-registrations*="enhanced_shortcodes"] [premium],.sw-admin-wrapper[swp-addons*="advanced_display"][swp-registrations*="advanced_display"] [premium]{display:inherit}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}.swp_upload_image_field{display:none}.sw-admin-image-preview{max-height:50px;float:right}.toplevel_page_social-warfare .notice-error,.toplevel_page_social-warfare .notice-warning,.toplevel_page_social-warfare .notice-success,.toplevel_page_social-warfare .notice-info,.toplevel_page_social-warfare .is-dismissible,.toplevel_page_social-warfare .update-nag,.toplevel_page_social-warfare #notice-error,.toplevel_page_social-warfare #notice-warning,.toplevel_page_social-warfare #notice-success,.toplevel_page_social-warfare #notice-info,.toplevel_page_social-warfare #is-dismissible,.toplevel_page_social-warfare #update-nag,div.error{display:none}.toplevel_page_social-warfare .sw-admin-wrapper .notice-error,.toplevel_page_social-warfare .sw-admin-wrapper .notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper .notice-success,.toplevel_page_social-warfare .sw-admin-wrapper .notice-info,.toplevel_page_social-warfare .sw-admin-wrapper .is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper .update-nag,.toplevel_page_social-warfare .sw-admin-wrapper #notice-error,.toplevel_page_social-warfare .sw-admin-wrapper #notice-warning,.toplevel_page_social-warfare .sw-admin-wrapper #notice-success,.toplevel_page_social-warfare .sw-admin-wrapper #notice-info,.toplevel_page_social-warfare .sw-admin-wrapper #is-dismissible,.toplevel_page_social-warfare .sw-admin-wrapper #update-nag,div.error{display:block}.sw-grid-textarea{border:rgb(221,221,221);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);height:120px;width:97%}#color-notice{position:fixed;bottom:15px;margin:0 auto;left:25%;right:25%;background:rgba( 255,225,255,.37 );background-color:#ced3dc;color:#30394f;padding:20px;border-radius:4px;text-align:left;width:650px}#color-notice p{font-size:16px;padding:0;margin:0}#color-notice .color-dismiss{float:right;color:#fff;font-weight:600}#color-notice .color-dismiss:before{content:'x';background:#30394f;border-radius:50%;width:26px;display:block;text-align:center;height:26px;line-height:22px;font-size:22px;cursor:pointer;padding:0;opacity:.4}.swp-icon-tooltip{position:absolute;padding:10px;text-align:center;min-width:75px;background:#ced3dc;color:#fff;border-radius:3px;font-size:13px;letter-spacing:1.2px;font-family:"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.swp-authorization-button{width:200px;color:white;text-decoration:none;font-size:15px;line-height:15px}.swp-authorization-button > div{display:flex;width:100%;text-align:right;justify-content:space-between;align-items:center}.swp-authorization-button i.sw{padding-right:10px}.swp-authorization-button:hover{color:white}
assets/css/admin.css CHANGED
@@ -1,5 +1,5 @@
1
  #social_warfare.postbox {
2
- display: none;
3
  }
4
 
5
  .notAvailable {
@@ -11,7 +11,7 @@
11
  display: block;
12
  padding: 5px 15px;
13
  -webkit-border-radius: 3px 3px 0 0;
14
- border-radius: 3px 3px 0 0;
15
  color: #FFF;
16
  font-weight: bold;
17
  max-width: 200px;
@@ -35,12 +35,12 @@
35
  display: block;
36
  width: 100%;
37
  -webkit-background-size: cover;
38
- background-size: cover;
39
  background-position-x: center;
40
  background-repeat: no-repeat;
41
  background-color: #ccc;
42
  -webkit-border-radius: 4px;
43
- border-radius: 4px;
44
  padding: 0;
45
  }
46
 
@@ -64,12 +64,12 @@
64
  #social_warfare .swpmb-media-content .centered,
65
  #social_warfare .swpmb-media-content img {
66
  width: 100%;
67
- margin-bottom: -5px;
68
  height: auto;
69
  max-height: none;
70
  -webkit-transform: none;
71
- -ms-transform: none;
72
- transform: none;
73
  }
74
 
75
  .wp-core-ui #social_warfare a.swpmb-add-media.button {
@@ -83,7 +83,7 @@
83
  padding: 15px 25px;
84
  margin: 0;
85
  -webkit-box-shadow: none;
86
- box-shadow: none;
87
  border: none;
88
  height: auto;
89
  }
@@ -142,11 +142,11 @@
142
  color: #fff;
143
  padding: 15px;
144
  -webkit-border-radius: 2px;
145
- border-radius: 2px;
146
  margin: 15px 0;
147
  border: 0;
148
  -webkit-box-shadow: none;
149
- box-shadow: none;
150
  max-width: none;
151
  padding: 20px;
152
  }
@@ -164,47 +164,47 @@
164
  /* Adds the border between sections. */
165
  [class$=title_wrapper] ~ [class$=title_wrapper] {
166
  border-top: 1px solid #CED3DC;
167
- padding-top: 40px;
168
  }
169
 
170
  .swp-notice-wrapper {
171
- max-width: 73%;
172
- margin-top: -15px;
173
- margin-bottom: 15px;
174
  }
175
 
176
  .swp-notice {
177
- padding: 10px 15px;
178
- padding: 20px;
179
  }
180
 
181
  .swp-actions {
182
- display: flex;
183
- align-items: center;
184
  }
185
 
186
  .swp-notice a {
187
- cursor: hover;
188
- text-decoration: underline;
189
- margin: 0 10px;
190
  }
191
 
192
  .swp-dismiss-notice.notice.notice-info {
193
- font-size: 15px;
194
- line-height: 25px;
195
  }
196
 
197
  .swp-dismiss-notice.notice.notice-info {
198
- border-left-color: #D34250;
199
- padding: 20px;
200
- margin: 15px 0 15px;
201
  }
202
 
203
  .swp-dismiss-notice.notice.notice-info p {
204
- font-size: 15px;
205
- line-height: 25px;
206
- padding: 0;
207
- margin: 0 0 20px;
208
  }
209
 
210
  a.swp-notice-cta {
@@ -215,54 +215,58 @@ a.swp-notice-cta {
215
  margin-right: 50px;
216
  }
217
 
 
 
 
 
218
  #swp-admin-sidebar .swp-component.dark-text {
219
- color: #333;
220
  }
221
 
222
  #swp-admin-sidebar .swp-component.light-text {
223
- color: #eee;
224
  }
225
 
226
  #swp-admin-sidebar .swp-component {
227
- font-size: 13px;
228
- padding: 20px;
229
- margin: 20px;
230
- border-radius: 8px;
231
  }
232
 
233
  #swp-admin-sidebar .swp-component.text-center {
234
- text-align: center;
235
  }
236
 
237
  #swp-admin-sidebar .swp-component-cta {
238
- margin: 0 auto;
239
- display: block;
240
- padding: 10px 15px;
241
- border: 0;
242
- border-radius: 4px;
243
- text-align: center;
244
- text-decoration: none;
245
- color: white;
246
- text-transform: uppercase;
247
- letter-spacing: 2px;
248
- font-weight: bold;
249
- cursor: pointer;
250
- width: 90%;
251
  }
252
 
253
  #swp-admin-sidebar button.swp-component-cta {
254
- width: 100%;
255
  }
256
 
257
  #swp-admin-sidebar .swp-component-icon {
258
- text-align: center;
259
  }
260
 
261
 
262
  #swp-admin-sidebar .swp-component .swp-component-title {
263
- font-size: 26px;
264
- text-align: center;
265
- font-weight: bold;
266
  }
267
 
268
  /*********************************************************
@@ -279,7 +283,7 @@ a.swp-notice-cta {
279
  margin: 5px 0;
280
  cursor: pointer;
281
  -webkit-border-radius: 4px;
282
- border-radius: 4px;
283
  overflow: hidden;
284
  position: relative;
285
  }
@@ -325,11 +329,11 @@ a.swp-notice-cta {
325
  */
326
 
327
  .swpmb-heading-wrapper h1 {
328
- font-weight: bold;
329
  }
330
 
331
  .swpmb-meta-box {
332
- margin: 25px 30px;
333
  }
334
 
335
  .swpmb-meta-container {
@@ -414,7 +418,7 @@ a.swp-notice-cta {
414
 
415
  .swpmb-field.inline-select .swpmb-input {
416
  margin-top: 0;
417
- display: inline;
418
  float: right;
419
  border-radius: 5px;
420
  }
@@ -425,7 +429,7 @@ a.swp-notice-cta {
425
 
426
  /* Give the "Other" options more space around them. */
427
  .swpmb-field.other {
428
- margin: 15px 0;
429
  }
430
 
431
  #social_warfare .sw-checkbox-toggle {
1
  #social_warfare.postbox {
2
+ display: none;
3
  }
4
 
5
  .notAvailable {
11
  display: block;
12
  padding: 5px 15px;
13
  -webkit-border-radius: 3px 3px 0 0;
14
+ border-radius: 3px 3px 0 0;
15
  color: #FFF;
16
  font-weight: bold;
17
  max-width: 200px;
35
  display: block;
36
  width: 100%;
37
  -webkit-background-size: cover;
38
+ background-size: cover;
39
  background-position-x: center;
40
  background-repeat: no-repeat;
41
  background-color: #ccc;
42
  -webkit-border-radius: 4px;
43
+ border-radius: 4px;
44
  padding: 0;
45
  }
46
 
64
  #social_warfare .swpmb-media-content .centered,
65
  #social_warfare .swpmb-media-content img {
66
  width: 100%;
67
+ margin-bottom: -5px;
68
  height: auto;
69
  max-height: none;
70
  -webkit-transform: none;
71
+ -ms-transform: none;
72
+ transform: none;
73
  }
74
 
75
  .wp-core-ui #social_warfare a.swpmb-add-media.button {
83
  padding: 15px 25px;
84
  margin: 0;
85
  -webkit-box-shadow: none;
86
+ box-shadow: none;
87
  border: none;
88
  height: auto;
89
  }
142
  color: #fff;
143
  padding: 15px;
144
  -webkit-border-radius: 2px;
145
+ border-radius: 2px;
146
  margin: 15px 0;
147
  border: 0;
148
  -webkit-box-shadow: none;
149
+ box-shadow: none;
150
  max-width: none;
151
  padding: 20px;
152
  }
164
  /* Adds the border between sections. */
165
  [class$=title_wrapper] ~ [class$=title_wrapper] {
166
  border-top: 1px solid #CED3DC;
167
+ padding-top: 40px;
168
  }
169
 
170
  .swp-notice-wrapper {
171
+ max-width: 73%;
172
+ margin-top: -15px;
173
+ margin-bottom: 15px;
174
  }
175
 
176
  .swp-notice {
177
+ padding: 10px 15px;
178
+ padding: 20px;
179
  }
180
 
181
  .swp-actions {
182
+ display: flex;
183
+ align-items: center;
184
  }
185
 
186
  .swp-notice a {
187
+ cursor: hover;
188
+ text-decoration: underline;
189
+ margin: 0 10px;
190
  }
191
 
192
  .swp-dismiss-notice.notice.notice-info {
193
+ font-size: 15px;
194
+ line-height: 25px;
195
  }
196
 
197
  .swp-dismiss-notice.notice.notice-info {
198
+ border-left-color: #D34250;
199
+ padding: 20px;
200
+ margin: 15px 0 15px;
201
  }
202
 
203
  .swp-dismiss-notice.notice.notice-info p {
204
+ font-size: 15px;
205
+ line-height: 25px;
206
+ padding: 0;
207
+ margin: 0 0 20px;
208
  }
209
 
210
  a.swp-notice-cta {
215
  margin-right: 50px;
216
  }
217
 
218
+ #swp-admin-sidebar {
219
+ margin-top:-20px;
220
+ }
221
+
222
  #swp-admin-sidebar .swp-component.dark-text {
223
+ color: #333;
224
  }
225
 
226
  #swp-admin-sidebar .swp-component.light-text {
227
+ color: #eee;
228
  }
229
 
230
  #swp-admin-sidebar .swp-component {
231
+ font-size: 13px;
232
+ padding: 20px;
233
+ margin: 20px 0;
234
+ border-radius: 8px;
235
  }
236
 
237
  #swp-admin-sidebar .swp-component.text-center {
238
+ text-align: center;
239
  }
240
 
241
  #swp-admin-sidebar .swp-component-cta {
242
+ margin: 0 auto;
243
+ display: block;
244
+ padding: 10px 15px;
245
+ border: 0;
246
+ border-radius: 4px;
247
+ text-align: center;
248
+ text-decoration: none;
249
+ color: white;
250
+ text-transform: uppercase;
251
+ letter-spacing: 2px;
252
+ font-weight: bold;
253
+ cursor: pointer;
254
+ width: 90%;
255
  }
256
 
257
  #swp-admin-sidebar button.swp-component-cta {
258
+ width: 100%;
259
  }
260
 
261
  #swp-admin-sidebar .swp-component-icon {
262
+ text-align: center;
263
  }
264
 
265
 
266
  #swp-admin-sidebar .swp-component .swp-component-title {
267
+ font-size: 26px;
268
+ text-align: center;
269
+ font-weight: bold;
270
  }
271
 
272
  /*********************************************************
283
  margin: 5px 0;
284
  cursor: pointer;
285
  -webkit-border-radius: 4px;
286
+ border-radius: 4px;
287
  overflow: hidden;
288
  position: relative;
289
  }
329
  */
330
 
331
  .swpmb-heading-wrapper h1 {
332
+ font-weight: bold;
333
  }
334
 
335
  .swpmb-meta-box {
336
+ margin: 25px 30px;
337
  }
338
 
339
  .swpmb-meta-container {
418
 
419
  .swpmb-field.inline-select .swpmb-input {
420
  margin-top: 0;
421
+ display: inline;
422
  float: right;
423
  border-radius: 5px;
424
  }
429
 
430
  /* Give the "Other" options more space around them. */
431
  .swpmb-field.other {
432
+ margin: 15px 0;
433
  }
434
 
435
  #social_warfare .sw-checkbox-toggle {
assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- #social_warfare.postbox{display:none}.notAvailable{opacity:0.3}.swp_CountDown{background-color:#CCC;display:block;padding:5px 15px;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;color:#FFF;font-weight:bold;max-width:200px;float:right;font-size:12px}.swp_CountDown.swp_blue{background-color:#30394F}.swp_CountDown.swp_red{background-color:#EE464F}#social_warfare textarea.large-text{width:100%}#social_warfare ul.swpmb-media-list.ui-sortable{display:block;width:100%;-webkit-background-size:cover;background-size:cover;background-position-x:center;background-repeat:no-repeat;background-color:#ccc;-webkit-border-radius:4px;border-radius:4px;padding:0}#social_warfare .open-graph ul.swpmb-media-list,#social_warfare .twitter ul.swpmb-media-list{background-image:url('../images/img-placeholder-og.jpg')}#social_warfare .pinterest ul.swpmb-media-list{background-image:url('../images/img-placeholder-pin.jpg')}#social_warfare .swpmb-field{margin-top:10px;position:relative}#social_warfare .swpmb-image-item,#social_warfare .swpmb-media-preview,#social_warfare .swpmb-media-content .centered,#social_warfare .swpmb-media-content img{width:100%;margin-bottom:-5px;height:auto;max-height:none;-webkit-transform:none;-ms-transform:none;transform:none}.wp-core-ui #social_warfare a.swpmb-add-media.button{display:block;background:#30394f;color:#fff;font-size:12px;line-height:1;text-align:center;vertical-align:middle;padding:15px 25px;margin:0;-webkit-box-shadow:none;box-shadow:none;border:none;height:auto}.wp-core-ui #social_warfare a.swpmb-add-media.button:hover{background:#EE464F}#social_warfare .swpmb-media-content img{-webkit-transform:translate(0%,0%);-ms-transform:translate(0%,0%);transform:translate(0%,0%)}#social_warfare .swpmb-media-content{overflow:visible}#social_warfare .swpmb-media-preview:before{padding-top:0}#social_warfare .swpmb-media-content{position:inherit}#social_warfare .swpmb-divider-wrapper hr{border:none!important}#social_warfare .swpmb-label label{font-weight:bold;color:#30394f;font-size:18px}#social_warfare .swpmb-divider-wrapper{max-height:1px;clear:both}#social_warfare .swpmb-label{margin-bottom:10px;display:inline}#social_warfare h2.hndle span:before{content:'p';margin-right:10px;font-family:"sw-icon-font";vertical-align:middle}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}[class$=title_wrapper] ~ [class$=title_wrapper]{border-top:1px solid #CED3DC;padding-top:40px}.swp-notice-wrapper{max-width:73%;margin-top:-15px;margin-bottom:15px}.swp-notice{padding:10px 15px;padding:20px}.swp-actions{display:flex;align-items:center}.swp-notice a{cursor:hover;text-decoration:underline;margin:0 10px}.swp-dismiss-notice.notice.notice-info{font-size:15px;line-height:25px}.swp-dismiss-notice.notice.notice-info{border-left-color:#D34250;padding:20px;margin:15px 0 15px}.swp-dismiss-notice.notice.notice-info p{font-size:15px;line-height:25px;padding:0;margin:0 0 20px}a.swp-notice-cta{cursor:pointer;text-decoration:underline;font-size:15px;line-height:30px;margin-right:50px}#swp-admin-sidebar .swp-component.dark-text{color:#333}#swp-admin-sidebar .swp-component.light-text{color:#eee}#swp-admin-sidebar .swp-component{font-size:13px;padding:20px;margin:20px;border-radius:8px}#swp-admin-sidebar .swp-component.text-center{text-align:center}#swp-admin-sidebar .swp-component-cta{margin:0 auto;display:block;padding:10px 15px;border:0;border-radius:4px;text-align:center;text-decoration:none;color:white;text-transform:uppercase;letter-spacing:2px;font-weight:bold;cursor:pointer;width:90%}#swp-admin-sidebar button.swp-component-cta{width:100%}#swp-admin-sidebar .swp-component-icon{text-align:center}#swp-admin-sidebar .swp-component .swp-component-title{font-size:26px;text-align:center;font-weight:bold}.sw-checkbox-toggle{width:150px;height:46px;background-color:#30394f;float:right;margin:5px 0;cursor:pointer;-webkit-border-radius:4px;border-radius:4px;overflow:hidden;position:relative}.sw-checkbox-on,.sw-checkbox-off{color:white;font-size:15px;text-align:center;line-height:46px;position:absolute;top:0;width:50%;height:100%}.sw-checkbox-toggle[status="on"] .sw-checkbox-on{left:0;background-color:#71C069}.sw-checkbox-toggle[status="on"] .sw-checkbox-off,.sw-checkbox-toggle[status="off"] .sw-checkbox-on{display:none}.sw-admin-wrapper[sw-registered="0"] .sw-option-container[premium="1"] .sw-checkbox-toggle[status="on"] .sw-checkbox-on{display:none}.sw-admin-wrapper[sw-registered="0"] .sw-option-container[premium="1"] .sw-checkbox-toggle[status="on"] .sw-checkbox-off{right:0;background-color:#ee464f;display:block}.sw-checkbox-toggle[status="off"] .sw-checkbox-off{right:0;background-color:#ee464f}.swpmb-heading-wrapper h1{font-weight:bold}.swpmb-meta-box{margin:25px 30px}.swpmb-meta-container{display:flex;flex-flow:row wrap;margin:25px 0}.swpmb-flex{display:flex;flex-flow:column nowrap}.swpmb-full-width-wrap{order:1;width:96.5%}.swpmb-left-wrap,.swpmb-right-wrap{order:2}@media screen and (max-width:767px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:40%}}@media screen and (max-width:996px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:44%}}@media screen and (min-width:997px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:47%}}.swpmb-left-wrap{margin-right:30px}.swpmb-right-wrap{align-content:last baseline}.swpmb-left,.swpmb-right{}.swpmb-input{margin-top:10px}.swpmb-input textarea{width:100%;resize:unset;border-radius:5px;padding:10px;min-height:120px}.swpmb-field.inline-select .swpmb-input{margin-top:0;display:inline;float:right;border-radius:5px}.swpmb-field .swpmb-label{margin-bottom:none}.swpmb-field.other{margin:15px 0}#social_warfare .sw-checkbox-toggle{width:84px;height:32px}#social_warfare .sw-checkbox-on,#social_warfare .sw-checkbox-off{font-size:12px;line-height:32px}#social_warfare p.description{padding:15px 0}.wp-core-ui #social_warfare a.swpmb-add-media.button{margin:15px 0}
1
+ #social_warfare.postbox{display:none}.notAvailable{opacity:0.3}.swp_CountDown{background-color:#CCC;display:block;padding:5px 15px;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;color:#FFF;font-weight:bold;max-width:200px;float:right;font-size:12px}.swp_CountDown.swp_blue{background-color:#30394F}.swp_CountDown.swp_red{background-color:#EE464F}#social_warfare textarea.large-text{width:100%}#social_warfare ul.swpmb-media-list.ui-sortable{display:block;width:100%;-webkit-background-size:cover;background-size:cover;background-position-x:center;background-repeat:no-repeat;background-color:#ccc;-webkit-border-radius:4px;border-radius:4px;padding:0}#social_warfare .open-graph ul.swpmb-media-list,#social_warfare .twitter ul.swpmb-media-list{background-image:url('../images/img-placeholder-og.jpg')}#social_warfare .pinterest ul.swpmb-media-list{background-image:url('../images/img-placeholder-pin.jpg')}#social_warfare .swpmb-field{margin-top:10px;position:relative}#social_warfare .swpmb-image-item,#social_warfare .swpmb-media-preview,#social_warfare .swpmb-media-content .centered,#social_warfare .swpmb-media-content img{width:100%;margin-bottom:-5px;height:auto;max-height:none;-webkit-transform:none;-ms-transform:none;transform:none}.wp-core-ui #social_warfare a.swpmb-add-media.button{display:block;background:#30394f;color:#fff;font-size:12px;line-height:1;text-align:center;vertical-align:middle;padding:15px 25px;margin:0;-webkit-box-shadow:none;box-shadow:none;border:none;height:auto}.wp-core-ui #social_warfare a.swpmb-add-media.button:hover{background:#EE464F}#social_warfare .swpmb-media-content img{-webkit-transform:translate(0%,0%);-ms-transform:translate(0%,0%);transform:translate(0%,0%)}#social_warfare .swpmb-media-content{overflow:visible}#social_warfare .swpmb-media-preview:before{padding-top:0}#social_warfare .swpmb-media-content{position:inherit}#social_warfare .swpmb-divider-wrapper hr{border:none!important}#social_warfare .swpmb-label label{font-weight:bold;color:#30394f;font-size:18px}#social_warfare .swpmb-divider-wrapper{max-height:1px;clear:both}#social_warfare .swpmb-label{margin-bottom:10px;display:inline}#social_warfare h2.hndle span:before{content:'p';margin-right:10px;font-family:"sw-icon-font";vertical-align:middle}.ui-tooltip.sw-admin-hover-notice{background:#ee464f;color:#fff;padding:15px;-webkit-border-radius:2px;border-radius:2px;margin:15px 0;border:0;-webkit-box-shadow:none;box-shadow:none;max-width:none;padding:20px}.sw-admin-hover-notice i:before{font-family:'sw-icon-font';font-size:26px;margin:0 15px 0 0;vertical-align:middle;content:'E';float:left;font-style:normal}[class$=title_wrapper] ~ [class$=title_wrapper]{border-top:1px solid #CED3DC;padding-top:40px}.swp-notice-wrapper{max-width:73%;margin-top:-15px;margin-bottom:15px}.swp-notice{padding:10px 15px;padding:20px}.swp-actions{display:flex;align-items:center}.swp-notice a{cursor:hover;text-decoration:underline;margin:0 10px}.swp-dismiss-notice.notice.notice-info{font-size:15px;line-height:25px}.swp-dismiss-notice.notice.notice-info{border-left-color:#D34250;padding:20px;margin:15px 0 15px}.swp-dismiss-notice.notice.notice-info p{font-size:15px;line-height:25px;padding:0;margin:0 0 20px}a.swp-notice-cta{cursor:pointer;text-decoration:underline;font-size:15px;line-height:30px;margin-right:50px}#swp-admin-sidebar{margin-top:-20px}#swp-admin-sidebar .swp-component.dark-text{color:#333}#swp-admin-sidebar .swp-component.light-text{color:#eee}#swp-admin-sidebar .swp-component{font-size:13px;padding:20px;margin:20px 0;border-radius:8px}#swp-admin-sidebar .swp-component.text-center{text-align:center}#swp-admin-sidebar .swp-component-cta{margin:0 auto;display:block;padding:10px 15px;border:0;border-radius:4px;text-align:center;text-decoration:none;color:white;text-transform:uppercase;letter-spacing:2px;font-weight:bold;cursor:pointer;width:90%}#swp-admin-sidebar button.swp-component-cta{width:100%}#swp-admin-sidebar .swp-component-icon{text-align:center}#swp-admin-sidebar .swp-component .swp-component-title{font-size:26px;text-align:center;font-weight:bold}.sw-checkbox-toggle{width:150px;height:46px;background-color:#30394f;float:right;margin:5px 0;cursor:pointer;-webkit-border-radius:4px;border-radius:4px;overflow:hidden;position:relative}.sw-checkbox-on,.sw-checkbox-off{color:white;font-size:15px;text-align:center;line-height:46px;position:absolute;top:0;width:50%;height:100%}.sw-checkbox-toggle[status="on"] .sw-checkbox-on{left:0;background-color:#71C069}.sw-checkbox-toggle[status="on"] .sw-checkbox-off,.sw-checkbox-toggle[status="off"] .sw-checkbox-on{display:none}.sw-admin-wrapper[sw-registered="0"] .sw-option-container[premium="1"] .sw-checkbox-toggle[status="on"] .sw-checkbox-on{display:none}.sw-admin-wrapper[sw-registered="0"] .sw-option-container[premium="1"] .sw-checkbox-toggle[status="on"] .sw-checkbox-off{right:0;background-color:#ee464f;display:block}.sw-checkbox-toggle[status="off"] .sw-checkbox-off{right:0;background-color:#ee464f}.swpmb-heading-wrapper h1{font-weight:bold}.swpmb-meta-box{margin:25px 30px}.swpmb-meta-container{display:flex;flex-flow:row wrap;margin:25px 0}.swpmb-flex{display:flex;flex-flow:column nowrap}.swpmb-full-width-wrap{order:1;width:96.5%}.swpmb-left-wrap,.swpmb-right-wrap{order:2}@media screen and (max-width:767px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:40%}}@media screen and (max-width:996px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:44%}}@media screen and (min-width:997px){.swpmb-left-wrap,.swpmb-right-wrap{flex-basis:47%}}.swpmb-left-wrap{margin-right:30px}.swpmb-right-wrap{align-content:last baseline}.swpmb-left,.swpmb-right{}.swpmb-input{margin-top:10px}.swpmb-input textarea{width:100%;resize:unset;border-radius:5px;padding:10px;min-height:120px}.swpmb-field.inline-select .swpmb-input{margin-top:0;display:inline;float:right;border-radius:5px}.swpmb-field .swpmb-label{margin-bottom:none}.swpmb-field.other{margin:15px 0}#social_warfare .sw-checkbox-toggle{width:84px;height:32px}#social_warfare .sw-checkbox-on,#social_warfare .sw-checkbox-off{font-size:12px;line-height:32px}#social_warfare p.description{padding:15px 0}.wp-core-ui #social_warfare a.swpmb-add-media.button{margin:15px 0}
assets/css/converted_style.tmp.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sourceRoot":"","sources":["style.scss"],"names":[],"mappings":"AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAOD;EACC;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;;AAGD;EACC","file":"converted_style.tmp"}
assets/css/style.css CHANGED
@@ -1,9 +1,9 @@
1
  @media print {
2
- .swp_social_panel {
3
- display: none;
4
- opacity: 0;
5
- visibility: collapse;
6
- }
7
  }
8
 
9
  /* For non-English sites */
@@ -43,11 +43,11 @@ html[lang] .site * i.sw {
43
  }
44
 
45
  @media print {
46
- .swp_social_panel {
47
- display: none;
48
- opacity: 0;
49
- visibility: collapse;
50
- }
51
  }
52
 
53
  .swp_social_panel:not(.nc_floater):not(.swp_social_panelSide) {
@@ -109,7 +109,7 @@ div.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer {
109
  }
110
 
111
  .swp_social_panel:not(.nc_floater):not(.swp_social_panelSide).swp_shift {
112
- padding:0 10px;
113
  }
114
 
115
  .swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-child(1) {
@@ -241,8 +241,8 @@ span.spaceManWilly {
241
  }
242
 
243
  .swp_social_panel .total_sharesalt {
244
- background: transparent !important;
245
- border: none !important;
246
  }
247
 
248
  .swp_social_panel div.total_shares.total_sharesalt,
@@ -251,7 +251,7 @@ span.spaceManWilly {
251
  border: none;
252
  color: #474b4d;
253
  margin-left: 0!important;
254
- margin-bottom: 10px !important;
255
  }
256
 
257
  div.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)) {
@@ -365,7 +365,7 @@ body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_twitter:no
365
  .swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_facebook,
366
  html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_facebook:hover,
367
  body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_facebook:not(:hover) {
368
- border: 1px solid #3a589e;
369
  }
370
 
371
  .swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pinterest,
@@ -457,7 +457,7 @@ body .swp_social_panel.swp_other_full_color:hover .swp_twitter {
457
  .swp_social_panel.swp_default_full_color .swp_facebook,
458
  html body .swp_social_panel.swp_individual_full_color .swp_facebook:hover,
459
  body .swp_social_panel.swp_other_full_color:hover .swp_facebook {
460
- background: #3a589e;
461
  border: 1px solid #2e4675;
462
  }
463
 
@@ -722,7 +722,7 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_google_plus a {
722
  .swp_social_panel.swp_default_color_outlines .swp_facebook a,
723
  html body .swp_social_panel.swp_individual_color_outlines .swp_facebook a:hover,
724
  body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook a {
725
- color: #3a589e;
726
  }
727
 
728
  .swp_social_panel.swp_default_color_outlines .swp_pinterest a,
@@ -815,7 +815,7 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_twitter {
815
  html body .swp_social_panel.swp_individual_color_outlines .swp_facebook:hover,
816
  body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook {
817
  background: transparent;
818
- border: 1px solid #3a589e;
819
  }
820
 
821
  .swp_social_panel.swp_default_color_outlines .swp_pinterest,
@@ -911,8 +911,8 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard {
911
  transition: all 0.2s linear;
912
 
913
  z-index: 9998;
914
- margin: 10px 5px !important;
915
- padding: 0;
916
 
917
  -webkit-box-direction: normal;
918
  -moz-box-direction: normal;
@@ -938,10 +938,10 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard {
938
  }
939
 
940
  .swp_social_panelSide[class*=swp_side] {
941
- height: auto;
942
- display: flex;
943
- position: fixed;
944
- padding: 30px 0;
945
  }
946
 
947
  .swp_social_panelSide.fade {
@@ -949,15 +949,15 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard {
949
  }
950
 
951
  .swp_social_panelSide.swp_float_right {
952
- align-content: flex-end;
953
  }
954
 
955
  .swp_social_panelSide.swp_side_top {
956
- top: 15px;
957
  }
958
 
959
  .swp_social_panelSide.swp_side_bottom {
960
- bottom: 15px;
961
  }
962
 
963
  .swp_social_panelSide.swp_side_center {
@@ -1045,14 +1045,14 @@ body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard {
1045
 
1046
  .swp_social_panelSide.swp_boxed .nc_tweetContainer, .swp_social_panelSide.swp_circles .nc_tweetContainer {
1047
  margin-bottom: 5px;
1048
- width: 67.5px !important;
1049
  }
1050
 
1051
  .swp_social_panelSide.swp_boxed .nc_tweetContainer,
1052
  .swp_social_panelSide.swp_boxed .nc_tweetContainer a,
1053
  .swp_social_panelSide.swp_circles .nc_tweetContainer,
1054
  .swp_social_panelSide.swp_circles .nc_tweetContainer a {
1055
- width: 67.5px;
1056
  height: 67.5px !important;
1057
  position: relative;
1058
  }
@@ -1335,6 +1335,39 @@ i.swp_flipboard_icon:before {
1335
  content: "C";
1336
  }
1337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1338
  .sw-social-warfare:before {
1339
  content: "p";
1340
  }
@@ -1845,7 +1878,7 @@ div.swp_social_panel .nc_tweetContainer.swp_emphasize {
1845
  position: absolute;
1846
  top: 0;
1847
  width: 0;
1848
- z-index: -10;
1849
  }
1850
  .fl-module-content .uabb-blog-posts .uabb-post-thumbnail .sw-pinit.lazyloaded {
1851
  display: block !important;
@@ -1857,33 +1890,277 @@ div.swp_social_panel .nc_tweetContainer.swp_emphasize {
1857
  }
1858
 
1859
  .float-position-top-left {
1860
- transform-origin: top left;
1861
  }
1862
 
1863
  .float-position-center-left {
1864
- transform-origin: center left;
1865
  }
1866
 
1867
  .float-position-bottom-left {
1868
- transform-origin: bottom left;
1869
  }
1870
 
1871
  .float-position-top-right {
1872
- transform-origin: top right;
1873
  }
1874
 
1875
  .float-position-center-right {
1876
- transform-origin: center right;
1877
  }
1878
 
1879
  .float-position-bottom-right {
1880
- transform-origin: bottom right;
1881
  }
1882
 
1883
  div[class*=custom_color][class^=_wrapper] {
1884
- display: none;
1885
  }
1886
 
1887
  .swp-pinterest-image-top {
1888
- margin-bottom: 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1889
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  @media print {
2
+ .swp_social_panel {
3
+ display: none;
4
+ opacity: 0;
5
+ visibility: collapse;
6
+ }
7
  }
8
 
9
  /* For non-English sites */
43
  }
44
 
45
  @media print {
46
+ .swp_social_panel {
47
+ display: none;
48
+ opacity: 0;
49
+ visibility: collapse;
50
+ }
51
  }
52
 
53
  .swp_social_panel:not(.nc_floater):not(.swp_social_panelSide) {
109
  }
110
 
111
  .swp_social_panel:not(.nc_floater):not(.swp_social_panelSide).swp_shift {
112
+ padding:0 10px;
113
  }
114
 
115
  .swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-child(1) {
241
  }
242
 
243
  .swp_social_panel .total_sharesalt {
244
+ background: transparent !important;
245
+ border: none !important;
246
  }
247
 
248
  .swp_social_panel div.total_shares.total_sharesalt,
251
  border: none;
252
  color: #474b4d;
253
  margin-left: 0!important;
254
+ margin-bottom: 10px !important;
255
  }
256
 
257
  div.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)) {
365
  .swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_facebook,
366
  html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_facebook:hover,
367
  body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_facebook:not(:hover) {
368
+ border: 1px solid #4267B2;
369
  }
370
 
371
  .swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pinterest,
457
  .swp_social_panel.swp_default_full_color .swp_facebook,
458
  html body .swp_social_panel.swp_individual_full_color .swp_facebook:hover,
459
  body .swp_social_panel.swp_other_full_color:hover .swp_facebook {
460
+ background: #4267B2;
461
  border: 1px solid #2e4675;
462
  }
463
 
722
  .swp_social_panel.swp_default_color_outlines .swp_facebook a,
723
  html body .swp_social_panel.swp_individual_color_outlines .swp_facebook a:hover,
724
  body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook a {
725
+ color: #4267B2;
726
  }
727
 
728
  .swp_social_panel.swp_default_color_outlines .swp_pinterest a,
815
  html body .swp_social_panel.swp_individual_color_outlines .swp_facebook:hover,
816
  body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook {
817
  background: transparent;
818
+ border: 1px solid #4267B2;
819
  }
820
 
821
  .swp_social_panel.swp_default_color_outlines .swp_pinterest,
911
  transition: all 0.2s linear;
912
 
913
  z-index: 9998;
914
+ margin: 10px 5px !important;
915
+ padding: 0;
916
 
917
  -webkit-box-direction: normal;
918
  -moz-box-direction: normal;
938
  }
939
 
940
  .swp_social_panelSide[class*=swp_side] {
941
+ height: auto;
942
+ display: flex;
943
+ position: fixed;
944
+ padding: 30px 0;
945
  }
946
 
947
  .swp_social_panelSide.fade {
949
  }
950
 
951
  .swp_social_panelSide.swp_float_right {
952
+ align-content: flex-end;
953
  }
954
 
955
  .swp_social_panelSide.swp_side_top {
956
+ top: 15px;
957
  }
958
 
959
  .swp_social_panelSide.swp_side_bottom {
960
+ bottom: 15px;
961
  }
962
 
963
  .swp_social_panelSide.swp_side_center {
1045
 
1046
  .swp_social_panelSide.swp_boxed .nc_tweetContainer, .swp_social_panelSide.swp_circles .nc_tweetContainer {
1047
  margin-bottom: 5px;
1048
+ width: 67.5px !important;
1049
  }
1050
 
1051
  .swp_social_panelSide.swp_boxed .nc_tweetContainer,
1052
  .swp_social_panelSide.swp_boxed .nc_tweetContainer a,
1053
  .swp_social_panelSide.swp_circles .nc_tweetContainer,
1054
  .swp_social_panelSide.swp_circles .nc_tweetContainer a {
1055
+ width: 67.5px;
1056
  height: 67.5px !important;
1057
  position: relative;
1058
  }
1335
  content: "C";
1336
  }
1337
 
1338
+ i.swp_vimeo_icon:before {
1339
+ content: "t";
1340
+ }
1341
+
1342
+ i.swp_instagram_icon:before {
1343
+ content: "d";
1344
+ }
1345
+
1346
+ i.swp_blogger_icon:before {
1347
+ content: "m";
1348
+ }
1349
+
1350
+ i.swp_medium_icon:before {
1351
+ content: "e";
1352
+ }
1353
+
1354
+ i.swp_periscope_icon:before {
1355
+ content: "c";
1356
+ }
1357
+
1358
+ i.swp_snapchat_icon:before {
1359
+ content: "u";
1360
+ }
1361
+
1362
+ i.swp_ello_icon:before {
1363
+ content: "l";
1364
+ }
1365
+
1366
+ i.swp_flickr_icon:before {
1367
+ content: "i";
1368
+ }
1369
+
1370
+
1371
  .sw-social-warfare:before {
1372
  content: "p";
1373
  }
1878
  position: absolute;
1879
  top: 0;
1880
  width: 0;
1881
+ z-index: -10;
1882
  }
1883
  .fl-module-content .uabb-blog-posts .uabb-post-thumbnail .sw-pinit.lazyloaded {
1884
  display: block !important;
1890
  }
1891
 
1892
  .float-position-top-left {
1893
+ transform-origin: top left;
1894
  }
1895
 
1896
  .float-position-center-left {
1897
+ transform-origin: center left;
1898
  }
1899
 
1900
  .float-position-bottom-left {
1901
+ transform-origin: bottom left;
1902
  }
1903
 
1904
  .float-position-top-right {
1905
+ transform-origin: top right;
1906
  }
1907
 
1908
  .float-position-center-right {
1909
+ transform-origin: center right;
1910
  }
1911
 
1912
  .float-position-bottom-right {
1913
+ transform-origin: bottom right;
1914
  }
1915
 
1916
  div[class*=custom_color][class^=_wrapper] {
1917
+ display: none;
1918
  }
1919
 
1920
  .swp-pinterest-image-top {
1921
+ margin-bottom: 20px;
1922
+ }
1923
+ .swp_modern, .swp_dark {
1924
+ background: #fff;
1925
+ height: 62px;
1926
+ padding: 0;
1927
+ border-radius: 8px;
1928
+ border: 1px solid #eee;
1929
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.01), 0 4px 5px 0 rgba(0, 0, 0, 0.014), 0 4px 15px 0 rgba(0, 0, 0, 0.09);
1930
+ }
1931
+ .swp_modern .swp_share_button, .swp_dark .swp_share_button {
1932
+ border: none !important;
1933
+ border-radius: 0 !important;
1934
+ margin: 0 !important;
1935
+ height: 60px !important;
1936
+ padding-bottom: 1px;
1937
+ }
1938
+ .swp_modern .swp_share_button.total_shares.total_sharesalt, .swp_dark .swp_share_button.total_shares.total_sharesalt {
1939
+ padding: 15px !important;
1940
+ }
1941
+ .swp_modern .swp_share_link, .swp_dark .swp_share_link {
1942
+ border-radius: 0;
1943
+ padding: 15px;
1944
+ height: 60px !important;
1945
+ }
1946
+ .swp_modern .iconFiller, .swp_dark .iconFiller {
1947
+ margin-bottom: 10px !important;
1948
+ }
1949
+ .swp_modern .nc_wrapper.bottom, .swp_dark .nc_wrapper.bottom {
1950
+ background: transparent !important;
1951
+ }
1952
+
1953
+ .swp_dark .swp_share_button {
1954
+ background: #222 !important;
1955
+ border-color: #222 !important;
1956
+ margin: 0 !important;
1957
+ height: 62px !important;
1958
+ }
1959
+ .swp_dark .total_shares.total_sharesalt,
1960
+ .swp_dark .swp_count,
1961
+ .swp_dark .swp_label {
1962
+ }
1963
+ .swp_dark .swp_share_link:hover {
1964
+ background: #444;
1965
+ }
1966
+
1967
+ /* Network-specific styles
1968
+ ------------------------------- */
1969
+ .swp-blogger {
1970
+ background: #f57d00;
1971
+ border-color: #fefefe;
1972
+ }
1973
+
1974
+ .swp-blogger a {
1975
+ color: #f57d00;
1976
+ }
1977
+
1978
+ .swp-blogger a:hover {
1979
+ background: #f57d00;
1980
+ color: #fff;
1981
+ }
1982
+
1983
+ .swp-ello {
1984
+ background: #000;
1985
+ border-color: #fff;
1986
+ }
1987
+
1988
+ .swp-ello a {
1989
+ color: #000;
1990
+ }
1991
+
1992
+ .swp-facebook a:hover {
1993
+ background: #fff;
1994
+ color: #000;
1995
+ }
1996
+
1997
+ .swp-facebook {
1998
+ background: #4267B2;
1999
+ border-color: #324E85;
2000
+ }
2001
+
2002
+ .swp-facebook a {
2003
+ color: #4267B2;
2004
+ }
2005
+
2006
+ .swp-facebook a:hover {
2007
+ background: #324E85;
2008
+ color: #fff;
2009
+ }
2010
+
2011
+ .swp-flickr {
2012
+ background: #0063dc;
2013
+ border-color: #ff0084;
2014
+ }
2015
+
2016
+ .swp-flickr a {
2017
+ color: #0063dc;
2018
+ }
2019
+
2020
+ .swp-flickr a:hover {
2021
+ background: #ff0084;
2022
+ color: #fff;
2023
+ }
2024
+
2025
+ .swp-instagram {
2026
+ background: #E4425F;
2027
+ border-color: #DA3075;
2028
+ }
2029
+
2030
+ .swp-instagram a {
2031
+ color: #E4425F;
2032
+ }
2033
+
2034
+ .swp-instagram a:hover {
2035
+ background: #DA3075;
2036
+ color: #fff;
2037
+ }
2038
+
2039
+ .swp-linkedin {
2040
+ background: #0D77B7;
2041
+ border-color: #0D6C9C;
2042
+ }
2043
+
2044
+ .swp-linkedin a {
2045
+ color: #0D77B7;
2046
+ }
2047
+
2048
+ .swp-linkedin a:hover {
2049
+ background: #0D6C9C;
2050
+ color: #fff;
2051
+ }
2052
+
2053
+ .swp-medium {
2054
+ background: #00ab6c;
2055
+ border-color: #fefefe;
2056
+ }
2057
+
2058
+ .swp-medium a {
2059
+ color: #00ab6c;
2060
  }
2061
+
2062
+ .swp-medium a:hover {
2063
+ background: #00ab6c;
2064
+ color: #fff;
2065
+ }
2066
+
2067
+
2068
+ .swp-periscope {
2069
+ background: #40a4c4;
2070
+ border-color: #e94f3c;
2071
+ }
2072
+
2073
+ .swp-periscope a {
2074
+ color: #40a4c4;
2075
+ }
2076
+
2077
+ .swp-periscope a:hover {
2078
+ background: #e94f3c;
2079
+ color: #fff;
2080
+ }
2081
+
2082
+ .swp-pinterest {
2083
+ background: #CD202A;
2084
+ border-color: #AC1F25;
2085
+ }
2086
+
2087
+ .swp-pinterest a {
2088
+ color: #CD202A;
2089
+ }
2090
+
2091
+ .swp-pinterest a:hover {
2092
+ background: #AC1F25;
2093
+ color: #fff;
2094
+ }
2095
+
2096
+ .swp-reddit {
2097
+ background: #F04B23;
2098
+ border-color: #D33F27;
2099
+ }
2100
+
2101
+ .swp-reddit a {
2102
+ color: #F04B23;
2103
+ }
2104
+
2105
+ .swp-reddit a:hover {
2106
+ background: #D33F27;
2107
+ color: #fff;
2108
+ }
2109
+
2110
+ .swp-snapchat {
2111
+ background: #fffc00;
2112
+ border-color: #000;
2113
+ }
2114
+
2115
+ .swp-snapchat a {
2116
+ color: #000;
2117
+ }
2118
+
2119
+ .swp-snapchat a:hover {
2120
+ background: #fffc00;
2121
+ color: #000;
2122
+ }
2123
+
2124
+ .swp-tumblr {
2125
+ background: #39475D;
2126
+ border-color: #27313F;
2127
+ }
2128
+
2129
+ .swp-tumblr a {
2130
+ color: #39475D;
2131
+ }
2132
+
2133
+ .swp-tumblr a:hover {
2134
+ background: #27313F;
2135
+ color: #fff;
2136
+ }
2137
+
2138
+ .swp-twitter {
2139
+ background: #429CD6;
2140
+ border-color: #3C87B2;
2141
+ }
2142
+
2143
+ .swp-twitter a {
2144
+ color: #429CD6;
2145
+ }
2146
+
2147
+ .swp-twitter a:hover {
2148
+ background: #3C87B2;
2149
+ color: #fff;
2150
+ }
2151
+
2152
+ .swp-vimeo {
2153
+ background: #21B7EB;
2154
+ border-color: #069BD1;
2155
+ }
2156
+
2157
+ .swp-vimeo a {
2158
+ color: #21B7EB;
2159
+ }
2160
+ .swp-vimeo a:hover {
2161
+ background: #069BD1;
2162
+ color: #fff;
2163
+ }
2164
+
2165
+
2166
+ /*# sourceMappingURL=converted_style.tmp.map */
assets/css/style.min.css CHANGED
@@ -1 +1 @@
1
- @media print{.swp_social_panel{display:none;opacity:0;visibility:collapse}}html[lang] .site * i.sw{font-family:sw-icon-font!important}.swp_social_panel{clear:both;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;height:34px;line-height:1;margin-bottom:20px!important;margin-top:20px!important;overflow:hidden;padding:0;-webkit-align-items:stretch;align-items:stretch;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-box-pack:justify;-moz-box-pack:justify;direction:ltr;-ms-flex-align:stretch;-ms-flex-line-pack:center;-ms-flex-pack:justify;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-justify-content:space-between;justify-content:space-between}@media print{.swp_social_panel{display:none;opacity:0;visibility:collapse}}.swp_social_panel:not(.nc_floater):not(.swp_social_panelSide){width:100%!important}.nc_wrapper .swp_social_panel{margin-bottom:10px!important;margin-top:10px!important}div.swp_social_panel .nc_tweetContainer:not(.total_shares):not(.total_sharesalt){-webkit-border-radius:2px;border-radius:2px;cursor:pointer;float:left;font-family:Lato;height:32px;margin:0 5px 3px 5px;min-width:34px;overflow:hidden;text-align:center;-webkit-transition:all 0.1s linear;transition:all 0.1s linear}div.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.swp_social_panel .nc_tweetContainer a.nc_tweet,.swp_social_panel .total_shares .swp_count{display:block;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;font-family:Lato,sans-serif;font-size:18px!important;font-weight:bold;height:30px;text-decoration:none;text-decoration:none!important;text-transform:none;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;box-shadow:none}.swp_social_panel:not(.nc_floater):not(.swp_social_panelSide).swp_shift{padding:0 10px}.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-child(1){margin-left:0}.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-last-child(1){margin-right:0}.swp_social_panel a .swp_count:not(.swp_hide){display:inline-block;line-height:32px;margin:0;padding:0 5px;-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.swp_social_panel a .swp_count.swp_hide{margin:0 auto}.swp_social_panel span:before{content:initial!important}.swp_social_panel .total_shares .swp_count{line-height:30px}.swp_social_panel span.swp_count{font-size:14px}.swp_social_panel span.iconFiller{font-size:18px;margin:0 auto}.swp_social_panel.notMobile .nc_tweetContainer:nth-child(1){margin-left:0}.swp_social_panel:not(.swp_social_panelSide){-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.swp_social_panel:not(.swp_social_panelSide) div.total_shares.total_sharesalt:nth-child(1){margin-left:0;margin-right:15px;padding-left:0}.swp_social_panel:not(.swp_social_panelSide) div.total_shares.total_sharesalt:nth-last-child(1){margin-right:0;padding-right:0}a.swp_CTT{cursor:pointer}span.swp_share{display:block;float:right;float:left;font-size:14px;font-weight:normal;height:30px;line-height:30px;margin:0 0 0 6px;max-width:none!important;vertical-align:middle}.swp_social_panelSide span.swp_share{margin:0}.swp_social_panel .sw{float:left;height:30px;line-height:32px;margin:0 5px;text-shadow:none!important;width:20px}.iconFiller{display:block;float:left;height:30px;overflow:hidden;-webkit-transition:width 0.1s linear;transition:width 0.1s linear}.swp_social_panel .iconFiller{width:30px}span.spaceManWilly{display:block;width:120px}.swp_social_panel .total_shares{background:transparent!important;;border:none!important;-webkit-border-radius:2px;border-radius:2px;color:white;cursor:default;display:block;font-size:19px;padding:0 10px;-webkit-box-flex:0!important;-moz-box-flex:0!important;-webkit-flex:none!important;-ms-flex:none!important;flex:none!important}.swp_social_panel .total_sharesalt{background:transparent!important;border:none!important}.swp_social_panel div.total_shares.total_sharesalt,.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)){background:transparent!important;border:none;color:#474b4d;margin-left:0!important;margin-bottom:10px!important}div.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)){background:transparent;color:#474b4d;margin-left:10px}.swp_social_panel .total_shares.total_sharesalt .swp_label{color:#474b4d;font-size:10px;letter-spacing:0;min-width:40px;vertical-align:middle}.swp_social_panel .total_shares .swp_label{font-size:10px;vertical-align:middle}.swp_social_panel .total_shares.total_sharesalt .swp_count{color:#474b4d;font-size:24px}.swp_social_panel:hover .total_shares,.swp_social_panel.swp_full_color .total_shares,.swp_social_panel.swp_fade .total_shares,.swp_social_panel.swp_customFull:hover div.total_shares{background:#e08a0f}.swp_social_panel .nc_tweetContainer.total_shares.total_sharesalt:before{content:"o";display:inline-block;font-family:sw-icon-font;margin-top:7px;vertical-align:top}.swp_social_panel:not(.swp_social_panelSide) .total_shares.total_sharesalt .swp_count{display:inline-block;line-height:0;margin-left:8px;margin-top:12px;min-width:45px;position:relative;vertical-align:middle}span.swp_label{display:block;font-size:9px!important;margin-top:13px;position:absolute;text-align:center!important;text-transform:uppercase}.swp_social_panelSide span.swp_label{margin-top:0}.swp_social_panel.swp_leaf .nc_tweetContainer{-webkit-border-radius:15px 0!important;border-radius:15px 0!important;border-width:1px}.swp_social_panel.swp_pill .nc_tweetContainer{-webkit-border-radius:50px!important;border-radius:50px!important;border-width:1px}.swp_social_panel.swp_shift .nc_tweetContainer:not(.total_shares){border-width:1px;-moz-transform:skew(-25deg);-o-transform:skew(-25deg);-webkit-transform:skew(-25deg)}.swp_social_panel.swp_shift .nc_tweetContainer a{-moz-transform:skew(25deg);-o-transform:skew(25deg);-webkit-transform:skew(25deg)}.swp_connected .nc_tweetContainer,.swp_connected:hover .nc_tweetContainer,.swp_connected .nc_tweetContainer:hover{-webkit-border-radius:0!important;border-radius:0!important;border-width:1px;margin:0!important}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_google_plus:not(:hover){border:1px solid #df4b37}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_twitter:not(:hover){border:1px solid #429cd6}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_facebook:not(:hover){border:1px solid #3a589e}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_pinterest:not(:hover){border:1px solid #cd2029}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_linkedin:not(:hover){border:1px solid #0d77b7}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_tumblr:not(:hover){border:1px solid #39475d}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_mix:not(:hover){border:1px solid #f4812c}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_yummly:not(:hover){border:1px solid #e26426}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_reddit:not(:hover){border:1px solid #f04b23}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_email,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_email:not(:hover){border:1px solid #6bcce9}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_whatsapp:not(:hover){border:1px solid #71c169}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_pocket:not(:hover){border:1px solid #ef4056}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_buffer:not(:hover){border:1px solid #323b43}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_hacker_news:not(:hover){border:1px solid #d85623}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_flipboard:not(:hover){border:1px solid #bf2626}.swp_social_panel.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_other_full_color:hover .swp_google_plus{background:#df4b37;border:1px solid #c44133}.swp_social_panel.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_other_full_color:hover .swp_twitter{background:#429cd6;border:1px solid #3c87b2}.swp_social_panel.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_other_full_color:hover .swp_facebook{background:#3a589e;border:1px solid #2e4675}.swp_social_panel.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_other_full_color:hover .swp_pinterest{background:#cd2029;border:1px solid #aa1b29}.swp_social_panel.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_other_full_color:hover .swp_linkedin{background:#0d77b7;border:1px solid #0c6591}.swp_social_panel.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_other_full_color:hover .swp_tumblr{background:#39475d;border:1px solid #27313f}.swp_social_panel.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_other_full_color:hover .swp_mix{background:#f4812c;border:1px solid #c96a29}.swp_social_panel.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_other_full_color:hover .swp_yummly{background:#e26426;border:1px solid #b65027}.swp_social_panel.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_other_full_color:hover .swp_reddit{background:#f04b23;border:1px solid #d33f27}.swp_social_panel.swp_default_full_color .swp_email,html body .swp_social_panel.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_other_full_color:hover .swp_email{background:#6bcce9;border:1px solid #61bace}.swp_social_panel.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_other_full_color:hover .swp_whatsapp{background:#71c169;border:1px solid #28b04b}.swp_social_panel.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_other_full_color:hover .swp_pocket{background:#ef4056;border:1px solid #ce3d55}.swp_social_panel.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_other_full_color:hover .swp_buffer{background:#323b43;border:1px solid #000}.swp_social_panel.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_other_full_color:hover .swp_hacker_news{background:#f16522;border:1px solid #d85623}.swp_social_panel.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_other_full_color:hover .swp_flipboard{background:#e02828;border:1px solid #bf2626}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_google_plus{border-bottom:3px solid #c44133}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_twitter{border-bottom:3px solid #5595bc}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_facebook{border-bottom:3px solid #2e4675}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_pinterest{border-bottom:3px solid #aa1b29}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_linkedin{border-bottom:3px solid #0c6591}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_tumblr{border-bottom:3px solid #27313f}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_mix{border-bottom:3px solid #c96a29}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_yummly{border-bottom:3px solid #b65027}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_reddit{border-bottom:3px solid #d33f27}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_email,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_email{border-bottom:3px solid #61bace}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_whatsapp{border-bottom:3px solid #28b04b}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_pocket{border-bottom:3px solid #ce3d55}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_buffer{border-bottom:3px solid #000}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_hacker_news{border-bottom:3px solid #d85623}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_flipboard{border-bottom:3px solid #bf2626}.swp_social_panel.swp_default_light_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_light_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_light_gray:hover .nc_tweetContainer{background-color:#ccc;border:1px solid #ccc}.swp_social_panel.swp_three_dee.swp_default_light_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_light_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_light_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #999}.swp_social_panel.swp_default_medium_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_medium_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_medium_gray:hover .nc_tweetContainer{background-color:#999;border:1px solid #999}.swp_social_panel.swp_three_dee.swp_default_medium_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_medium_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_medium_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #444}.swp_social_panel.swp_default_dark_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_dark_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_dark_gray:hover .nc_tweetContainer{background-color:#444;border:1px solid #444}.swp_social_panel.swp_three_dee.swp_default_dark_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_dark_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_dark_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #222}.swp_social_panel.swp_default_light_gray_outlines a,html body .swp_social_panel.swp_individual_light_gray_outlines a:hover,body .swp_social_panel.swp_other_light_gray_outlines:hover a{color:#ccc}.swp_social_panel.swp_default_light_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_light_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_light_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #ccc}.swp_social_panel.swp_default_medium_gray_outlines a,html body .swp_social_panel.swp_individual_medium_gray_outlines a:hover,body .swp_social_panel.swp_other_medium_gray_outlines:hover a{color:#999}.swp_social_panel.swp_default_medium_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_medium_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_medium_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #999}.swp_social_panel.swp_default_dark_gray_outlines a,html body .swp_social_panel.swp_individual_dark_gray_outlines a:hover,body .swp_social_panel.swp_other_dark_gray_outlines:hover a{color:#444}.swp_social_panel.swp_default_dark_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_dark_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_dark_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #444}.swp_social_panel.swp_default_color_outlines .swp_google_plus a,html body .swp_social_panel.swp_individual_color_outlines .swp_google_plus a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_google_plus a{color:#df4b37}.swp_social_panel.swp_default_color_outlines .swp_facebook a,html body .swp_social_panel.swp_individual_color_outlines .swp_facebook a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook a{color:#3a589e}.swp_social_panel.swp_default_color_outlines .swp_pinterest a,html body .swp_social_panel.swp_individual_color_outlines .swp_pinterest a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pinterest a{color:#cd2029}.swp_social_panel.swp_default_color_outlines .swp_linkedin a,html body .swp_social_panel.swp_individual_color_outlines .swp_linkedin a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_linkedin a{color:#0d77b7}.swp_social_panel.swp_default_color_outlines .swp_tumblr a,html body .swp_social_panel.swp_individual_color_outlines .swp_tumblr a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_tumblr a{color:#39475d}.swp_social_panel.swp_default_color_outlines .swp_mix a,html body .swp_social_panel.swp_individual_color_outlines .swp_mix a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_mix a{color:#f4812c}.swp_social_panel.swp_default_color_outlines .swp_yummly a,html body .swp_social_panel.swp_individual_color_outlines .swp_yummly a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_yummly a{color:#e26426}.swp_social_panel.swp_default_color_outlines .swp_whatsapp a,html body .swp_social_panel.swp_individual_color_outlines .swp_whatsapp a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_whatsapp a{color:#71c169}.swp_social_panel.swp_default_color_outlines .swp_pocket a,html body .swp_social_panel.swp_individual_color_outlines .swp_pocket a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pocket a{color:#ef4056}.swp_social_panel.swp_default_color_outlines .swp_reddit a,html body .swp_social_panel.swp_individual_color_outlines .swp_reddit a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_reddit a{color:#f04b23}.swp_social_panel.swp_default_color_outlines .swp_email a,html body .swp_social_panel.swp_individual_color_outlines .swp_email a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_email a{color:#6bcce9}.swp_social_panel.swp_default_color_outlines .swp_buffer a,html body .swp_social_panel.swp_individual_color_outlines .swp_buffer a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_buffer a{color:#323b43}.swp_social_panel.swp_default_color_outlines .swp_hacker_news a,html body .swp_social_panel.swp_individual_color_outlines .swp_hacker_news a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_hacker_news a{color:#f16522}.swp_social_panel.swp_default_color_outlines .swp_flipboard a,html body .swp_social_panel.swp_individual_color_outlines .swp_flipboard a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard a{color:#e02828}.swp_social_panel.swp_default_color_outlines .swp_google_plus,html body .swp_social_panel.swp_individual_color_outlines .swp_google_plus:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_google_plus{background:transparent;border:1px solid #df4b37}.swp_social_panel.swp_default_color_outlines .swp_twitter,html body .swp_social_panel.swp_individual_color_outlines .swp_twitter:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_twitter{background:transparent;border:1px solid #429cd6}.swp_social_panel.swp_default_color_outlines .swp_facebook,html body .swp_social_panel.swp_individual_color_outlines .swp_facebook:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook{background:transparent;border:1px solid #3a589e}.swp_social_panel.swp_default_color_outlines .swp_pinterest,html body .swp_social_panel.swp_individual_color_outlines .swp_pinterest:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pinterest{background:transparent;border:1px solid #cd2029}.swp_social_panel.swp_default_color_outlines .swp_linkedin,html body .swp_social_panel.swp_individual_color_outlines .swp_linkedin:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_linkedin{background:transparent;border:1px solid #0d77b7}.swp_social_panel.swp_default_color_outlines .swp_tumblr,html body .swp_social_panel.swp_individual_color_outlines .swp_tumblr:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_tumblr{background:transparent;border:1px solid #39475d}.swp_social_panel.swp_default_color_outlines .swp_mix,html body .swp_social_panel.swp_individual_color_outlines .swp_mix:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_mix{background:transparent;border:1px solid #f4812c}.swp_social_panel.swp_default_color_outlines .swp_yummly,html body .swp_social_panel.swp_individual_color_outlines .swp_yummly:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_yummly{background:transparent;border:1px solid #e26426}.swp_social_panel.swp_default_color_outlines .swp_whatsapp,html body .swp_social_panel.swp_individual_color_outlines .swp_whatsapp:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_whatsapp{background:transparent;border:1px solid #71c169}.swp_social_panel.swp_default_color_outlines .swp_reddit,html body .swp_social_panel.swp_individual_color_outlines .swp_reddit:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_reddit{background:transparent;border:1px solid #f04b23}.swp_social_panel.swp_default_color_outlines .swp_email,html body .swp_social_panel.swp_individual_color_outlines .swp_email:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_email{background:transparent;border:1px solid #6bcce9}.swp_social_panel.swp_default_color_outlines .swp_pocket,html body .swp_social_panel.swp_individual_color_outlines .swp_pocket:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pocket{background:transparent;border:1px solid #ef4056}.swp_social_panel.swp_default_color_outlines .swp_buffer,html body .swp_social_panel.swp_individual_color_outlines .swp_buffer:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_buffer{background:transparent;border:1px solid #323b43}.swp_social_panel.swp_default_color_outlines .swp_hacker_news,html body .swp_social_panel.swp_individual_color_outlines .swp_hacker_news:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_hacker_news{background:transparent;border:1px solid #f16522}.swp_social_panel.swp_default_color_outlines .swp_flipboard,html body .swp_social_panel.swp_individual_color_outlines .swp_flipboard:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard{background:transparent;border:1px solid #bf2626}.swp_social_panelSide{flex-direction:column;height:auto;overflow:visible;-webkit-transition:all 0.2s linear;transition:all 0.2s linear;z-index:9998;margin:10px 5px!important;padding:0;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column}.swp_social_panelSide.slide,.swp_social_panelSide.fade{position:fixed;-webkit-transition:all 0.2s linear;transition:all 0.2s linear}.swp_social_panelSide.fade.swp_float_left{left:5px}.swp_social_panelSide.fade.swp_float_right{right:5px}.swp_social_panelSide[class*=swp_side]{height:auto;display:flex;position:fixed;padding:30px 0}.swp_social_panelSide.fade{display:none}.swp_social_panelSide.swp_float_right{align-content:flex-end}.swp_social_panelSide.swp_side_top{top:15px}.swp_social_panelSide.swp_side_bottom{bottom:15px}.swp_social_panelSide.swp_side_center{}.swp_social_panelSide .nc_tweetContainer{-webkit-border-radius:3px;border-radius:3px;clear:both;display:block;font-family:Lato,sans-serif;height:32px;margin:3px 0!important;overflow:hidden;padding:0;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top;width:90px}.swp_social_panelSide .nc_tweetContainer .iconFiller{display:inline-block;height:40px;margin:0 6px;padding:0;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:middle;width:21px}.swp_social_panelSide .nc_tweetContainer .swp_count{display:inline-block;font-size:14px;height:32px;line-height:16px;margin:0;overflow:hidden;padding:0;text-align:right;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top;width:0}.swp_social_panelSide .nc_tweetContainer a{cursor:pointer;display:block;font-weight:500;height:36px;margin:0;padding:0;text-decoration:none;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top}.swp_social_panelSide .nc_tweetContainer .sw,.swp_social_panelSide .nc_tweetContainer .swp_share{float:left;line-height:34px}.swp_social_panelSide.swp_default .nc_tweetContainer .sw{line-height:32px}.swp_social_panelSide.swp_default .nc_tweetContainer .swp_share{line-height:30px}.swp_social_panelSide .nc_tweetContainer .swp_share{font-size:13px}.swp_social_panelSide .nc_tweetContainer:hover,.swp_social_panelSide .nc_tweetContainer:hover .iconFiller,.swp_social_panelSide .nc_tweetContainer:hover .swp_count{-webkit-transition:all 0.1s linear;transition:all 0.1s linear}.swp_social_panelSide.swp_boxed .nc_tweetContainer,.swp_social_panelSide.swp_circles .nc_tweetContainer{margin-bottom:5px;width:67.5px!important}.swp_social_panelSide.swp_boxed .nc_tweetContainer,.swp_social_panelSide.swp_boxed .nc_tweetContainer a,.swp_social_panelSide.swp_circles .nc_tweetContainer,.swp_social_panelSide.swp_circles .nc_tweetContainer a{width:67.5px;height:67.5px!important;position:relative}.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) a{border-radius:50%!important}.swp_social_panelSide.swp_boxed .nc_tweetContainer i.sw,.swp_social_panelSide.swp_circles .nc_tweetContainer i.sw{font-size:27px;height:40px;margin:0;padding-top:10px;text-align:center;width:100%}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_share,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_share{height:35px;opacity:0;position:absolute;bottom:0;left:0;text-align:center;width:67.5px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_count,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_count{height:35px;margin:0;padding:0;position:absolute;bottom:0;left:0;text-align:center;-webkit-transition:padding 0.1s linear;transition:padding 0.1s linear;width:100%}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_count.swp_hide,.swp_social_panelSide.swp_boxed .nc_tweetContainer span.swp_hide .iconFiller,.swp_social_panelSide.swp_boxed .nc_tweetContainer span.swp_hide .spaceManWilly,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_count.swp_hide,.swp_social_panelSide.swp_circles .nc_tweetContainer span.swp_hide .iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer span.swp_hide .spaceManWilly{height:67.5px;opacity:1}.swp_social_panelSide.swp_boxed .nc_tweetContainer span.iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer span.iconFiller{height:40px;width:67.5px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover span.swp_count:not(.swp_hide),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover span.swp_count:not(.swp_hide){opacity:0}.swp_social_panelSide.swp_boxed .total_shares,.swp_social_panelSide.swp_circles .total_shares{padding:0;width:67.5px!important}.swp_social_panelSide .nc_tweetContainer:not(.total_shares){line-height:34px}.swp_social_panelSide:not(.swp_boxed):not(.swp_circles) .nc_tweetContainer:not(.total_shares) .iconFiller{margin-left:2px;width:30px}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count{padding:0 8px;width:48px}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count.swp_hide{padding:0;width:100%}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count.swp_hide .iconFiller{display:block;float:none;margin:0 auto}.swp_social_panelSide:not(.swp_boxed):not(.swp_circles) .nc_tweetContainer:not(.total_shares):hover{width:150px}.swp_social_panelSide .nc_tweetContainer[data-network]:not(.total_shares):hover .iconFiller,.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .spaceManWilly{width:90px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover .iconFiller,.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) .spaceManWilly,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover .iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) .spaceManWilly{width:100%}.swp_social_panelSide .nc_tweetContainer.total_shares{background:rgba(0,0,0,0);border:0!important;font-weight:800;height:55px;margin:0;padding:0;text-align:center;width:90px;order:-100}.swp_social_panelSide .nc_tweetContainer.total_shares .swp_count{color:#444;display:block;font-family:Lato,sans-serif;height:28px;text-align:center;width:100%}.swp_social_panelSide .nc_tweetContainer.total_shares .swp_label{color:#444;display:block;font-family:Lato,sans-serif;font-size:50%;position:relative;text-align:center;width:100%}.nc_wrapper{background:white;position:fixed;-webkit-transition:top 0.5s bottom 0.5s;transition:top 0.5s bottom 0.5s;width:100%;z-index:99999}.nc_wrapper.bottom{bottom:0;left:0}.nc_wrapper.top{top:0;left:0}.nc_floater{margin:10px 0;position:relative}.swp_social_panelSide.hideCounts a{text-align:center}.swp_social_panelSide.hideCounts .iconFiller{float:none;text-align:left}.sw{display:inline-block;font-family:sw-icon-font!important;font-size:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-rendering:auto;text-transform:none!important;-ms-transform:translate(0,0);-webkit-transform:translate(0,0);transform:translate(0,0)}.sw:before{display:block!important}.wp-editor-container .sw:before{font-size:18px;line-height:22px}.wp-editor-container .sw-social-warfare:before{color:#ee464f}.mce-container .sw-social-warfare{color:#ee464f;font-size:20px;margin-right:15px;vertical-align:middle}.mce-ico.sw-social-warfare:before{color:#ee464f}.mce-ico.sw-social-warfare{color:#ee464f}i.swp_google_plus_icon:before{content:"h"}i.swp_pinterest_icon:before{content:"b"}i.swp_twitter_icon:before{content:"s"}i.swp_facebook_icon:before{content:"j"}i.swp_linkedin_icon:before{content:"f"}i.swp_tumblr_icon:before{content:"r"}i.swp_mix_icon:before{content:"g"}i.swp_reddit_icon:before{content:"a"}i.swp_email_icon:before{content:"k"}i.swp_yummly_icon:before{content:"x"}i.swp_whatsapp_icon:before{content:"y"}i.swp_pocket_icon:before{content:"B"}i.swp_buffer_icon:before{content:"z"}i.swp_hacker_news_icon:before{content:"D"}i.swp_flipboard_icon:before{content:"C"}.sw-social-warfare:before{content:"p"}.swp_CTT{text-decoration:none!important}.sw-tweet-clear{zoom:1}.sw-tweet-clear:after{clear:both;content:".";display:block;height:0;visibility:hidden}.sw-click-to-tweet{display:block;margin:15px 0;padding:15px 30px;position:relative}.sw-click-to-tweet:after{clear:both;content:".";display:block;height:0;line-height:0;visibility:hidden}.sw-click-to-tweet .sw-ctt-text{margin:0 0 10px;padding:0;position:relative;word-wrap:break-word}a .sw-click-to-tweet .sw-ctt-text{display:block;font-size:24px;font-weight:500;line-height:140%;margin:0;padding:0;position:relative;text-decoration:none;text-transform:none}.sw-click-to-tweet .sw-ctt-btn{display:block;float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:bold;line-height:100%;margin:10px 0 0;padding:3px 5px 3px 3px;position:relative;text-decoration:none;text-transform:uppercase}.sw-click-to-tweet i.swp_twitter_icon{float:right;font-size:21px;margin-left:15px!important;margin-top:2px;text-transform:none}a.swp_CTT.style1 .sw-click-to-tweet{background-color:#fff;border:1px solid #ddd;-webkit-border-radius:4px;border-radius:4px}a.swp_CTT.style2 .sw-click-to-tweet{background-color:#fff;border:4px double #ddd;-webkit-border-radius:0;border-radius:0}a.style2 .sw-click-to-tweet .sw-ctt-text{color:#666;font-style:italic;text-decoration:none}a.swp_CTT.style3:hover .sw-click-to-tweet{border-left:10px solid #3c87b2;padding-right:20px;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style3 .sw-click-to-tweet{background-color:#429cd6;border:none;border-left:10px solid #429cd6;-webkit-border-radius:0;border-radius:0;padding-right:20px;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.style3 .sw-click-to-tweet .sw-ctt-text{color:#fff;font-style:italic;text-decoration:none}a.swp_CTT.style4:hover .sw-click-to-tweet{border-left:10px solid #3c87b2;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style4 .sw-click-to-tweet{background-color:#333;border-left:10px solid #c33;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style5:hover .sw-click-to-tweet{background-color:#d34250;border-left:10px solid #30394f;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style5 .sw-click-to-tweet{background-color:#30394f;border-left:10px solid #d34250;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style6:hover .sw-click-to-tweet{background-color:#ced3dc;border-left:10px solid #d34250;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style6 .sw-click-to-tweet{background-color:#eee;border-left:10px solid #d34250;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.style6 .sw-click-to-tweet i.swp_twitter{color:#30394f}.swp_pop_thumb{-webkit-border-radius:3px;border-radius:3px;float:left;height:100px;margin:5px 25px 5px 0;width:100px}.swp_popular_post{clear:both}.swp_clearfix:after{clear:both;content:" ";display:block;height:0;visibility:hidden}.swp_popular_post a.swp_popularity{border:none;display:block;line-height:1.5;margin:20px 0}span.swp_pop_count{display:block;font-size:70%}.swp_widget_box{-webkit-border-radius:3px;border-radius:3px}div.sw-pinit{display:table!important;line-height:0;position:relative!important}div.sw-pinit a.sw-pinit-button,div.sw-pinit a.sw-pinit-button:visited{background:#cd2029;border:1px solid #aa1b29;border:0;border-bottom:none;-webkit-border-radius:4px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;font-family:Lato,sans-serif;font-size:15px;height:32px;line-height:32px;opacity:0;padding:0 20px;position:absolute;text-decoration:none;text-decoration:none;-webkit-transition:opacity 0.5s;transition:opacity 0.5s;z-index:200}.wp-block-gallery div.sw-pinit a.sw-pinit-button,.blocks-gallery-item div.sw-pinit a.sw-pinit-button,.blocks-gallery-item div.sw-pinit a.sw-pinit-button:visited{height:34px!important;width:120px!important;text-align:center}div.sw-pinit:hover a.sw-pinit-button,div.sw-pinit:focus a.sw-pinit-button{opacity:1}div.sw-pinit a.sw-pinit-button::before{color:#fff;content:"b";float:left;font-family:sw-icon-font;font-size:20px;font-weight:400;line-height:36px;margin-left:-5px;margin-right:10px}div.sw-pinit a.sw-pinit-button:hover::before{content:"F"}div.sw-pinit a.sw-pinit-button:hover,div.sw-pinit a.sw-pinit-button:focus{background:#aa1b29;color:#fff;text-decoration:none}div.sw-pinit .sw-pinit-left{left:30px}div.sw-pinit .sw-pinit-center{margin-left:-60px;left:50%}div.sw-pinit .sw-pinit-right{right:30px}div.sw-pinit .sw-pinit-top{top:30px}div.sw-pinit .sw-pinit-middle{margin-top:-25px;top:50%}div.sw-pinit .sw-pinit-bottom{bottom:30px}.swp_social_panel.notMobile .nc_tweetContainer:nth-last-child(1),.mobile .nc_tweetContainer:nth-last-child(2),.nc_tweetContainer.total_shares:nth-last-child(1){margin-right:0}.swp_social_panel.swp_default_full_color a,html body .swp_social_panel.swp_individual_full_color .nc_tweetContainer:hover a,body .swp_social_panel.swp_other_full_color:hover a,.swp_social_panel.swp_default_light_gray a,html body .swp_social_panel.swp_individual_light_gray .nc_tweetContainer:hover a,body .swp_social_panel.swp_other_light_gray:hover a,.swp_social_panel.swp_default_medium_gray a,html body .swp_social_panel.swp_individual_medium_gray a:hover,body .swp_social_panel.swp_other_medium_gray:hover a,.swp_social_panel.swp_default_dark_gray a,html body .swp_social_panel.swp_individual_dark_gray a:hover,body .swp_social_panel.swp_other_dark_gray:hover a{color:white}.swp_social_panel.swp_default_color_outlines .swp_twitter a,html body .swp_social_panel.swp_individual_color_outlines .swp_twitter a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_twitter a,.wp-editor-container .swp_twitter:before,a.style1 .sw-click-to-tweet i.swp_twitter,a.style2 .sw-click-to-tweet i.swp_twitter{color:#429cd6}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) .swp_hide span.swp_share,.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover span.swp_share:not(.swp_hide),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) .swp_hide span.swp_share,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover span.swp_share:not(.swp_hide){opacity:1}.swp_social_panel.mobile .iconFiller ~ .swp_count,.sw-content-locator{display:none}a.style1 .sw-click-to-tweet .sw-ctt-text,a.style1 .sw-click-to-tweet .sw-ctt-btn{color:#999;text-decoration:none}a.style1:hover .sw-click-to-tweet .sw-ctt-text,a.style1:hover .sw-click-to-tweet .sw-ctt-btn,a.style2:hover .sw-click-to-tweet .sw-ctt-text,a.style2 .sw-click-to-tweet .sw-ctt-btn,a.style2:hover .sw-click-to-tweet .sw-ctt-btn{color:#666;text-decoration:none}a.style3:hover .sw-click-to-tweet .sw-ctt-text,a.style3 .sw-click-to-tweet .sw-ctt-btn,a.style3:hover .sw-click-to-tweet .sw-ctt-btn,a.style3 .sw-click-to-tweet i.swp_twitter,a.style4 .sw-click-to-tweet .sw-ctt-text,a.style4:hover .sw-click-to-tweet .sw-ctt-text,a.style4 .sw-click-to-tweet .sw-ctt-btn,a.style4:hover .sw-click-to-tweet .sw-ctt-btn,a.style5 .sw-click-to-tweet .sw-ctt-text,a.style5:hover .sw-click-to-tweet .sw-ctt-text,a.style5 .sw-click-to-tweet .sw-ctt-btn,a.style5:hover .sw-click-to-tweet .sw-ctt-btn{color:#fff;text-decoration:none}a.style4 .sw-click-to-tweet i.swp_twitter,a.style5 .sw-click-to-tweet i.swp_twitter{color:#fff}a.style6 .sw-click-to-tweet .sw-ctt-text,a.style6 .sw-click-to-tweet .sw-ctt-btn{color:#30394f;text-decoration:none}a.style6:hover .sw-click-to-tweet .sw-ctt-text,a.style6:hover .sw-click-to-tweet .sw-ctt-btn,a.style6:hover .sw-click-to-tweet i.swp_twitter{color:#2a2d34;text-decoration:none}.scale-70{-ms-transform:scale(0.7);-webkit-transform:scale(0.7);transform:scale(0.7)}.swp_social_panel:not(.nc_floater).scale-70.scale-full_width{width:142.8571428571429%!important}.scale-80{-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8)}.swp_social_panel:not(.nc_floater).scale-80.scale-full_width{width:125%!important}.scale-90{-ms-transform:scale(0.9);-webkit-transform:scale(0.9);transform:scale(0.9)}.swp_social_panel:not(.nc_floater).scale-90.scale-full_width{width:111.111111111111%!important}.scale-110{-ms-transform:scale(1.1);-webkit-transform:scale(1.1);transform:scale(1.1)}.swp_social_panel:not(.nc_floater).scale-110.scale-full_width{width:90.90909090909091%!important}.scale-120{-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2)}.swp_social_panel:not(.nc_floater).scale-120.scale-full_width{width:83.33333333333333%!important}.scale-130{-ms-transform:scale(1.3);-webkit-transform:scale(1.3);transform:scale(1.3)}.swp_social_panel:not(.nc_floater).scale-130.scale-full_width{width:76.92307692307692%!important}.scale-140{-ms-transform:scale(1.4);-webkit-transform:scale(1.4);transform:scale(1.4)}.swp_social_panel:not(.nc_floater).scale-140.scale-full_width{width:71.42857142857143%!important}.scale-full_width,.scale-left,.nc_floater.scale-center,.nc_floater.scale-right{-ms-transform-origin:left;-webkit-transform-origin:left;transform-origin:left}.scale-right{-ms-transform-origin:right;-webkit-transform-origin:right;transform-origin:right}.scale-center{-ms-transform-origin:center;-webkit-transform-origin:center;transform-origin:center}div.swp_social_panel .nc_tweetContainer.swp_emphasize{-webkit-box-flex:2;-moz-box-flex:2;-webkit-flex:2;-ms-flex:2;flex:2}.sw-pinit.aligncenter{margin:0 auto}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){div.sw-pinit{display:inline-block!important;max-width:100%}}.swp_hidden_pin_image{height:0;opacity:0;position:absolute;top:0;width:0;z-index:-10}.fl-module-content .uabb-blog-posts .uabb-post-thumbnail .sw-pinit.lazyloaded{display:block!important}.swp-content-locator{display:none!important;margin:0!important}.float-position-top-left{transform-origin:top left}.float-position-center-left{transform-origin:center left}.float-position-bottom-left{transform-origin:bottom left}.float-position-top-right{transform-origin:top right}.float-position-center-right{transform-origin:center right}.float-position-bottom-right{transform-origin:bottom right}div[class*=custom_color][class^=_wrapper]{display:none}.swp-pinterest-image-top{margin-bottom:20px}
1
+ @media print{.swp_social_panel{display:none;opacity:0;visibility:collapse}}html[lang] .site * i.sw{font-family:sw-icon-font!important}.swp_social_panel{clear:both;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;height:34px;line-height:1;margin-bottom:20px!important;margin-top:20px!important;overflow:hidden;padding:0;-webkit-align-items:stretch;align-items:stretch;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-box-pack:justify;-moz-box-pack:justify;direction:ltr;-ms-flex-align:stretch;-ms-flex-line-pack:center;-ms-flex-pack:justify;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-justify-content:space-between;justify-content:space-between}@media print{.swp_social_panel{display:none;opacity:0;visibility:collapse}}.swp_social_panel:not(.nc_floater):not(.swp_social_panelSide){width:100%!important}.nc_wrapper .swp_social_panel{margin-bottom:10px!important;margin-top:10px!important}div.swp_social_panel .nc_tweetContainer:not(.total_shares):not(.total_sharesalt){-webkit-border-radius:2px;border-radius:2px;cursor:pointer;float:left;font-family:Lato;height:32px;margin:0 5px 3px 5px;min-width:34px;overflow:hidden;text-align:center;-webkit-transition:all 0.1s linear;transition:all 0.1s linear}div.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.swp_social_panel .nc_tweetContainer a.nc_tweet,.swp_social_panel .total_shares .swp_count{display:block;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;font-family:Lato,sans-serif;font-size:18px!important;font-weight:bold;height:30px;text-decoration:none;text-decoration:none!important;text-transform:none;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;box-shadow:none}.swp_social_panel:not(.nc_floater):not(.swp_social_panelSide).swp_shift{padding:0 10px}.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-child(1){margin-left:0}.swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:nth-last-child(1){margin-right:0}.swp_social_panel a .swp_count:not(.swp_hide){display:inline-block;line-height:32px;margin:0;padding:0 5px;-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.swp_social_panel a .swp_count.swp_hide{margin:0 auto}.swp_social_panel span:before{content:initial!important}.swp_social_panel .total_shares .swp_count{line-height:30px}.swp_social_panel span.swp_count{font-size:14px}.swp_social_panel span.iconFiller{font-size:18px;margin:0 auto}.swp_social_panel.notMobile .nc_tweetContainer:nth-child(1){margin-left:0}.swp_social_panel:not(.swp_social_panelSide){-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.swp_social_panel:not(.swp_social_panelSide) div.total_shares.total_sharesalt:nth-child(1){margin-left:0;margin-right:15px;padding-left:0}.swp_social_panel:not(.swp_social_panelSide) div.total_shares.total_sharesalt:nth-last-child(1){margin-right:0;padding-right:0}a.swp_CTT{cursor:pointer}span.swp_share{display:block;float:right;float:left;font-size:14px;font-weight:normal;height:30px;line-height:30px;margin:0 0 0 6px;max-width:none!important;vertical-align:middle}.swp_social_panelSide span.swp_share{margin:0}.swp_social_panel .sw{float:left;height:30px;line-height:32px;margin:0 5px;text-shadow:none!important;width:20px}.iconFiller{display:block;float:left;height:30px;overflow:hidden;-webkit-transition:width 0.1s linear;transition:width 0.1s linear}.swp_social_panel .iconFiller{width:30px}span.spaceManWilly{display:block;width:120px}.swp_social_panel .total_shares{background:transparent!important;;border:none!important;-webkit-border-radius:2px;border-radius:2px;color:white;cursor:default;display:block;font-size:19px;padding:0 10px;-webkit-box-flex:0!important;-moz-box-flex:0!important;-webkit-flex:none!important;-ms-flex:none!important;flex:none!important}.swp_social_panel .total_sharesalt{background:transparent!important;border:none!important}.swp_social_panel div.total_shares.total_sharesalt,.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)){background:transparent!important;border:none;color:#474b4d;margin-left:0!important;margin-bottom:10px!important}div.swp_social_panel:hover div.total_shares.total_sharesalt:not(:nth-child(1)){background:transparent;color:#474b4d;margin-left:10px}.swp_social_panel .total_shares.total_sharesalt .swp_label{color:#474b4d;font-size:10px;letter-spacing:0;min-width:40px;vertical-align:middle}.swp_social_panel .total_shares .swp_label{font-size:10px;vertical-align:middle}.swp_social_panel .total_shares.total_sharesalt .swp_count{color:#474b4d;font-size:24px}.swp_social_panel:hover .total_shares,.swp_social_panel.swp_full_color .total_shares,.swp_social_panel.swp_fade .total_shares,.swp_social_panel.swp_customFull:hover div.total_shares{background:#e08a0f}.swp_social_panel .nc_tweetContainer.total_shares.total_sharesalt:before{content:"o";display:inline-block;font-family:sw-icon-font;margin-top:7px;vertical-align:top}.swp_social_panel:not(.swp_social_panelSide) .total_shares.total_sharesalt .swp_count{display:inline-block;line-height:0;margin-left:8px;margin-top:12px;min-width:45px;position:relative;vertical-align:middle}span.swp_label{display:block;font-size:9px!important;margin-top:13px;position:absolute;text-align:center!important;text-transform:uppercase}.swp_social_panelSide span.swp_label{margin-top:0}.swp_social_panel.swp_leaf .nc_tweetContainer{-webkit-border-radius:15px 0!important;border-radius:15px 0!important;border-width:1px}.swp_social_panel.swp_pill .nc_tweetContainer{-webkit-border-radius:50px!important;border-radius:50px!important;border-width:1px}.swp_social_panel.swp_shift .nc_tweetContainer:not(.total_shares){border-width:1px;-moz-transform:skew(-25deg);-o-transform:skew(-25deg);-webkit-transform:skew(-25deg)}.swp_social_panel.swp_shift .nc_tweetContainer a{-moz-transform:skew(25deg);-o-transform:skew(25deg);-webkit-transform:skew(25deg)}.swp_connected .nc_tweetContainer,.swp_connected:hover .nc_tweetContainer,.swp_connected .nc_tweetContainer:hover{-webkit-border-radius:0!important;border-radius:0!important;border-width:1px;margin:0!important}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_google_plus:not(:hover){border:1px solid #df4b37}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_twitter:not(:hover){border:1px solid #429cd6}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_facebook:not(:hover){border:1px solid #4267B2}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_pinterest:not(:hover){border:1px solid #cd2029}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_linkedin:not(:hover){border:1px solid #0d77b7}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_tumblr:not(:hover){border:1px solid #39475d}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_mix:not(:hover){border:1px solid #f4812c}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_yummly:not(:hover){border:1px solid #e26426}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_reddit:not(:hover){border:1px solid #f04b23}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_email,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_email:not(:hover){border:1px solid #6bcce9}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_whatsapp:not(:hover){border:1px solid #71c169}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_pocket:not(:hover){border:1px solid #ef4056}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_buffer:not(:hover){border:1px solid #323b43}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_hacker_news:not(:hover){border:1px solid #d85623}.swp_social_panel.swp_flat_fresh.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_flat_fresh.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_flat_fresh.swp_other_full_color:hover .swp_flipboard:not(:hover){border:1px solid #bf2626}.swp_social_panel.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_other_full_color:hover .swp_google_plus{background:#df4b37;border:1px solid #c44133}.swp_social_panel.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_other_full_color:hover .swp_twitter{background:#429cd6;border:1px solid #3c87b2}.swp_social_panel.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_other_full_color:hover .swp_facebook{background:#4267B2;border:1px solid #2e4675}.swp_social_panel.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_other_full_color:hover .swp_pinterest{background:#cd2029;border:1px solid #aa1b29}.swp_social_panel.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_other_full_color:hover .swp_linkedin{background:#0d77b7;border:1px solid #0c6591}.swp_social_panel.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_other_full_color:hover .swp_tumblr{background:#39475d;border:1px solid #27313f}.swp_social_panel.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_other_full_color:hover .swp_mix{background:#f4812c;border:1px solid #c96a29}.swp_social_panel.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_other_full_color:hover .swp_yummly{background:#e26426;border:1px solid #b65027}.swp_social_panel.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_other_full_color:hover .swp_reddit{background:#f04b23;border:1px solid #d33f27}.swp_social_panel.swp_default_full_color .swp_email,html body .swp_social_panel.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_other_full_color:hover .swp_email{background:#6bcce9;border:1px solid #61bace}.swp_social_panel.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_other_full_color:hover .swp_whatsapp{background:#71c169;border:1px solid #28b04b}.swp_social_panel.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_other_full_color:hover .swp_pocket{background:#ef4056;border:1px solid #ce3d55}.swp_social_panel.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_other_full_color:hover .swp_buffer{background:#323b43;border:1px solid #000}.swp_social_panel.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_other_full_color:hover .swp_hacker_news{background:#f16522;border:1px solid #d85623}.swp_social_panel.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_other_full_color:hover .swp_flipboard{background:#e02828;border:1px solid #bf2626}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_google_plus,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_google_plus:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_google_plus{border-bottom:3px solid #c44133}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_twitter,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_twitter:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_twitter{border-bottom:3px solid #5595bc}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_facebook,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_facebook:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_facebook{border-bottom:3px solid #2e4675}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_pinterest,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_pinterest:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_pinterest{border-bottom:3px solid #aa1b29}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_linkedin,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_linkedin:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_linkedin{border-bottom:3px solid #0c6591}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_tumblr,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_tumblr:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_tumblr{border-bottom:3px solid #27313f}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_mix,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_mix:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_mix{border-bottom:3px solid #c96a29}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_yummly,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_yummly:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_yummly{border-bottom:3px solid #b65027}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_reddit,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_reddit:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_reddit{border-bottom:3px solid #d33f27}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_email,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_email:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_email{border-bottom:3px solid #61bace}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_whatsapp,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_whatsapp:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_whatsapp{border-bottom:3px solid #28b04b}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_pocket,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_pocket:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_pocket{border-bottom:3px solid #ce3d55}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_buffer,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_buffer:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_buffer{border-bottom:3px solid #000}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_hacker_news,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_hacker_news:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_hacker_news{border-bottom:3px solid #d85623}.swp_social_panel.swp_three_dee.swp_default_full_color .swp_flipboard,html body .swp_social_panel.swp_three_dee.swp_individual_full_color .swp_flipboard:hover,body .swp_social_panel.swp_three_dee.swp_other_full_color:hover .swp_flipboard{border-bottom:3px solid #bf2626}.swp_social_panel.swp_default_light_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_light_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_light_gray:hover .nc_tweetContainer{background-color:#ccc;border:1px solid #ccc}.swp_social_panel.swp_three_dee.swp_default_light_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_light_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_light_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #999}.swp_social_panel.swp_default_medium_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_medium_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_medium_gray:hover .nc_tweetContainer{background-color:#999;border:1px solid #999}.swp_social_panel.swp_three_dee.swp_default_medium_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_medium_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_medium_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #444}.swp_social_panel.swp_default_dark_gray .nc_tweetContainer,html body .swp_social_panel.swp_individual_dark_gray .nc_tweetContainer:hover,body .swp_social_panel.swp_other_dark_gray:hover .nc_tweetContainer{background-color:#444;border:1px solid #444}.swp_social_panel.swp_three_dee.swp_default_dark_gray .nc_tweetContainer:not(.total_sharesalt),html body .swp_social_panel.swp_three_dee.swp_individual_dark_gray .nc_tweetContainer:not(.total_sharesalt):hover,body .swp_social_panel.swp_three_dee.swp_other_dark_gray:hover .nc_tweetContainer:not(.total_sharesalt){border-bottom:3px solid #222}.swp_social_panel.swp_default_light_gray_outlines a,html body .swp_social_panel.swp_individual_light_gray_outlines a:hover,body .swp_social_panel.swp_other_light_gray_outlines:hover a{color:#ccc}.swp_social_panel.swp_default_light_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_light_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_light_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #ccc}.swp_social_panel.swp_default_medium_gray_outlines a,html body .swp_social_panel.swp_individual_medium_gray_outlines a:hover,body .swp_social_panel.swp_other_medium_gray_outlines:hover a{color:#999}.swp_social_panel.swp_default_medium_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_medium_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_medium_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #999}.swp_social_panel.swp_default_dark_gray_outlines a,html body .swp_social_panel.swp_individual_dark_gray_outlines a:hover,body .swp_social_panel.swp_other_dark_gray_outlines:hover a{color:#444}.swp_social_panel.swp_default_dark_gray_outlines .nc_tweetContainer,html body .swp_social_panel.swp_individual_dark_gray_outlines .nc_tweetContainer:hover,body .swp_social_panel.swp_other_dark_gray_outlines:hover .nc_tweetContainer{background:transparent;border:1px solid #444}.swp_social_panel.swp_default_color_outlines .swp_google_plus a,html body .swp_social_panel.swp_individual_color_outlines .swp_google_plus a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_google_plus a{color:#df4b37}.swp_social_panel.swp_default_color_outlines .swp_facebook a,html body .swp_social_panel.swp_individual_color_outlines .swp_facebook a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook a{color:#4267B2}.swp_social_panel.swp_default_color_outlines .swp_pinterest a,html body .swp_social_panel.swp_individual_color_outlines .swp_pinterest a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pinterest a{color:#cd2029}.swp_social_panel.swp_default_color_outlines .swp_linkedin a,html body .swp_social_panel.swp_individual_color_outlines .swp_linkedin a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_linkedin a{color:#0d77b7}.swp_social_panel.swp_default_color_outlines .swp_tumblr a,html body .swp_social_panel.swp_individual_color_outlines .swp_tumblr a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_tumblr a{color:#39475d}.swp_social_panel.swp_default_color_outlines .swp_mix a,html body .swp_social_panel.swp_individual_color_outlines .swp_mix a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_mix a{color:#f4812c}.swp_social_panel.swp_default_color_outlines .swp_yummly a,html body .swp_social_panel.swp_individual_color_outlines .swp_yummly a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_yummly a{color:#e26426}.swp_social_panel.swp_default_color_outlines .swp_whatsapp a,html body .swp_social_panel.swp_individual_color_outlines .swp_whatsapp a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_whatsapp a{color:#71c169}.swp_social_panel.swp_default_color_outlines .swp_pocket a,html body .swp_social_panel.swp_individual_color_outlines .swp_pocket a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pocket a{color:#ef4056}.swp_social_panel.swp_default_color_outlines .swp_reddit a,html body .swp_social_panel.swp_individual_color_outlines .swp_reddit a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_reddit a{color:#f04b23}.swp_social_panel.swp_default_color_outlines .swp_email a,html body .swp_social_panel.swp_individual_color_outlines .swp_email a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_email a{color:#6bcce9}.swp_social_panel.swp_default_color_outlines .swp_buffer a,html body .swp_social_panel.swp_individual_color_outlines .swp_buffer a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_buffer a{color:#323b43}.swp_social_panel.swp_default_color_outlines .swp_hacker_news a,html body .swp_social_panel.swp_individual_color_outlines .swp_hacker_news a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_hacker_news a{color:#f16522}.swp_social_panel.swp_default_color_outlines .swp_flipboard a,html body .swp_social_panel.swp_individual_color_outlines .swp_flipboard a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard a{color:#e02828}.swp_social_panel.swp_default_color_outlines .swp_google_plus,html body .swp_social_panel.swp_individual_color_outlines .swp_google_plus:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_google_plus{background:transparent;border:1px solid #df4b37}.swp_social_panel.swp_default_color_outlines .swp_twitter,html body .swp_social_panel.swp_individual_color_outlines .swp_twitter:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_twitter{background:transparent;border:1px solid #429cd6}.swp_social_panel.swp_default_color_outlines .swp_facebook,html body .swp_social_panel.swp_individual_color_outlines .swp_facebook:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_facebook{background:transparent;border:1px solid #4267B2}.swp_social_panel.swp_default_color_outlines .swp_pinterest,html body .swp_social_panel.swp_individual_color_outlines .swp_pinterest:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pinterest{background:transparent;border:1px solid #cd2029}.swp_social_panel.swp_default_color_outlines .swp_linkedin,html body .swp_social_panel.swp_individual_color_outlines .swp_linkedin:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_linkedin{background:transparent;border:1px solid #0d77b7}.swp_social_panel.swp_default_color_outlines .swp_tumblr,html body .swp_social_panel.swp_individual_color_outlines .swp_tumblr:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_tumblr{background:transparent;border:1px solid #39475d}.swp_social_panel.swp_default_color_outlines .swp_mix,html body .swp_social_panel.swp_individual_color_outlines .swp_mix:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_mix{background:transparent;border:1px solid #f4812c}.swp_social_panel.swp_default_color_outlines .swp_yummly,html body .swp_social_panel.swp_individual_color_outlines .swp_yummly:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_yummly{background:transparent;border:1px solid #e26426}.swp_social_panel.swp_default_color_outlines .swp_whatsapp,html body .swp_social_panel.swp_individual_color_outlines .swp_whatsapp:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_whatsapp{background:transparent;border:1px solid #71c169}.swp_social_panel.swp_default_color_outlines .swp_reddit,html body .swp_social_panel.swp_individual_color_outlines .swp_reddit:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_reddit{background:transparent;border:1px solid #f04b23}.swp_social_panel.swp_default_color_outlines .swp_email,html body .swp_social_panel.swp_individual_color_outlines .swp_email:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_email{background:transparent;border:1px solid #6bcce9}.swp_social_panel.swp_default_color_outlines .swp_pocket,html body .swp_social_panel.swp_individual_color_outlines .swp_pocket:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_pocket{background:transparent;border:1px solid #ef4056}.swp_social_panel.swp_default_color_outlines .swp_buffer,html body .swp_social_panel.swp_individual_color_outlines .swp_buffer:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_buffer{background:transparent;border:1px solid #323b43}.swp_social_panel.swp_default_color_outlines .swp_hacker_news,html body .swp_social_panel.swp_individual_color_outlines .swp_hacker_news:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_hacker_news{background:transparent;border:1px solid #f16522}.swp_social_panel.swp_default_color_outlines .swp_flipboard,html body .swp_social_panel.swp_individual_color_outlines .swp_flipboard:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_flipboard{background:transparent;border:1px solid #bf2626}.swp_social_panelSide{flex-direction:column;height:auto;overflow:visible;-webkit-transition:all 0.2s linear;transition:all 0.2s linear;z-index:9998;margin:10px 5px!important;padding:0;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column}.swp_social_panelSide.slide,.swp_social_panelSide.fade{position:fixed;-webkit-transition:all 0.2s linear;transition:all 0.2s linear}.swp_social_panelSide.fade.swp_float_left{left:5px}.swp_social_panelSide.fade.swp_float_right{right:5px}.swp_social_panelSide[class*=swp_side]{height:auto;display:flex;position:fixed;padding:30px 0}.swp_social_panelSide.fade{display:none}.swp_social_panelSide.swp_float_right{align-content:flex-end}.swp_social_panelSide.swp_side_top{top:15px}.swp_social_panelSide.swp_side_bottom{bottom:15px}.swp_social_panelSide.swp_side_center{}.swp_social_panelSide .nc_tweetContainer{-webkit-border-radius:3px;border-radius:3px;clear:both;display:block;font-family:Lato,sans-serif;height:32px;margin:3px 0!important;overflow:hidden;padding:0;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top;width:90px}.swp_social_panelSide .nc_tweetContainer .iconFiller{display:inline-block;height:40px;margin:0 6px;padding:0;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:middle;width:21px}.swp_social_panelSide .nc_tweetContainer .swp_count{display:inline-block;font-size:14px;height:32px;line-height:16px;margin:0;overflow:hidden;padding:0;text-align:right;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top;width:0}.swp_social_panelSide .nc_tweetContainer a{cursor:pointer;display:block;font-weight:500;height:36px;margin:0;padding:0;text-decoration:none;-webkit-transition:all 0.1s linear;transition:all 0.1s linear;vertical-align:top}.swp_social_panelSide .nc_tweetContainer .sw,.swp_social_panelSide .nc_tweetContainer .swp_share{float:left;line-height:34px}.swp_social_panelSide.swp_default .nc_tweetContainer .sw{line-height:32px}.swp_social_panelSide.swp_default .nc_tweetContainer .swp_share{line-height:30px}.swp_social_panelSide .nc_tweetContainer .swp_share{font-size:13px}.swp_social_panelSide .nc_tweetContainer:hover,.swp_social_panelSide .nc_tweetContainer:hover .iconFiller,.swp_social_panelSide .nc_tweetContainer:hover .swp_count{-webkit-transition:all 0.1s linear;transition:all 0.1s linear}.swp_social_panelSide.swp_boxed .nc_tweetContainer,.swp_social_panelSide.swp_circles .nc_tweetContainer{margin-bottom:5px;width:67.5px!important}.swp_social_panelSide.swp_boxed .nc_tweetContainer,.swp_social_panelSide.swp_boxed .nc_tweetContainer a,.swp_social_panelSide.swp_circles .nc_tweetContainer,.swp_social_panelSide.swp_circles .nc_tweetContainer a{width:67.5px;height:67.5px!important;position:relative}.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) a{border-radius:50%!important}.swp_social_panelSide.swp_boxed .nc_tweetContainer i.sw,.swp_social_panelSide.swp_circles .nc_tweetContainer i.sw{font-size:27px;height:40px;margin:0;padding-top:10px;text-align:center;width:100%}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_share,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_share{height:35px;opacity:0;position:absolute;bottom:0;left:0;text-align:center;width:67.5px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_count,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_count{height:35px;margin:0;padding:0;position:absolute;bottom:0;left:0;text-align:center;-webkit-transition:padding 0.1s linear;transition:padding 0.1s linear;width:100%}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) span.swp_count.swp_hide,.swp_social_panelSide.swp_boxed .nc_tweetContainer span.swp_hide .iconFiller,.swp_social_panelSide.swp_boxed .nc_tweetContainer span.swp_hide .spaceManWilly,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) span.swp_count.swp_hide,.swp_social_panelSide.swp_circles .nc_tweetContainer span.swp_hide .iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer span.swp_hide .spaceManWilly{height:67.5px;opacity:1}.swp_social_panelSide.swp_boxed .nc_tweetContainer span.iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer span.iconFiller{height:40px;width:67.5px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover span.swp_count:not(.swp_hide),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover span.swp_count:not(.swp_hide){opacity:0}.swp_social_panelSide.swp_boxed .total_shares,.swp_social_panelSide.swp_circles .total_shares{padding:0;width:67.5px!important}.swp_social_panelSide .nc_tweetContainer:not(.total_shares){line-height:34px}.swp_social_panelSide:not(.swp_boxed):not(.swp_circles) .nc_tweetContainer:not(.total_shares) .iconFiller{margin-left:2px;width:30px}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count{padding:0 8px;width:48px}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count.swp_hide{padding:0;width:100%}.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .swp_count.swp_hide .iconFiller{display:block;float:none;margin:0 auto}.swp_social_panelSide:not(.swp_boxed):not(.swp_circles) .nc_tweetContainer:not(.total_shares):hover{width:150px}.swp_social_panelSide .nc_tweetContainer[data-network]:not(.total_shares):hover .iconFiller,.swp_social_panelSide .nc_tweetContainer:not(.total_shares) .spaceManWilly{width:90px}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover .iconFiller,.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) .spaceManWilly,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover .iconFiller,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) .spaceManWilly{width:100%}.swp_social_panelSide .nc_tweetContainer.total_shares{background:rgba(0,0,0,0);border:0!important;font-weight:800;height:55px;margin:0;padding:0;text-align:center;width:90px;order:-100}.swp_social_panelSide .nc_tweetContainer.total_shares .swp_count{color:#444;display:block;font-family:Lato,sans-serif;height:28px;text-align:center;width:100%}.swp_social_panelSide .nc_tweetContainer.total_shares .swp_label{color:#444;display:block;font-family:Lato,sans-serif;font-size:50%;position:relative;text-align:center;width:100%}.nc_wrapper{background:white;position:fixed;-webkit-transition:top 0.5s bottom 0.5s;transition:top 0.5s bottom 0.5s;width:100%;z-index:99999}.nc_wrapper.bottom{bottom:0;left:0}.nc_wrapper.top{top:0;left:0}.nc_floater{margin:10px 0;position:relative}.swp_social_panelSide.hideCounts a{text-align:center}.swp_social_panelSide.hideCounts .iconFiller{float:none;text-align:left}.sw{display:inline-block;font-family:sw-icon-font!important;font-size:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-rendering:auto;text-transform:none!important;-ms-transform:translate(0,0);-webkit-transform:translate(0,0);transform:translate(0,0)}.sw:before{display:block!important}.wp-editor-container .sw:before{font-size:18px;line-height:22px}.wp-editor-container .sw-social-warfare:before{color:#ee464f}.mce-container .sw-social-warfare{color:#ee464f;font-size:20px;margin-right:15px;vertical-align:middle}.mce-ico.sw-social-warfare:before{color:#ee464f}.mce-ico.sw-social-warfare{color:#ee464f}i.swp_google_plus_icon:before{content:"h"}i.swp_pinterest_icon:before{content:"b"}i.swp_twitter_icon:before{content:"s"}i.swp_facebook_icon:before{content:"j"}i.swp_linkedin_icon:before{content:"f"}i.swp_tumblr_icon:before{content:"r"}i.swp_mix_icon:before{content:"g"}i.swp_reddit_icon:before{content:"a"}i.swp_email_icon:before{content:"k"}i.swp_yummly_icon:before{content:"x"}i.swp_whatsapp_icon:before{content:"y"}i.swp_pocket_icon:before{content:"B"}i.swp_buffer_icon:before{content:"z"}i.swp_hacker_news_icon:before{content:"D"}i.swp_flipboard_icon:before{content:"C"}i.swp_vimeo_icon:before{content:"t"}i.swp_instagram_icon:before{content:"d"}i.swp_blogger_icon:before{content:"m"}i.swp_medium_icon:before{content:"e"}i.swp_periscope_icon:before{content:"c"}i.swp_snapchat_icon:before{content:"u"}i.swp_ello_icon:before{content:"l"}i.swp_flickr_icon:before{content:"i"}.sw-social-warfare:before{content:"p"}.swp_CTT{text-decoration:none!important}.sw-tweet-clear{zoom:1}.sw-tweet-clear:after{clear:both;content:".";display:block;height:0;visibility:hidden}.sw-click-to-tweet{display:block;margin:15px 0;padding:15px 30px;position:relative}.sw-click-to-tweet:after{clear:both;content:".";display:block;height:0;line-height:0;visibility:hidden}.sw-click-to-tweet .sw-ctt-text{margin:0 0 10px;padding:0;position:relative;word-wrap:break-word}a .sw-click-to-tweet .sw-ctt-text{display:block;font-size:24px;font-weight:500;line-height:140%;margin:0;padding:0;position:relative;text-decoration:none;text-transform:none}.sw-click-to-tweet .sw-ctt-btn{display:block;float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:bold;line-height:100%;margin:10px 0 0;padding:3px 5px 3px 3px;position:relative;text-decoration:none;text-transform:uppercase}.sw-click-to-tweet i.swp_twitter_icon{float:right;font-size:21px;margin-left:15px!important;margin-top:2px;text-transform:none}a.swp_CTT.style1 .sw-click-to-tweet{background-color:#fff;border:1px solid #ddd;-webkit-border-radius:4px;border-radius:4px}a.swp_CTT.style2 .sw-click-to-tweet{background-color:#fff;border:4px double #ddd;-webkit-border-radius:0;border-radius:0}a.style2 .sw-click-to-tweet .sw-ctt-text{color:#666;font-style:italic;text-decoration:none}a.swp_CTT.style3:hover .sw-click-to-tweet{border-left:10px solid #3c87b2;padding-right:20px;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style3 .sw-click-to-tweet{background-color:#429cd6;border:none;border-left:10px solid #429cd6;-webkit-border-radius:0;border-radius:0;padding-right:20px;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.style3 .sw-click-to-tweet .sw-ctt-text{color:#fff;font-style:italic;text-decoration:none}a.swp_CTT.style4:hover .sw-click-to-tweet{border-left:10px solid #3c87b2;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style4 .sw-click-to-tweet{background-color:#333;border-left:10px solid #c33;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style5:hover .sw-click-to-tweet{background-color:#d34250;border-left:10px solid #30394f;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style5 .sw-click-to-tweet{background-color:#30394f;border-left:10px solid #d34250;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style6:hover .sw-click-to-tweet{background-color:#ced3dc;border-left:10px solid #d34250;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.swp_CTT.style6 .sw-click-to-tweet{background-color:#eee;border-left:10px solid #d34250;-webkit-border-radius:0;border-radius:0;-webkit-transition:all 0.25s linear;transition:all 0.25s linear}a.style6 .sw-click-to-tweet i.swp_twitter{color:#30394f}.swp_pop_thumb{-webkit-border-radius:3px;border-radius:3px;float:left;height:100px;margin:5px 25px 5px 0;width:100px}.swp_popular_post{clear:both}.swp_clearfix:after{clear:both;content:" ";display:block;height:0;visibility:hidden}.swp_popular_post a.swp_popularity{border:none;display:block;line-height:1.5;margin:20px 0}span.swp_pop_count{display:block;font-size:70%}.swp_widget_box{-webkit-border-radius:3px;border-radius:3px}div.sw-pinit{display:table!important;line-height:0;position:relative!important}div.sw-pinit a.sw-pinit-button,div.sw-pinit a.sw-pinit-button:visited{background:#cd2029;border:1px solid #aa1b29;border:0;border-bottom:none;-webkit-border-radius:4px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;font-family:Lato,sans-serif;font-size:15px;height:32px;line-height:32px;opacity:0;padding:0 20px;position:absolute;text-decoration:none;text-decoration:none;-webkit-transition:opacity 0.5s;transition:opacity 0.5s;z-index:200}.wp-block-gallery div.sw-pinit a.sw-pinit-button,.blocks-gallery-item div.sw-pinit a.sw-pinit-button,.blocks-gallery-item div.sw-pinit a.sw-pinit-button:visited{height:34px!important;width:120px!important;text-align:center}div.sw-pinit:hover a.sw-pinit-button,div.sw-pinit:focus a.sw-pinit-button{opacity:1}div.sw-pinit a.sw-pinit-button::before{color:#fff;content:"b";float:left;font-family:sw-icon-font;font-size:20px;font-weight:400;line-height:36px;margin-left:-5px;margin-right:10px}div.sw-pinit a.sw-pinit-button:hover::before{content:"F"}div.sw-pinit a.sw-pinit-button:hover,div.sw-pinit a.sw-pinit-button:focus{background:#aa1b29;color:#fff;text-decoration:none}div.sw-pinit .sw-pinit-left{left:30px}div.sw-pinit .sw-pinit-center{margin-left:-60px;left:50%}div.sw-pinit .sw-pinit-right{right:30px}div.sw-pinit .sw-pinit-top{top:30px}div.sw-pinit .sw-pinit-middle{margin-top:-25px;top:50%}div.sw-pinit .sw-pinit-bottom{bottom:30px}.swp_social_panel.notMobile .nc_tweetContainer:nth-last-child(1),.mobile .nc_tweetContainer:nth-last-child(2),.nc_tweetContainer.total_shares:nth-last-child(1){margin-right:0}.swp_social_panel.swp_default_full_color a,html body .swp_social_panel.swp_individual_full_color .nc_tweetContainer:hover a,body .swp_social_panel.swp_other_full_color:hover a,.swp_social_panel.swp_default_light_gray a,html body .swp_social_panel.swp_individual_light_gray .nc_tweetContainer:hover a,body .swp_social_panel.swp_other_light_gray:hover a,.swp_social_panel.swp_default_medium_gray a,html body .swp_social_panel.swp_individual_medium_gray a:hover,body .swp_social_panel.swp_other_medium_gray:hover a,.swp_social_panel.swp_default_dark_gray a,html body .swp_social_panel.swp_individual_dark_gray a:hover,body .swp_social_panel.swp_other_dark_gray:hover a{color:white}.swp_social_panel.swp_default_color_outlines .swp_twitter a,html body .swp_social_panel.swp_individual_color_outlines .swp_twitter a:hover,body .swp_social_panel.swp_other_color_outlines:hover .swp_twitter a,.wp-editor-container .swp_twitter:before,a.style1 .sw-click-to-tweet i.swp_twitter,a.style2 .sw-click-to-tweet i.swp_twitter{color:#429cd6}.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares) .swp_hide span.swp_share,.swp_social_panelSide.swp_boxed .nc_tweetContainer:not(.total_shares):hover span.swp_share:not(.swp_hide),.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares) .swp_hide span.swp_share,.swp_social_panelSide.swp_circles .nc_tweetContainer:not(.total_shares):hover span.swp_share:not(.swp_hide){opacity:1}.swp_social_panel.mobile .iconFiller ~ .swp_count,.sw-content-locator{display:none}a.style1 .sw-click-to-tweet .sw-ctt-text,a.style1 .sw-click-to-tweet .sw-ctt-btn{color:#999;text-decoration:none}a.style1:hover .sw-click-to-tweet .sw-ctt-text,a.style1:hover .sw-click-to-tweet .sw-ctt-btn,a.style2:hover .sw-click-to-tweet .sw-ctt-text,a.style2 .sw-click-to-tweet .sw-ctt-btn,a.style2:hover .sw-click-to-tweet .sw-ctt-btn{color:#666;text-decoration:none}a.style3:hover .sw-click-to-tweet .sw-ctt-text,a.style3 .sw-click-to-tweet .sw-ctt-btn,a.style3:hover .sw-click-to-tweet .sw-ctt-btn,a.style3 .sw-click-to-tweet i.swp_twitter,a.style4 .sw-click-to-tweet .sw-ctt-text,a.style4:hover .sw-click-to-tweet .sw-ctt-text,a.style4 .sw-click-to-tweet .sw-ctt-btn,a.style4:hover .sw-click-to-tweet .sw-ctt-btn,a.style5 .sw-click-to-tweet .sw-ctt-text,a.style5:hover .sw-click-to-tweet .sw-ctt-text,a.style5 .sw-click-to-tweet .sw-ctt-btn,a.style5:hover .sw-click-to-tweet .sw-ctt-btn{color:#fff;text-decoration:none}a.style4 .sw-click-to-tweet i.swp_twitter,a.style5 .sw-click-to-tweet i.swp_twitter{color:#fff}a.style6 .sw-click-to-tweet .sw-ctt-text,a.style6 .sw-click-to-tweet .sw-ctt-btn{color:#30394f;text-decoration:none}a.style6:hover .sw-click-to-tweet .sw-ctt-text,a.style6:hover .sw-click-to-tweet .sw-ctt-btn,a.style6:hover .sw-click-to-tweet i.swp_twitter{color:#2a2d34;text-decoration:none}.scale-70{-ms-transform:scale(0.7);-webkit-transform:scale(0.7);transform:scale(0.7)}.swp_social_panel:not(.nc_floater).scale-70.scale-full_width{width:142.8571428571429%!important}.scale-80{-ms-transform:scale(0.8);-webkit-transform:scale(0.8);transform:scale(0.8)}.swp_social_panel:not(.nc_floater).scale-80.scale-full_width{width:125%!important}.scale-90{-ms-transform:scale(0.9);-webkit-transform:scale(0.9);transform:scale(0.9)}.swp_social_panel:not(.nc_floater).scale-90.scale-full_width{width:111.111111111111%!important}.scale-110{-ms-transform:scale(1.1);-webkit-transform:scale(1.1);transform:scale(1.1)}.swp_social_panel:not(.nc_floater).scale-110.scale-full_width{width:90.90909090909091%!important}.scale-120{-ms-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2)}.swp_social_panel:not(.nc_floater).scale-120.scale-full_width{width:83.33333333333333%!important}.scale-130{-ms-transform:scale(1.3);-webkit-transform:scale(1.3);transform:scale(1.3)}.swp_social_panel:not(.nc_floater).scale-130.scale-full_width{width:76.92307692307692%!important}.scale-140{-ms-transform:scale(1.4);-webkit-transform:scale(1.4);transform:scale(1.4)}.swp_social_panel:not(.nc_floater).scale-140.scale-full_width{width:71.42857142857143%!important}.scale-full_width,.scale-left,.nc_floater.scale-center,.nc_floater.scale-right{-ms-transform-origin:left;-webkit-transform-origin:left;transform-origin:left}.scale-right{-ms-transform-origin:right;-webkit-transform-origin:right;transform-origin:right}.scale-center{-ms-transform-origin:center;-webkit-transform-origin:center;transform-origin:center}div.swp_social_panel .nc_tweetContainer.swp_emphasize{-webkit-box-flex:2;-moz-box-flex:2;-webkit-flex:2;-ms-flex:2;flex:2}.sw-pinit.aligncenter{margin:0 auto}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){div.sw-pinit{display:inline-block!important;max-width:100%}}.swp_hidden_pin_image{height:0;opacity:0;position:absolute;top:0;width:0;z-index:-10}.fl-module-content .uabb-blog-posts .uabb-post-thumbnail .sw-pinit.lazyloaded{display:block!important}.swp-content-locator{display:none!important;margin:0!important}.float-position-top-left{transform-origin:top left}.float-position-center-left{transform-origin:center left}.float-position-bottom-left{transform-origin:bottom left}.float-position-top-right{transform-origin:top right}.float-position-center-right{transform-origin:center right}.float-position-bottom-right{transform-origin:bottom right}div[class*=custom_color][class^=_wrapper]{display:none}.swp-pinterest-image-top{margin-bottom:20px}.swp_modern,.swp_dark{background:#fff;height:62px;padding:0;border-radius:8px;border:1px solid #eee;box-shadow:0 2px 4px 0 rgba(0,0,0,0.01),0 4px 5px 0 rgba(0,0,0,0.014),0 4px 15px 0 rgba(0,0,0,0.09)}.swp_modern .swp_share_button,.swp_dark .swp_share_button{border:none!important;border-radius:0!important;margin:0!important;height:60px!important;padding-bottom:1px}.swp_modern .swp_share_button.total_shares.total_sharesalt,.swp_dark .swp_share_button.total_shares.total_sharesalt{padding:15px!important}.swp_modern .swp_share_link,.swp_dark .swp_share_link{border-radius:0;padding:15px;height:60px!important}.swp_modern .iconFiller,.swp_dark .iconFiller{margin-bottom:10px!important}.swp_modern .nc_wrapper.bottom,.swp_dark .nc_wrapper.bottom{background:transparent!important}.swp_dark .swp_share_button{background:#222!important;border-color:#222!important;margin:0!important;height:62px!important}.swp_dark .total_shares.total_sharesalt,.swp_dark .swp_count,.swp_dark .swp_label{}.swp_dark .swp_share_link:hover{background:#444}.swp-blogger{background:#f57d00;border-color:#fefefe}.swp-blogger a{color:#f57d00}.swp-blogger a:hover{background:#f57d00;color:#fff}.swp-ello{background:#000;border-color:#fff}.swp-ello a{color:#000}.swp-facebook a:hover{background:#fff;color:#000}.swp-facebook{background:#4267B2;border-color:#324E85}.swp-facebook a{color:#4267B2}.swp-facebook a:hover{background:#324E85;color:#fff}.swp-flickr{background:#0063dc;border-color:#ff0084}.swp-flickr a{color:#0063dc}.swp-flickr a:hover{background:#ff0084;color:#fff}.swp-instagram{background:#E4425F;border-color:#DA3075}.swp-instagram a{color:#E4425F}.swp-instagram a:hover{background:#DA3075;color:#fff}.swp-linkedin{background:#0D77B7;border-color:#0D6C9C}.swp-linkedin a{color:#0D77B7}.swp-linkedin a:hover{background:#0D6C9C;color:#fff}.swp-medium{background:#00ab6c;border-color:#fefefe}.swp-medium a{color:#00ab6c}.swp-medium a:hover{background:#00ab6c;color:#fff}.swp-periscope{background:#40a4c4;border-color:#e94f3c}.swp-periscope a{color:#40a4c4}.swp-periscope a:hover{background:#e94f3c;color:#fff}.swp-pinterest{background:#CD202A;border-color:#AC1F25}.swp-pinterest a{color:#CD202A}.swp-pinterest a:hover{background:#AC1F25;color:#fff}.swp-reddit{background:#F04B23;border-color:#D33F27}.swp-reddit a{color:#F04B23}.swp-reddit a:hover{background:#D33F27;color:#fff}.swp-snapchat{background:#fffc00;border-color:#000}.swp-snapchat a{color:#000}.swp-snapchat a:hover{background:#fffc00;color:#000}.swp-tumblr{background:#39475D;border-color:#27313F}.swp-tumblr a{color:#39475D}.swp-tumblr a:hover{background:#27313F;color:#fff}.swp-twitter{background:#429CD6;border-color:#3C87B2}.swp-twitter a{color:#429CD6}.swp-twitter a:hover{background:#3C87B2;color:#fff}.swp-vimeo{background:#21B7EB;border-color:#069BD1}.swp-vimeo a{color:#21B7EB}.swp-vimeo a:hover{background:#069BD1;color:#fff}
assets/css/style.scss ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .swp_modern {
2
+ background: #fff;
3
+ height: 62px;
4
+ padding: 0;
5
+ border-radius: 8px;
6
+ border: 1px solid #eee;
7
+ box-shadow: 0 2px 4px 0 rgba(0,0,0,.01), 0 4px 5px 0 rgba(0,0,0,.014), 0 4px 15px 0 rgba(0,0,0,.09);
8
+
9
+ .swp_share_button {
10
+ border: none !important;
11
+ border-radius: 0 !important;
12
+ margin: 0 !important;
13
+ height: 60px !important;
14
+ padding-bottom: 1px;
15
+
16
+ &.total_shares.total_sharesalt {
17
+ padding: 15px !important;
18
+ }
19
+ }
20
+
21
+ .swp_share_link {
22
+ border-radius: 0;
23
+ padding: 15px;
24
+ height: 60px !important;
25
+ }
26
+
27
+ .iconFiller {
28
+ margin-bottom: 10px !important;
29
+ }
30
+
31
+ .nc_wrapper.bottom {
32
+ background: transparent !important;
33
+ }
34
+ }
35
+
36
+ .swp_minimal {
37
+ @extend .swp_modern;
38
+
39
+ .swp_share_button {
40
+ background: #222 !important;
41
+ border-color: #222 !important;
42
+ margin: 0 !important;
43
+ height: 62px !important;
44
+ }
45
+
46
+ .total_shares.total_sharesalt,
47
+ .swp_count,
48
+ .swp_label {
49
+ color: #999 !important;
50
+ }
51
+
52
+ .swp_share_link:hover {
53
+ background: #444;
54
+ }
55
+ }
assets/fonts/sw-icon-font.eot CHANGED
Binary file
assets/fonts/sw-icon-font.svg CHANGED
@@ -38,4 +38,5 @@
38
  <glyph glyph-name="medium" unicode="&#101;" d="M109 347c0 5-2 10-5 13l-35 43 0 7 112 0 86-189 75 189 106 0 0-7-30-29c-2-3-4-6-4-9l0-216c0-3 0-7 4-8l30-29 0-6-150 0 0 6 30 30c3 4 3 4 3 8l0 173-86-219-11 0-101 219 0-147c-2-6 1-13 5-18l40-49 0-7-114 0 0 7 40 51c5 5 6 11 5 18z"/>
39
  <glyph glyph-name="mix" unicode="&#103;" d="M70 418l0-288c0-47 72-48 72 0l0 196c7 44 72 42 72-4l0-144c0-48 80-48 80 0l0 96c5 44 72 43 72-4l0-19c0-49 72-46 72 0l0 167z"/>
40
  <glyph glyph-name="instagram" unicode="&#100;" d="M448 333c-2 19-3 33-10 48-4 14-11 24-22 35-11 11-21 18-35 22-15 7-29 10-48 10-21 2-27 2-77 2-51 0-58 0-77-2-19 0-33-3-48-10-14-4-24-11-35-22-11-11-18-21-22-35-7-15-10-29-10-48-2-21-2-27-2-77 0-51 0-58 2-77 2-19 3-33 10-48 4-14 11-24 22-35 11-11 21-18 35-22 15-5 29-8 48-10 19-2 27-2 77-2 51 0 58 0 77 2 19 2 33 3 48 10 14 4 24 12 35 22 11 11 18 21 22 35 5 15 8 29 10 48 2 19 2 27 2 77 0 51 0 58-2 77z m-45-152c0-18-3-27-6-34-3-8-7-13-13-19-6-6-11-10-19-13-7-1-16-5-34-6-19-2-25-2-75-2-50 0-56 0-75 2-18 0-27 3-34 6-8 3-13 7-19 13-6 6-10 11-13 19-1 7-5 16-6 34-2 19-2 25-2 75 0 50 0 56 2 75 0 18 3 27 6 34 3 8 7 13 13 19 6 6 11 10 19 13 7 1 16 5 34 6 19 2 25 2 75 2 50 0 56 0 75-2 18 0 27-3 34-6 8-3 13-7 19-13 6-6 10-11 13-19 1-7 5-16 6-34 2-19 2-25 2-75-2-50-2-56-2-75z m-147 177c-56 0-102-46-102-102 0-56 46-102 102-102 56 0 102 46 102 102 0 56-46 102-102 102z m0-158c-30 0-56 26-56 56 0 30 26 56 56 56 30 0 56-26 56-56 0-30-26-56-56-56z m99 184c-16 0-29-13-29-29 0-16 13-29 29-29 16 0 29 15 29 29 0 15-13 29-29 29z"/>
 
41
  </font></defs></svg>
38
  <glyph glyph-name="medium" unicode="&#101;" d="M109 347c0 5-2 10-5 13l-35 43 0 7 112 0 86-189 75 189 106 0 0-7-30-29c-2-3-4-6-4-9l0-216c0-3 0-7 4-8l30-29 0-6-150 0 0 6 30 30c3 4 3 4 3 8l0 173-86-219-11 0-101 219 0-147c-2-6 1-13 5-18l40-49 0-7-114 0 0 7 40 51c5 5 6 11 5 18z"/>
39
  <glyph glyph-name="mix" unicode="&#103;" d="M70 418l0-288c0-47 72-48 72 0l0 196c7 44 72 42 72-4l0-144c0-48 80-48 80 0l0 96c5 44 72 43 72-4l0-19c0-49 72-46 72 0l0 167z"/>
40
  <glyph glyph-name="instagram" unicode="&#100;" d="M448 333c-2 19-3 33-10 48-4 14-11 24-22 35-11 11-21 18-35 22-15 7-29 10-48 10-21 2-27 2-77 2-51 0-58 0-77-2-19 0-33-3-48-10-14-4-24-11-35-22-11-11-18-21-22-35-7-15-10-29-10-48-2-21-2-27-2-77 0-51 0-58 2-77 2-19 3-33 10-48 4-14 11-24 22-35 11-11 21-18 35-22 15-5 29-8 48-10 19-2 27-2 77-2 51 0 58 0 77 2 19 2 33 3 48 10 14 4 24 12 35 22 11 11 18 21 22 35 5 15 8 29 10 48 2 19 2 27 2 77 0 51 0 58-2 77z m-45-152c0-18-3-27-6-34-3-8-7-13-13-19-6-6-11-10-19-13-7-1-16-5-34-6-19-2-25-2-75-2-50 0-56 0-75 2-18 0-27 3-34 6-8 3-13 7-19 13-6 6-10 11-13 19-1 7-5 16-6 34-2 19-2 25-2 75 0 50 0 56 2 75 0 18 3 27 6 34 3 8 7 13 13 19 6 6 11 10 19 13 7 1 16 5 34 6 19 2 25 2 75 2 50 0 56 0 75-2 18 0 27-3 34-6 8-3 13-7 19-13 6-6 10-11 13-19 1-7 5-16 6-34 2-19 2-25 2-75-2-50-2-56-2-75z m-147 177c-56 0-102-46-102-102 0-56 46-102 102-102 56 0 102 46 102 102 0 56-46 102-102 102z m0-158c-30 0-56 26-56 56 0 30 26 56 56 56 30 0 56-26 56-56 0-30-26-56-56-56z m99 184c-16 0-29-13-29-29 0-16 13-29 29-29 16 0 29 15 29 29 0 15-13 29-29 29z"/>
41
+ <glyph glyph-name="snapchat" unicode="&#117;" d="M259 64c-1 0-1 0-3 0 0 0-2 0-2 0-24 0-40 11-54 22-10 8-21 15-32 16-6 2-11 2-16 2-10 0-18-2-22-3-4 0-7-2-8-2-2 0-5 0-7 5-1 3-1 6-1 10-2 8-4 12-7 12-38 7-49 15-51 20 0 1 0 1 0 3 0 1 2 5 3 5 59 9 85 70 87 72 0 8 0 14-2 19-5 9-18 14-26 16-1 0-4 1-6 1-18 7-19 15-18 18 2 6 10 11 16 11 2 0 4 0 5-1 8-4 15-5 21-5 8 0 13 3 13 5 0 3 0 8 0 12-3 28-5 63 3 82 27 59 83 64 99 64 0 0 8 0 8 0l2 0c16 0 73-5 99-64 10-19 6-54 5-83l0-2c0-3 0-8 0-11 0 0 3-3 11-3 6 0 13 1 19 5 2 1 5 1 7 1 3 0 4 0 6-1 6-2 10-7 10-12 0-4-4-9-18-16-2 0-3-1-6-1-8-3-23-7-26-16-2-5-2-11 2-19 1-4 27-63 86-72 2 0 3-2 3-5 0-2 0-2 0-3-3-7-13-15-51-20-3 0-5-4-6-12 0-4-2-7-2-10-2-3-3-5-5-5-1 0-5 0-8 2-6 1-14 3-22 3-5 0-11 0-16-2-11-1-21-9-32-16-19-11-34-22-58-22z"/>
42
  </font></defs></svg>
assets/fonts/sw-icon-font.ttf CHANGED
Binary file
assets/fonts/sw-icon-font.woff CHANGED
Binary file
assets/js/admin-options-page.js CHANGED
@@ -369,7 +369,11 @@
369
 
370
  // Declare a default lastClass based on the default HTML if we haven't declared one
371
  if ('undefined' === typeof socialWarfare.lastClass) {
372
- socialWarfare.lastClass = 'swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color';
 
 
 
 
373
  }
374
 
375
  // Put together the new classes, remove the old ones, add the new ones, store the new ones for removal next time.
@@ -387,6 +391,10 @@
387
  *********************************************************/
388
 
389
  function updateButtonPreviews() {
 
 
 
 
390
 
391
  //* Maps out the button themes.
392
  var defaults = {
@@ -415,20 +423,39 @@
415
  },
416
  connected: defaults,
417
  shift: defaults,
418
- boxed: defaults
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
419
  };
420
 
421
- // Check if we are on the admin page
422
- if (0 === jQuery('select[name="button_shape"]').length) {
423
- return;
424
- }
425
-
426
  // Update the items and previews on the initial page load
427
  var visualTheme = jQuery('select[name="button_shape"]').val();
428
  var dColorSet = jQuery('select[name="default_colors"]').val();
429
  var iColorSet = jQuery('select[name="single_colors"]').val();
430
  var oColorSet = jQuery('select[name="hover_colors"]').val();
431
 
 
 
 
 
432
  jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove();
433
 
434
  jQuery.each(availableOptions[visualTheme], function(index, value) {
@@ -502,8 +529,19 @@
502
  if('undefined' === typeof socialWarfare.lastClass){
503
  socialWarfare.lastClass = 'swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color';
504
  }
 
505
  // Put together the new classes, remove the old ones, add the new ones, store the new ones for removal next time.
506
  var buttonsClass = 'swp_' + visualTheme + ' swp_default_' + dColorSet + ' swp_individual_' + iColorSet + ' swp_other_' + oColorSet;
 
 
 
 
 
 
 
 
 
 
507
 
508
  jQuery('.swp_social_panel').removeClass(socialWarfare.lastClass).addClass(buttonsClass);
509
 
@@ -784,7 +822,7 @@
784
  jQuery(preview).text(jQuery(textarea).val());
785
  }
786
 
787
- // Addes a tooltip to a network icon, displaying the network's name.
788
  function createTooltip(event) {
789
  var tooltip;
790
  var icon = event.target;
@@ -812,7 +850,7 @@
812
  tooltip = jQuery('<span class="swp-icon-tooltip">' + network + '</span>').css(css).get(0);
813
  jQuery(this).parents(".sw-grid").first().append(tooltip);
814
 
815
- //* When tooltip is wider than icon, center tooltip over the icon.
816
  if (jQuery(tooltip).outerWidth() > jQuery(icon).outerWidth()) {
817
  var delta = jQuery(tooltip).outerWidth() - jQuery(icon).outerWidth();
818
  css.left = css.left - (delta / 2);
369
 
370
  // Declare a default lastClass based on the default HTML if we haven't declared one
371
  if ('undefined' === typeof socialWarfare.lastClass) {
372
+ var panel = $(".swp_social_panel");
373
+ if (!panel.length) {
374
+ return;
375
+ }
376
+ socialWarfare.lastClass = panel.get().className;
377
  }
378
 
379
  // Put together the new classes, remove the old ones, add the new ones, store the new ones for removal next time.
391
  *********************************************************/
392
 
393
  function updateButtonPreviews() {
394
+ // Check if we are on the admin page
395
+ if (0 === jQuery('select[name="button_shape"]').length) {
396
+ return;
397
+ }
398
 
399
  //* Maps out the button themes.
400
  var defaults = {
423
  },
424
  connected: defaults,
425
  shift: defaults,
426
+ boxed: defaults,
427
+ modern: {
428
+ full_color: 'Full Color',
429
+ light_gray: 'Light Gray',
430
+ medium_gray: 'Medium Gray',
431
+ dark_gray: 'Dark Gray',
432
+ light_gray_outlines: 'Light Gray Outlines',
433
+ medium_gray_outlines: 'Medium Gray Outlines',
434
+ dark_gray_outlines: 'Dark Gray Outlines',
435
+ color_outlines: 'Color Outlines',
436
+ custom_color: 'Custom Color',
437
+ custom_color_outlines: 'Custom Color Outlines'
438
+ },
439
+ dark: {
440
+ light_gray_outlines: 'Light Gray Outlines',
441
+ medium_gray_outlines: 'Medium Gray Outlines',
442
+ dark_gray_outlines: 'Dark Gray Outlines',
443
+ color_outlines: 'Color Outlines',
444
+ custom_color: 'Custom Color',
445
+ custom_color_outlines: 'Custom Color Outlines'
446
+ }
447
  };
448
 
 
 
 
 
 
449
  // Update the items and previews on the initial page load
450
  var visualTheme = jQuery('select[name="button_shape"]').val();
451
  var dColorSet = jQuery('select[name="default_colors"]').val();
452
  var iColorSet = jQuery('select[name="single_colors"]').val();
453
  var oColorSet = jQuery('select[name="hover_colors"]').val();
454
 
455
+ var themeOptions = jQuery('select[name="button_shape"]').find('option').map(function(index, option) {
456
+ return option.value;
457
+ });
458
+
459
  jQuery('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove();
460
 
461
  jQuery.each(availableOptions[visualTheme], function(index, value) {
529
  if('undefined' === typeof socialWarfare.lastClass){
530
  socialWarfare.lastClass = 'swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color';
531
  }
532
+
533
  // Put together the new classes, remove the old ones, add the new ones, store the new ones for removal next time.
534
  var buttonsClass = 'swp_' + visualTheme + ' swp_default_' + dColorSet + ' swp_individual_' + iColorSet + ' swp_other_' + oColorSet;
535
+ console.log('last class', socialWarfare.lastClass)
536
+ console.log('updating to new style', visualTheme)
537
+ console.log("class is ", $('.swp_social_panel').get().clasName);
538
+
539
+ console.log('themeOptions', themeOptions)
540
+
541
+ // Remove the previous theme.
542
+ themeOptions.map(function(index, option) {
543
+ jQuery('.swp_social_panel').removeClass('swp_' + option.value);
544
+ })
545
 
546
  jQuery('.swp_social_panel').removeClass(socialWarfare.lastClass).addClass(buttonsClass);
547
 
822
  jQuery(preview).text(jQuery(textarea).val());
823
  }
824
 
825
+ // Addes a tooltip to a network icon, displaying the network's name.
826
  function createTooltip(event) {
827
  var tooltip;
828
  var icon = event.target;
850
  tooltip = jQuery('<span class="swp-icon-tooltip">' + network + '</span>').css(css).get(0);
851
  jQuery(this).parents(".sw-grid").first().append(tooltip);
852
 
853
+ //* When tooltip is wider than icon, center tooltip over the icon.
854
  if (jQuery(tooltip).outerWidth() > jQuery(icon).outerWidth()) {
855
  var delta = jQuery(tooltip).outerWidth() - jQuery(icon).outerWidth();
856
  css.left = css.left - (delta / 2);
assets/js/admin-options-page.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t,o){"use strict";function s(e,o,s,a){var n={customColor:!1,customOutlines:!1};t(o).each(function(e,o){var s=t(o).val();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.customOutlines=!0:n.customColor=!0)}),n.customColor?s.slideDown():s.slideUp(),n.customOutlines?a.slideDown():a.slideUp(),n.customColor||n.customOutlines?(t("body").append('<div id="color-notice"><p><span class="color-dismiss"></span><b>Note:</b> Custom colors will not show up in the preview, but will on your site.</p></div>'),t(".color-dismiss").on("click",function(){t("#color-notice").fadeOut("slow")})):t("#color-notice").length&&t("#color-notice").fadeOut("slow")}function a(t){var o,s;document.body.createTextRange?(o=document.body.createTextRange(),o.moveToElementText(t),o.select()):e.getSelection&&(s=e.getSelection(),o=document.createRange(),o.selectNodeContents(t),s.removeAllRanges(),s.addRange(o))}function n(){var e={};return t("form.sw-admin-settings-form input, form.sw-admin-settings-form select, form.sw-admin-settings-form textarea").each(function(){var o,s=t(this),a=s.attr("name");o="checkbox"===s.attr("type")?s.prop("checked"):s.val(),e[a]=o}),e.order_of_icons={},t(".sw-active i").each(function(){var o=t(this).data("network");e.order_of_icons[o]=o}),e}function l(){var e=t(".sw-top-menu").offset(),o=t(".sw-top-menu").width();t(".sw-top-menu").css({position:"fixed",left:e.left,top:e.top,width:o}),t(".sw-admin-wrapper").css("padding-top","75px")}function i(){t(".sw-tab-selector").on("click",function(e){e.preventDefault(),t("html, body").animate({scrollTop:0},300);var o=t(this).attr("data-link");t(".sw-admin-tab").hide(),t("#"+o).show(),t(".sw-header-menu li").removeClass("sw-active-tab"),t(this).parents("li").addClass("sw-active-tab"),"swp_styles"===o&&socialWarfare.activateHoverStates(),swpConditionalFields()})}function r(){t(".sw-checkbox-toggle").on("click",function(){var e=t(this).attr("status"),o=t(this).attr("field");"on"===e?(t(this).attr("status","off"),t(o).prop("checked",!1)):(t(this).attr("status","on"),t(o).prop("checked",!0)),u(),swpConditionalFields()})}function c(){t("form.sw-admin-settings-form input, form.sw-admin-settings-form select").on("change",function(){swpConditionalFields(),socialWarfare.newOptions=n(),u()}),socialWarfare.defaultOptions=n()}function u(){socialWarfare.newOptions=n(),JSON.stringify(socialWarfare.newOptions)!==JSON.stringify(socialWarfare.defaultOptions)?t(".sw-save-settings").removeClass("sw-navy-button").addClass("sw-red-button"):t(".sw-save-settings").removeClass("sw-red-button").addClass("sw-navy-button")}function p(){t(".sw-save-settings").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,_();var o=n(),s={action:"swp_store_settings",security:swpAdminOptionsData.optionsNonce,settings:o};t.post({url:ajaxurl,data:s,success:function(e){d(),socialWarfare.defaultOptions=n(),u()}})})}function _(){t("body").append('<div class="sw-loading-bg"><div class="sw-loading-message">Saving Changes</div></div>')}function d(){t(".sw-loading-message").html("Success!").removeClass("sw-loading-message").addClass("sw-loading-complete"),t(".sw-loading-bg").delay(1e3).fadeOut(1e3),setTimeout(function(){t(".sw-loading-bg").remove()},2e3)}function m(){var e=(t('select[name="button_shape"]').val(),t('select[name="default_colors"]').val()),o=t('select[name="single_colors"]').val(),s=t('select[name="hover_colors"]').val();t("style.swp_customColorStuff").remove();var a=t('input[name="custom_color"]').val(),n="";"custom_color"!=e&&"custom_color"!=o&&"custom_color"!=s||(n=".swp_social_panel.swp_default_customColor a, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_customColor:hover a {color:white} .swp_social_panel.swp_default_customColor .nc_tweetContainer, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover, body .swp_social_panel.swp_other_customColor:hover .nc_tweetContainer {background-color:"+a+";border:1px solid "+a+";}"),"custom_color_outlines"!=e&&"custom_color_outlines"!=o&&"custom_color_outlines"!=s||(n=n+" .swp_social_panel.swp_default_custom_color_outlines a, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_custom_color_outlines:hover a { color:"+a+"; } .swp_social_panel.swp_default_custom_color_outlines .nc_tweetContainer, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover, body .swp_social_panel.swp_other_custom_color_outlines:hover .nc_tweetContainer { background:transparent; border:1px solid "+a+"; }"),t("head").append('<style type="text/css" class="swp_customColorStuff">'+n+"</style>")}function f(){function e(e){var o=t('select[name="'+e+'"]').val();if(0===o.indexOf("custom")){return e.slice(0,e.indexOf("_"))+"_full_color"}return o}var o=e("button_shape"),s=e("default_colors"),a=e("single_colors"),n=e("hover_colors"),l="swp_"+o+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;void 0===socialWarfare.lastClass&&(socialWarfare.lastClass="swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color");var l="swp_"+o+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;t(".swp_social_panel").removeClass("swp_other_medium_gray"),t(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(l),socialWarfare.lastClass=l}function w(){var e={full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},o={flat_fresh:e,leaf:e,pill:e,three_dee:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray"},connected:e,shift:e,boxed:e};if(0!==t('select[name="button_shape"]').length){var s=t('select[name="button_shape"]').val(),a=t('select[name="default_colors"]').val(),n=t('select[name="single_colors"]').val(),l=t('select[name="hover_colors"]').val();t('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),t.each(o[s],function(e,o){e===a?t('select[name="default_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="default_colors"]').append('<option value="'+e+'">'+o+"</option>"),e===n?t('select[name="single_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="single_colors"]').append('<option value="'+e+'">'+o+"</option>"),e===l?t('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="hover_colors"]').append('<option value="'+e+'">'+o+"</option>"),"custom_color"==a||"custom_color_outlines"==a||"custom_color"==n||"custom_color_outlines"==n||"custom_color"==l||"custom_color_outlines"==l?(t(".customColor_wrapper").slideDown(),m()):t(".customColor_wrapper").slideUp()}),t('select[name="default_colors"], select[name="single_colors"], select[name="hover_colors"]').on("change",f),t('select[name="button_shape"]').on("change",function(){var e=t('select[name="button_shape"]').val(),s=t('select[name="default_colors"]').val(),a=t('select[name="single_colors"]').val(),n=t('select[name="hover_colors"]').val(),l=0,i=o[e],r=i.hasOwnProperty(s),c=i.hasOwnProperty(a),u=i.hasOwnProperty(n);t('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),t.each(o[e],function(e,o){e===s||0==r&&0==l?t('select[name="default_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="default_colors"]').append('<option value="'+e+'">'+o+"</option>"),e===a||0==c&&0==l?t('select[name="single_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="single_colors"]').append('<option value="'+e+'">'+o+"</option>"),e===n||0==u&&0==l?t('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+o+"</option>"):t('select[name="hover_colors"]').append('<option value="'+e+'">'+o+"</option>"),++l}),void 0===socialWarfare.lastClass&&(socialWarfare.lastClass="swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color");var p="swp_"+e+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;t(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(p),socialWarfare.lastClass=p})}}function v(){t('select[name="button_size"],select[name="button_alignment"]').on("change",function(){t(".swp_social_panel").css({width:"100%"});var e,o=t(".swp_social_panel").width(),s=t('select[name="button_size"]').val(),a=t('select[name="button_alignment"]').val();"full_width"==a&&1!=s||s>=1?(e=o/s,t(".swp_social_panel").css("cssText","width:"+e+"px!important;"),t(".swp_social_panel").css({transform:"scale("+s+")","transform-origin":"left"})):"full_width"!=a&&s<1&&(e=o/s,t(".swp_social_panel").css({transform:"scale("+s+")","transform-origin":a})),socialWarfare.activateHoverStates()})}function h(){var e=t('select[name="ctt_theme"]');e.on("change",function(){var e=t('select[name="ctt_theme"]').val();t(".swp_CTT").attr("class","swp_CTT").addClass(e)}),e.trigger("change")}function g(e,o){var s=t(".sw-admin-wrapper");s.attr("swp-addons"),s.attr("swp-registrations");t(".registration-wrapper."+o).attr("registration",e),1===parseInt(e)?(s.attr("sw-registered",e),t(".sw-top-menu").attr("sw-registered",e),C(s,"swp-registrations",o)):y(s,"swp-registrations",o)}function y(e,o,s){var a=t(e).attr(o),n=a.indexOf(s);if(-1!==n){var l=n+s.length,i=a.slice(0,n)+a.slice(l);t(e).attr(o,i)}}function C(e,o,s){var a=t(e).attr(o);a.includes(s)||t(e).attr(o,a+s)}function b(o,s){var a=!1,n={action:"swp_register_plugin",security:swpAdminOptionsData.registerNonce,activity:"register",name_key:o,item_id:s,license_key:t('input[name="'+o+'_license_key"]').val()};return _(),t.post(ajaxurl,n,function(t){t=JSON.parse(t),t.success?(g("1",o),a=!0):alert("Failure: "+t.data),e.location.reload(!0),d()}),a}function O(o,s){var a=!1,n={action:"swp_unregister_plugin",security:swpAdminOptionsData.registerNonce,activity:"unregister",name_key:o,item_id:s};return _(),t.post(ajaxurl,n,function(s){s=JSON.parse(s),s.success?(t('input[name="'+o+'_license_key"]').val(""),g("0",o),a=!0):alert("Failure: "+s.data),e.location.reload(!0),d()}),a}function x(){t(".register-plugin").on("click",function(){return b(t(this).attr("swp-addon"),t(this).attr("swp-item-id")),!1}),t(".unregister-plugin").on("click",function(){return O(t(this).attr("swp-addon"),t(this).attr("swp-item-id")),!1})}function k(){t(".sw-buttons-sort.sw-active").sortable({connectWith:".sw-buttons-sort.sw-inactive",update:function(){u()}}),t(".sw-buttons-sort.sw-inactive").sortable({connectWith:".sw-buttons-sort.sw-active",update:function(){u()}})}function W(){t(".sw-system-status").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,t(".system-status-wrapper").slideToggle(),a(t(".system-status-container").get(0))})}function D(){var e;t(".swp_upload_image_button").click(function(o){o.preventDefault();var s=t(this).attr("for");if(e)return void e.open();e=wp.media.frames.file_frame=wp.media({title:"Choose Image",button:{text:"Choose Image"},multiple:!1}),e.on("select",function(){var o=e.state().get("selection").first().toJSON();t('input[name="'+s+'"').val(o.url)}),e.open()})}function S(){var e=t("#ctt_preview"),o=t("select[name=ctt_theme]");e.length||(e=t('<style id="ctt_preview"></style>'),t("head").append(e)),"none"===t(o).val()&&T(),t(o).on("change",function(e){"none"===e.target.value&&T()}),t("textarea[name=ctt_css]").on("keyup",T)}function T(){var e=t("#ctt_preview"),o=t("textarea[name=ctt_css]");t(e).text(t(o).val())}function N(e){var o,s=e.target,a=t(s).data("network"),n=(s.getBoundingClientRect(),{top:t(s).position().top-50,left:t(s).position().left+4});if(a.indexOf("_")>0){a=a.split("_").map(function(e){return e[0].toUpperCase()+e.slice(1,e.length)}).join(" ")}if(a=a[0].toUpperCase()+a.slice(1,a.length),o=t('<span class="swp-icon-tooltip">'+a+"</span>").css(n).get(0),t(this).parents(".sw-grid").first().append(o),t(o).outerWidth()>t(s).outerWidth()){var l=t(o).outerWidth()-t(s).outerWidth();n.left=n.left-l/2,t(o).css(n)}t(s).on("mousedown",function(e){t("body").mousemove(function(){G(),t("body").off("mousemove")})})}function G(e){t(".swp-icon-tooltip").remove()}function F(){t("[class*='sw-'][class*='-icon']").each(function(e,o){t(o).hover(N,G)})}e.onload=function(){var e="[name=default_colors],[name=hover_colors], [name=single_colors]",o="[name=float_default_colors], [name=float_hover_colors], [name=float_single_colors]";t("[name=custom_color],[name=custom_color_outlines],[name=float_custom_color],[name=float_custom_color_outlines]").parent().parent().hide(),t(e).each(function(e,o){var s=t(o).val(),a=t("[name=custom_color]").parent().parent(),n=t("[name=custom_color_outlines]").parent().parent();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.show():a.show())}),t(o).each(function(e,o){var s=t(o).val(),a=t("[name=float_custom_color]").parent().parent(),n=t("[name=float_custom_color_outlines]").parent().parent();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.show():a.show())}),t(e).on("change",function(o){var a=(o.target.value,t("[name=custom_color]").parent().parent()),n=t("[name=custom_color_outlines]").parent().parent();s(o,e,a,n)}),t(o).on("change",function(e){var a=(e.target.value,t("[name=float_custom_color]").parent().parent()),n=t("[name=float_custom_color_outlines]").parent().parent();a.hide(),n.hide(),s(e,o,a,n)})},t(document).ready(function(){p(),c(),l(),i(),r(),w(),swpConditionalFields(),h(),v(),x(),k(),W(),D(),S(),F()})}(this,jQuery);
1
+ !function(e,o,t){"use strict";function s(e,t,s,a){var n={customColor:!1,customOutlines:!1};o(t).each(function(e,t){var s=o(t).val();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.customOutlines=!0:n.customColor=!0)}),n.customColor?s.slideDown():s.slideUp(),n.customOutlines?a.slideDown():a.slideUp(),n.customColor||n.customOutlines?(o("body").append('<div id="color-notice"><p><span class="color-dismiss"></span><b>Note:</b> Custom colors will not show up in the preview, but will on your site.</p></div>'),o(".color-dismiss").on("click",function(){o("#color-notice").fadeOut("slow")})):o("#color-notice").length&&o("#color-notice").fadeOut("slow")}function a(o){var t,s;document.body.createTextRange?(t=document.body.createTextRange(),t.moveToElementText(o),t.select()):e.getSelection&&(s=e.getSelection(),t=document.createRange(),t.selectNodeContents(o),s.removeAllRanges(),s.addRange(t))}function n(){var e={};return o("form.sw-admin-settings-form input, form.sw-admin-settings-form select, form.sw-admin-settings-form textarea").each(function(){var t,s=o(this),a=s.attr("name");t="checkbox"===s.attr("type")?s.prop("checked"):s.val(),e[a]=t}),e.order_of_icons={},o(".sw-active i").each(function(){var t=o(this).data("network");e.order_of_icons[t]=t}),e}function l(){var e=o(".sw-top-menu").offset(),t=o(".sw-top-menu").width();o(".sw-top-menu").css({position:"fixed",left:e.left,top:e.top,width:t}),o(".sw-admin-wrapper").css("padding-top","75px")}function i(){o(".sw-tab-selector").on("click",function(e){e.preventDefault(),o("html, body").animate({scrollTop:0},300);var t=o(this).attr("data-link");o(".sw-admin-tab").hide(),o("#"+t).show(),o(".sw-header-menu li").removeClass("sw-active-tab"),o(this).parents("li").addClass("sw-active-tab"),"swp_styles"===t&&socialWarfare.activateHoverStates(),swpConditionalFields()})}function r(){o(".sw-checkbox-toggle").on("click",function(){var e=o(this).attr("status"),t=o(this).attr("field");"on"===e?(o(this).attr("status","off"),o(t).prop("checked",!1)):(o(this).attr("status","on"),o(t).prop("checked",!0)),u(),swpConditionalFields()})}function c(){o("form.sw-admin-settings-form input, form.sw-admin-settings-form select").on("change",function(){swpConditionalFields(),socialWarfare.newOptions=n(),u()}),socialWarfare.defaultOptions=n()}function u(){socialWarfare.newOptions=n(),JSON.stringify(socialWarfare.newOptions)!==JSON.stringify(socialWarfare.defaultOptions)?o(".sw-save-settings").removeClass("sw-navy-button").addClass("sw-red-button"):o(".sw-save-settings").removeClass("sw-red-button").addClass("sw-navy-button")}function _(){o(".sw-save-settings").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,p();var t=n(),s={action:"swp_store_settings",security:swpAdminOptionsData.optionsNonce,settings:t};o.post({url:ajaxurl,data:s,success:function(e){m(),socialWarfare.defaultOptions=n(),u()}})})}function p(){o("body").append('<div class="sw-loading-bg"><div class="sw-loading-message">Saving Changes</div></div>')}function m(){o(".sw-loading-message").html("Success!").removeClass("sw-loading-message").addClass("sw-loading-complete"),o(".sw-loading-bg").delay(1e3).fadeOut(1e3),setTimeout(function(){o(".sw-loading-bg").remove()},2e3)}function d(){var e=(o('select[name="button_shape"]').val(),o('select[name="default_colors"]').val()),t=o('select[name="single_colors"]').val(),s=o('select[name="hover_colors"]').val();o("style.swp_customColorStuff").remove();var a=o('input[name="custom_color"]').val(),n="";"custom_color"!=e&&"custom_color"!=t&&"custom_color"!=s||(n=".swp_social_panel.swp_default_customColor a, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_customColor:hover a {color:white} .swp_social_panel.swp_default_customColor .nc_tweetContainer, html body .swp_social_panel.swp_individual_customColor .nc_tweetContainer:hover, body .swp_social_panel.swp_other_customColor:hover .nc_tweetContainer {background-color:"+a+";border:1px solid "+a+";}"),"custom_color_outlines"!=e&&"custom_color_outlines"!=t&&"custom_color_outlines"!=s||(n=n+" .swp_social_panel.swp_default_custom_color_outlines a, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover a, body .swp_social_panel.swp_other_custom_color_outlines:hover a { color:"+a+"; } .swp_social_panel.swp_default_custom_color_outlines .nc_tweetContainer, html body .swp_social_panel.swp_individual_custom_color_outlines .nc_tweetContainer:hover, body .swp_social_panel.swp_other_custom_color_outlines:hover .nc_tweetContainer { background:transparent; border:1px solid "+a+"; }"),o("head").append('<style type="text/css" class="swp_customColorStuff">'+n+"</style>")}function f(){function e(e){var t=o('select[name="'+e+'"]').val();if(0===t.indexOf("custom")){return e.slice(0,e.indexOf("_"))+"_full_color"}return t}var t=e("button_shape"),s=e("default_colors"),a=e("single_colors"),n=e("hover_colors"),l="swp_"+t+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;if(void 0===socialWarfare.lastClass){var i=$(".swp_social_panel");if(!i.length)return;socialWarfare.lastClass=i.get().className}var l="swp_"+t+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;o(".swp_social_panel").removeClass("swp_other_medium_gray"),o(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(l),socialWarfare.lastClass=l}function w(){if(0!==o('select[name="button_shape"]').length){var e={full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},t={flat_fresh:e,leaf:e,pill:e,three_dee:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray"},connected:e,shift:e,boxed:e,modern:{full_color:"Full Color",light_gray:"Light Gray",medium_gray:"Medium Gray",dark_gray:"Dark Gray",light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"},dark:{light_gray_outlines:"Light Gray Outlines",medium_gray_outlines:"Medium Gray Outlines",dark_gray_outlines:"Dark Gray Outlines",color_outlines:"Color Outlines",custom_color:"Custom Color",custom_color_outlines:"Custom Color Outlines"}},s=o('select[name="button_shape"]').val(),a=o('select[name="default_colors"]').val(),n=o('select[name="single_colors"]').val(),l=o('select[name="hover_colors"]').val(),i=o('select[name="button_shape"]').find("option").map(function(e,o){return o.value});o('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),o.each(t[s],function(e,t){e===a?o('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===n?o('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===l?o('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),"custom_color"==a||"custom_color_outlines"==a||"custom_color"==n||"custom_color_outlines"==n||"custom_color"==l||"custom_color_outlines"==l?(o(".customColor_wrapper").slideDown(),d()):o(".customColor_wrapper").slideUp()}),o('select[name="default_colors"], select[name="single_colors"], select[name="hover_colors"]').on("change",f),o('select[name="button_shape"]').on("change",function(){var e=o('select[name="button_shape"]').val(),s=o('select[name="default_colors"]').val(),a=o('select[name="single_colors"]').val(),n=o('select[name="hover_colors"]').val(),l=0,r=t[e],c=r.hasOwnProperty(s),u=r.hasOwnProperty(a),_=r.hasOwnProperty(n);o('select[name="default_colors"] option, select[name="single_colors"] option, select[name="hover_colors"] option').remove(),o.each(t[e],function(e,t){e===s||0==c&&0==l?o('select[name="default_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="default_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===a||0==u&&0==l?o('select[name="single_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="single_colors"]').append('<option value="'+e+'">'+t+"</option>"),e===n||0==_&&0==l?o('select[name="hover_colors"]').append('<option value="'+e+'" selected>'+t+"</option>"):o('select[name="hover_colors"]').append('<option value="'+e+'">'+t+"</option>"),++l}),void 0===socialWarfare.lastClass&&(socialWarfare.lastClass="swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_full_color");var p="swp_"+e+" swp_default_"+s+" swp_individual_"+a+" swp_other_"+n;console.log("last class",socialWarfare.lastClass),console.log("updating to new style",e),console.log("class is ",$(".swp_social_panel").get().clasName),console.log("themeOptions",i),i.map(function(e,t){o(".swp_social_panel").removeClass("swp_"+t.value)}),o(".swp_social_panel").removeClass(socialWarfare.lastClass).addClass(p),socialWarfare.lastClass=p})}}function v(){o('select[name="button_size"],select[name="button_alignment"]').on("change",function(){o(".swp_social_panel").css({width:"100%"});var e,t=o(".swp_social_panel").width(),s=o('select[name="button_size"]').val(),a=o('select[name="button_alignment"]').val();"full_width"==a&&1!=s||s>=1?(e=t/s,o(".swp_social_panel").css("cssText","width:"+e+"px!important;"),o(".swp_social_panel").css({transform:"scale("+s+")","transform-origin":"left"})):"full_width"!=a&&s<1&&(e=t/s,o(".swp_social_panel").css({transform:"scale("+s+")","transform-origin":a})),socialWarfare.activateHoverStates()})}function g(){var e=o('select[name="ctt_theme"]');e.on("change",function(){var e=o('select[name="ctt_theme"]').val();o(".swp_CTT").attr("class","swp_CTT").addClass(e)}),e.trigger("change")}function h(e,t){var s=o(".sw-admin-wrapper");s.attr("swp-addons"),s.attr("swp-registrations");o(".registration-wrapper."+t).attr("registration",e),1===parseInt(e)?(s.attr("sw-registered",e),o(".sw-top-menu").attr("sw-registered",e),C(s,"swp-registrations",t)):y(s,"swp-registrations",t)}function y(e,t,s){var a=o(e).attr(t),n=a.indexOf(s);if(-1!==n){var l=n+s.length,i=a.slice(0,n)+a.slice(l);o(e).attr(t,i)}}function C(e,t,s){var a=o(e).attr(t);a.includes(s)||o(e).attr(t,a+s)}function b(t,s){var a=!1,n={action:"swp_register_plugin",security:swpAdminOptionsData.registerNonce,activity:"register",name_key:t,item_id:s,license_key:o('input[name="'+t+'_license_key"]').val()};return p(),o.post(ajaxurl,n,function(o){o=JSON.parse(o),o.success?(h("1",t),a=!0):alert("Failure: "+o.data),e.location.reload(!0),m()}),a}function O(t,s){var a=!1,n={action:"swp_unregister_plugin",security:swpAdminOptionsData.registerNonce,activity:"unregister",name_key:t,item_id:s};return p(),o.post(ajaxurl,n,function(s){s=JSON.parse(s),s.success?(o('input[name="'+t+'_license_key"]').val(""),h("0",t),a=!0):alert("Failure: "+s.data),e.location.reload(!0),m()}),a}function k(){o(".register-plugin").on("click",function(){return b(o(this).attr("swp-addon"),o(this).attr("swp-item-id")),!1}),o(".unregister-plugin").on("click",function(){return O(o(this).attr("swp-addon"),o(this).attr("swp-item-id")),!1})}function x(){o(".sw-buttons-sort.sw-active").sortable({connectWith:".sw-buttons-sort.sw-inactive",update:function(){u()}}),o(".sw-buttons-sort.sw-inactive").sortable({connectWith:".sw-buttons-sort.sw-active",update:function(){u()}})}function W(){o(".sw-system-status").on("click",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,o(".system-status-wrapper").slideToggle(),a(o(".system-status-container").get(0))})}function D(){var e;o(".swp_upload_image_button").click(function(t){t.preventDefault();var s=o(this).attr("for");if(e)return void e.open();e=wp.media.frames.file_frame=wp.media({title:"Choose Image",button:{text:"Choose Image"},multiple:!1}),e.on("select",function(){var t=e.state().get("selection").first().toJSON();o('input[name="'+s+'"').val(t.url)}),e.open()})}function G(){var e=o("#ctt_preview"),t=o("select[name=ctt_theme]");e.length||(e=o('<style id="ctt_preview"></style>'),o("head").append(e)),"none"===o(t).val()&&S(),o(t).on("change",function(e){"none"===e.target.value&&S()}),o("textarea[name=ctt_css]").on("keyup",S)}function S(){var e=o("#ctt_preview"),t=o("textarea[name=ctt_css]");o(e).text(o(t).val())}function N(e){var t,s=e.target,a=o(s).data("network"),n=(s.getBoundingClientRect(),{top:o(s).position().top-50,left:o(s).position().left+4});if(a.indexOf("_")>0){a=a.split("_").map(function(e){return e[0].toUpperCase()+e.slice(1,e.length)}).join(" ")}if(a=a[0].toUpperCase()+a.slice(1,a.length),t=o('<span class="swp-icon-tooltip">'+a+"</span>").css(n).get(0),o(this).parents(".sw-grid").first().append(t),o(t).outerWidth()>o(s).outerWidth()){var l=o(t).outerWidth()-o(s).outerWidth();n.left=n.left-l/2,o(t).css(n)}o(s).on("mousedown",function(e){o("body").mousemove(function(){T(),o("body").off("mousemove")})})}function T(e){o(".swp-icon-tooltip").remove()}function F(){o("[class*='sw-'][class*='-icon']").each(function(e,t){o(t).hover(N,T)})}e.onload=function(){var e="[name=default_colors],[name=hover_colors], [name=single_colors]",t="[name=float_default_colors], [name=float_hover_colors], [name=float_single_colors]";o("[name=custom_color],[name=custom_color_outlines],[name=float_custom_color],[name=float_custom_color_outlines]").parent().parent().hide(),o(e).each(function(e,t){var s=o(t).val(),a=o("[name=custom_color]").parent().parent(),n=o("[name=custom_color_outlines]").parent().parent();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.show():a.show())}),o(t).each(function(e,t){var s=o(t).val(),a=o("[name=float_custom_color]").parent().parent(),n=o("[name=float_custom_color_outlines]").parent().parent();-1!==s.indexOf("custom")&&(s.indexOf("outlines")>0?n.show():a.show())}),o(e).on("change",function(t){var a=(t.target.value,o("[name=custom_color]").parent().parent()),n=o("[name=custom_color_outlines]").parent().parent();s(t,e,a,n)}),o(t).on("change",function(e){var a=(e.target.value,o("[name=float_custom_color]").parent().parent()),n=o("[name=float_custom_color_outlines]").parent().parent();a.hide(),n.hide(),s(e,t,a,n)})},o(document).ready(function(){_(),c(),l(),i(),r(),w(),swpConditionalFields(),g(),v(),k(),x(),W(),D(),G(),F()})}(this,jQuery);
assets/js/admin.js CHANGED
@@ -1,434 +1,549 @@
1
- /**
2
- *
3
- * Functions for widgets and global utility functions.
4
- *
5
- * @since 1.0.0
6
- * @package SocialWarfare\Admin\Functions
7
- * @copyright Copyright (c) 2018, Warfare Plugins, LLC
8
- * @license GPL-3.0+
9
- */
10
-
11
- var socialWarfareAdmin = socialWarfareAdmin || {};
12
- var swpWidget, widgetSubmit;
13
-
14
- /**
15
- * Show and hide input fields based on conditional values.
16
- *
17
- * This function iterates over each element with the "dep" data attribute. For each
18
- * such dependant element, its parent element controls whether the dependant is shown or hidden
19
- * if the parent's value matches the condition.
20
- *
21
- * @since 3.0.0 Feb 12 2018 | Brought func in from admin-options-page.js and set to global scope; Updated variable names for semantics, switched to Yoda condietionals.
22
- * @since 3.0.0 Feb 14 2018 | Mapped the required array from variable types to string.
23
- *
24
- * @see admin-options-page.js
25
- * @return none
26
- */
27
- function swpConditionalFields() {
28
- // if (typeof jQuery == 'undefined') {
29
- // jQuery = jQuery;
30
- // }
31
-
32
- function swp_selected(name) {
33
- return jQuery('select[name="' + name + '"]').val();
34
- }
35
-
36
- function swp_checked(name) {
37
- return jQuery('[name="' + name + '"]').prop('checked');
38
- }
39
-
40
- function string_to_bool(string) {
41
- if (string === 'true') { string = true };
42
- if (string === 'false'){ string = false };
43
- return string;
44
- }
45
-
46
- // Loop through all the fields that have dependancies
47
- jQuery("[data-dep]").each(function() {
48
- // Fetch the conditional values
49
- var condition = jQuery(this).data('dep');
50
- var required = JSON.parse(JSON.stringify(jQuery(this).data('dep_val')));
51
-
52
- // Check if we're on the options page or somewhere else
53
- if (window.location.href.indexOf("page=social-warfare") === -1) {
54
- var conditionEl = jQuery(this).parents('.widgets-holder-wrap').find('[data-swp-name="' + condition + '"]');
55
- } else {
56
- var conditionEl = jQuery('[name="' + condition + '"]')[0];
57
- }
58
-
59
- var value;
60
-
61
- if (typeof conditionEl === 'undefined') {
62
- conditionEl = jQuery('[name="' + condition + '"]')[0];
63
-
64
- if (typeof conditionEl === 'undefined') {
65
- conditionEl = jQuery('[fieldjQuery=' + condition + ']')[0];
66
- }
67
- }
68
-
69
- // Fetch the value of checkboxes or other input types
70
- if (jQuery(conditionEl).attr('type') == 'checkbox') {
71
- value = jQuery(conditionEl).prop('checked');
72
- } else {
73
- value = jQuery(conditionEl).val();
74
- }
75
-
76
- value = string_to_bool(value);
77
-
78
- //* Options page uses parent visibilty to check. Widget page does not. This could definiitely look better.
79
- // Show or hide based on the conditional values (and the dependancy must be visible in case it is dependant)
80
-
81
- if (window.location.href.indexOf("page=social-warfare") !== -1) {
82
- // If the required value matches and it's parent is also being shown, show this conditional field
83
- if (jQuery.inArray(value, required) !== -1 && jQuery(conditionEl).parent('.sw-grid').is(':visible') ) {
84
- jQuery(this).show();
85
- } else {
86
- jQuery(this).hide();
87
- }
88
- }
89
-
90
- else {
91
- // If the required value matches, show this conditional field
92
- if (jQuery.inArray(value, required) !== -1 || value === required) {
93
- jQuery(this).show();
94
- } else {
95
- jQuery(this).hide();
96
- }
97
- }
98
- });
99
-
100
- if (false === swp_checked('float_style_source') &&
101
- 'custom_color' === swp_selected('float_default_colors')
102
- || 'custom_color_outlines' === swp_selected('float_default_colors')
103
- || 'custom_color' === swp_selected('float_single_colors')
104
- || 'custom_color_outlines' === swp_selected('float_single_colors')
105
- || 'custom_color' === swp_selected('float_hover_colors')
106
- || 'custom_color_outlines' === swp_selected('float_hover_colors')) {
107
- jQuery('.sideCustomColor_wrapper').slideDown();
108
-
109
- } else {
110
- jQuery('.sideCustomColor_wrapper').slideUp();
111
- }
112
- }
113
-
114
- //* Only run on widgets.php
115
- if (window.location.href.indexOf("widgets.php") > -1) {
116
- //* Make sure the elements exist before trying to read them.
117
- //*
118
- var widgetFinder = setInterval(function() {
119
- if (typeof swpWidget !== 'undefined') clearInterval(widgetFinder);
120
-
121
- swpWidget = jQuery("#widgets-right [id*=_swp_popular_posts_widget], [id*=_swp_popular_posts_widget].open")[0];
122
- widgetSubmit = jQuery(swpWidget).find("[idjQuery=savewidget]")[0];
123
-
124
- //* Force swpConditionalFields to run when the widget is opened or saved.
125
- jQuery(swpWidget).on("click", swpConditionalFields);
126
-
127
- jQuery(widgetSubmit).on("click", function() {
128
- setTimeout(swpConditionalFields, 600);
129
- });
130
-
131
- }, 50);
132
- }
133
-
134
- (function(window, jQuery, undefined) {
135
- 'use strict';
136
-
137
- if (typeof jQuery != 'function') {
138
- // moving here until we refactor and use $ agian.
139
- console.log("Social Warfare requires jQuery, or jQuery as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");
140
- return;
141
-
142
- if (typeof jQuery == 'function') {
143
- jQuery = jQuery;
144
- }
145
- else if (typeof window.jQuery == 'function') {
146
- jQuery = window.jQuery
147
- }
148
-
149
- else {
150
- console.log("Social Warfare requires jQuery, or jQuery as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");
151
- return;
152
- }
153
- }
154
-
155
- socialWarfareAdmin.linkLength = function(input) {
156
- var tmp = '';
157
-
158
- for (var i = 0; i < 23; i++) {
159
- tmp += 'o';
160
- }
161
-
162
- return input.replace(/(http:\/\/[\S]*)/g, tmp).length;
163
- };
164
-
165
- function updateCharactersRemaining(containerSelector, characterLimit) {
166
- var input = jQuery("#social_warfare #" + containerSelector);
167
- var container = input.parent();
168
- var remaining = characterLimit - input.val().length
169
-
170
- if (containerSelector == "swp_custom_tweet") {
171
- //* Account for the permalink + whitespace being added to the tweet.
172
- remaining -= jQuery("#sample-permalink").text().length + 1;
173
- }
174
-
175
- if (remaining >= 0) {
176
- container.find(".swp_CountDown").removeClass("swp_red").addClass("swp_blue")
177
- } else {
178
- container.find(".swp_CountDown").removeClass("swp_blue").addClass("swp_red")
179
- }
180
-
181
- container.find(".counterNumber").text(remaining)
182
- }
183
-
184
- function toggleCustomThumbnailFields(show) {
185
- if (typeof show === 'undefined') show = true;
186
-
187
- if (show) {
188
- jQuery(".custom_thumb_size").show();
189
- } else {
190
- jQuery(".custom_thumb_size").hide();
191
- }
192
- }
193
-
194
- function noticeClickHandlers() {
195
- jQuery(".swp-notice-cta").on("click", function(e) {
196
- e.preventDefault();
197
- //* Do not use jQuery to get href.
198
- var link = e.target.getAttribute("href");
199
-
200
- if (typeof link == 'string' && link.length) {
201
- window.open(link);
202
- }
203
-
204
- var parent = jQuery(this).parents(".swp-dismiss-notice");
205
-
206
- jQuery.post({
207
- url: ajaxurl,
208
- data: {
209
- action: 'dismiss',
210
- key: parent.data("key"),
211
- timeframe: this.dataset.timeframe
212
- },
213
- success: function(result) {
214
- result = JSON.parse(result)
215
- if (result) {
216
- parent.slideUp(500);
217
- }
218
- }
219
- });
220
- });
221
- }
222
-
223
- function postEditorCheckboxChange(event) {
224
- event.preventDefault();
225
-
226
- var checked = !(jQuery(this).attr('status') == 'on');
227
- var selector = jQuery(this).attr("field");
228
- var checkbox = jQuery(selector);
229
-
230
- if (checked) {
231
- jQuery(this).attr('status', 'on');
232
- checkbox.prop('checked', true).prop('value', true);
233
- } else {
234
- jQuery(this).attr('status', 'off');
235
- checkbox.prop('checked', false).prop('value', false);
236
- }
237
- }
238
-
239
- /**
240
- * For the inputs which have a text counter, the labels are pushed too
241
- * far above and need to be brought closer.
242
- *
243
- * Top/bottom margins have no apparent effect, so we'll use positioning instead.
244
- *
245
- * @param string textareaID The textarea whose label is too close.
246
- */
247
- function updateTextareaStyle(textareaID) {
248
- var style = {
249
- top: "-25px",
250
- position: "relative"
251
- }
252
-
253
- jQuery("#" + textareaID).css("border-top-right-radius", 0) // Makes the character counter look connected to the input.
254
- .parent().css(style); // Positions the input closer to label.
255
- }
256
-
257
-
258
- function createCharactersRemaining(selector, textLimit) {
259
- var div = '<div class="swp_CountDown"><span class="counterNumber">' + -textLimit + '</span></div>';
260
- updateTextareaStyle(selector)
261
- jQuery("#social_warfare #" + selector).parent().prepend(div);
262
- }
263
-
264
- socialWarfareAdmin.resizeImageFields = function() {
265
- jQuery('ul.swpmb-media-list').each(function(index, mediaList) {
266
- // Check if the media list has been created yet
267
- if (jQuery(mediaList).is(':empty')) {
268
- //* For the Pinterest image placeholder image.
269
- if (jQuery(mediaList).parents(".swpmb-field").attr("class").indexOf("pinterest") > 0) {
270
- var height = jQuery(mediaList).width() * (3 / 2);
271
- } else {
272
- // Setup the Open Graph Image Placeholder
273
- var height = jQuery(mediaList).width() * (9 / 16);
274
- }
275
-
276
- jQuery(mediaList).css("height", height);
277
- } else {
278
- jQuery(mediaList).css("height", "initial");
279
- }
280
- })
281
- }
282
-
283
- /**
284
- * Creates the left, right, and full-width wraps for each container.
285
- * @return {[type]} [description]
286
- */
287
- function fillContainer(container) {
288
- var positions = ['full-width', 'left', 'right'];
289
- var type = jQuery(container).data('type');
290
-
291
- positions.forEach(function(position) {
292
- var className = '.swpmb-' + position;
293
-
294
- if (jQuery(container).find(className)) {
295
- //* Only include child elements with the correct type.
296
- var children = jQuery(container).find(className)
297
- .filter(function(index, child) {
298
- return jQuery(child).hasClass(type)
299
- })
300
- if (children.length) {
301
- var wrap = jQuery(container).find(className + '-wrap');
302
- jQuery(wrap).append(children);
303
- }
304
- }
305
- });
306
- }
307
-
308
- /**
309
- *
310
- * @since 3.x.x | Created
311
- * @since 3.4.0 | Wrote the docblock and added comments.
312
- * @return void
313
- *
314
- */
315
- function putFieldsInContainers() {
316
- jQuery(".swpmb-meta-container[data-type]").map(function(index, container) {
317
- var type = jQuery(this).data('type');
318
- if (!type) {
319
- return;
320
- }
321
-
322
- var field = jQuery(".swpmb-field." + type);
323
-
324
- if (field.length) {
325
- jQuery(this).append(field);
326
- }
327
-
328
- fillContainer(container);
329
- });
330
- }
331
-
332
- function createTextCounters() {
333
- var textCounters = {
334
- "swp_og_title": 60,
335
- "swp_og_description": 150,
336
- "swp_pinterest_description": 500,
337
- "swp_custom_tweet": 280
338
- };
339
-
340
- Object.keys(textCounters).map(function(selector) {
341
- var textLimit = textCounters[selector];
342
-
343
- createCharactersRemaining(selector, textLimit);
344
- updateCharactersRemaining(selector, textLimit);
345
-
346
- jQuery("#social_warfare #" + selector).on("input", function() {
347
- updateCharactersRemaining(selector, textLimit);
348
- });
349
- });
350
- }
351
-
352
- //* This method exists ONLY for version 3.4.1 of Social Warfare.
353
- //* The next version should have a more long-term sustainable way to manage
354
- //* post-editor fields with dependencies.
355
- function setTempConditionalField() {
356
- jQuery('[field=#swp_twitter_use_open_graph]').click(function(event) {
357
- var target = jQuery("#swp_twitter_use_open_graph");
358
-
359
- if (target.attr('value') == 'true') {
360
- jQuery('.swpmb-meta-container[data-type=twitter]').slideUp()
361
- target.attr('value', 'true');
362
- } else {
363
- jQuery('.swpmb-meta-container[data-type=twitter]').slideDown()
364
- target.attr('value', 'false');
365
- }
366
-
367
- socialWarfareAdmin.resizeImageFields();
368
- });
369
- }
370
-
371
-
372
- /**
373
- * The third party module used to create metaboxes (on the server) does not
374
- * provide a way to organize the HTML.
375
- *
376
- * Our fix for this is to create a new parent container with the `data-type`
377
- * attribute. The value of `data-type` represents the group of related
378
- * functionality, such as 'heading', 'open-graph', or 'pinterest'.
379
- *
380
- * Then we move the related content (matched by CSS classnames) into the
381
- * appropriate container using javascript.
382
- *
383
- * @see PHP social-warfare-pro\lib\admin\SWP_Meta_Box_Loader->before_meta_boxes()
384
- */
385
- function displayMetaBox() {
386
- if (!jQuery(jQuery(".swpmb-media-list").length)) return;
387
-
388
- clearInterval(window.initSWMetabox);
389
-
390
- putFieldsInContainers();
391
-
392
- //* Metabox is loaded via Ajax, but we want to resize known images ASAP.
393
- //* Even a couple extra times if need be.
394
- setTimeout(socialWarfareAdmin.resizeImageFields, 600);
395
- setTimeout(socialWarfareAdmin.resizeImageFields, 1400);
396
- setTimeout(socialWarfareAdmin.resizeImageFields, 3000);
397
-
398
- //* Begin Temp code only for 3.4.1
399
- var status = jQuery("#swp_twitter_use_open_graph").val()
400
- if (status == 'false') {
401
- jQuery('.swpmb-meta-container[data-type=twitter]').slideDown()
402
- } else {
403
- jQuery('.swpmb-meta-container[data-type=twitter]').slideUp()
404
- }
405
- setTempConditionalField();
406
- //* End Temp code
407
-
408
- jQuery('ul.swpmb-media-list').find(".swpmb-overlay").click(socialWarfareAdmin.resizeImageFields);
409
- jQuery("#social_warfare.ui-sortable-handle").click(socialWarfareAdmin.resizeImageFields); //* The open/close handle WP gives us. Images need to be resized if it was closed then opened.
410
- socialWarfareAdmin.addImageEditListeners()
411
-
412
- jQuery("#social_warfare.postbox").show();
413
- }
414
-
415
- //* These elements are only created once an image exists
416
- socialWarfareAdmin.addImageEditListeners = function() {
417
- jQuery('.swpmb-edit-media, .swpmb-remove-media').off(socialWarfareAdmin.resizeImageFields);
418
- jQuery('.swpmb-edit-media, .swpmb-remove-media').on(socialWarfareAdmin.resizeImageFields);
419
- }
420
-
421
- jQuery(document).ready(function() {
422
- noticeClickHandlers();
423
-
424
- if (jQuery('#social_warfare.postbox').length) {
425
- createTextCounters();
426
- swpConditionalFields();
427
- jQuery(".sw-checkbox-toggle.swp-post-editor").click(postEditorCheckboxChange);
428
- jQuery('.swp_popular_post_options select').on('change', swpConditionalFields);
429
-
430
- //* Wait for the Rilis metabox to populate itself.
431
- window.initSWMetabox = setInterval(displayMetaBox, 10);
432
- }
433
- });
434
- })(this, jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Functions for widgets and global utility functions.
4
+ *
5
+ * @since 1.0.0
6
+ * @package SocialWarfare\Admin\Functions
7
+ * @copyright Copyright (c) 2018, Warfare Plugins, LLC
8
+ * @license GPL-3.0+
9
+ */
10
+
11
+ var socialWarfareAdmin = socialWarfareAdmin || {};
12
+ var swpWidget, widgetSubmit;
13
+
14
+ /**
15
+ * Show and hide input fields based on conditional values.
16
+ *
17
+ * This function iterates over each element with the "dep" data attribute. For each
18
+ * such dependant element, its parent element controls whether the dependant is shown or hidden
19
+ * if the parent's value matches the condition.
20
+ *
21
+ * @since 3.0.0 Feb 12 2018 | Brought func in from admin-options-page.js and set to global scope; Updated variable names for semantics, switched to Yoda condietionals.
22
+ * @since 3.0.0 Feb 14 2018 | Mapped the required array from variable types to string.
23
+ *
24
+ * @see admin-options-page.js
25
+ * @return none
26
+ */
27
+ function swpConditionalFields() {
28
+ if (typeof $ == 'undefined') {
29
+ $ = jQuery;
30
+ }
31
+
32
+ function swp_selected(name) {
33
+ return $('select[name="' + name + '"]').val();
34
+ }
35
+
36
+ function swp_checked(name) {
37
+ return $('[name="' + name + '"]').prop('checked');
38
+ }
39
+
40
+ function string_to_bool(string) {
41
+ if (string === 'true') { string = true };
42
+ if (string === 'false'){ string = false };
43
+ return string;
44
+ }
45
+
46
+ // Loop through all the fields that have dependancies
47
+ $("[data-dep]").each(function() {
48
+ // Fetch the conditional values
49
+ var condition = $(this).data('dep');
50
+ var required = JSON.parse(JSON.stringify($(this).data('dep_val')));
51
+
52
+ // Check if we're on the options page or somewhere else
53
+ if (window.location.href.indexOf("page=social-warfare") === -1) {
54
+ var conditionEl = $(this).parents('.widgets-holder-wrap').find('[data-swp-name="' + condition + '"]');
55
+ } else {
56
+ var conditionEl = $('[name="' + condition + '"]')[0];
57
+ }
58
+
59
+ var value;
60
+
61
+ if (typeof conditionEl === 'undefined') {
62
+ conditionEl = $('[name="' + condition + '"]')[0];
63
+
64
+ if (typeof conditionEl === 'undefined') {
65
+ conditionEl = $('[field$=' + condition + ']')[0];
66
+ }
67
+ }
68
+
69
+ // Fetch the value of checkboxes or other input types
70
+ if ($(conditionEl).attr('type') == 'checkbox') {
71
+ value = $(conditionEl).prop('checked');
72
+ } else {
73
+ value = $(conditionEl).val();
74
+ }
75
+
76
+ value = string_to_bool(value);
77
+
78
+ //* Options page uses parent visibilty to check. Widget page does not. This could definiitely look better.
79
+ // Show or hide based on the conditional values (and the dependancy must be visible in case it is dependant)
80
+
81
+ if (window.location.href.indexOf("page=social-warfare") !== -1) {
82
+ // If the required value matches and it's parent is also being shown, show this conditional field
83
+ if ($.inArray(value, required) !== -1 && $(conditionEl).parent('.sw-grid').is(':visible') ) {
84
+ $(this).show();
85
+ } else {
86
+ $(this).hide();
87
+ }
88
+ }
89
+
90
+ else {
91
+ // If the required value matches, show this conditional field
92
+ if ($.inArray(value, required) !== -1 || value === required) {
93
+ $(this).show();
94
+ } else {
95
+ $(this).hide();
96
+ }
97
+ }
98
+ });
99
+
100
+ if (false === swp_checked('float_style_source') &&
101
+ 'custom_color' === swp_selected('float_default_colors')
102
+ || 'custom_color_outlines' === swp_selected('float_default_colors')
103
+ || 'custom_color' === swp_selected('float_single_colors')
104
+ || 'custom_color_outlines' === swp_selected('float_single_colors')
105
+ || 'custom_color' === swp_selected('float_hover_colors')
106
+ || 'custom_color_outlines' === swp_selected('float_hover_colors')) {
107
+ $('.sideCustomColor_wrapper').slideDown();
108
+
109
+ } else {
110
+ $('.sideCustomColor_wrapper').slideUp();
111
+ }
112
+ }
113
+
114
+ //* Only run on widgets.php
115
+ if (window.location.href.indexOf("widgets.php") > -1) {
116
+ //* Make sure the elements exist before trying to read them.
117
+ //*
118
+ var widgetFinder = setInterval(function() {
119
+ if (typeof swpWidget !== 'undefined') clearInterval(widgetFinder);
120
+
121
+ swpWidget = $("#widgets-right [id*=_swp_popular_posts_widget], [id*=_swp_popular_posts_widget].open")[0];
122
+ widgetSubmit = $(swpWidget).find("[id$=savewidget]")[0];
123
+
124
+ //* Force swpConditionalFields to run when the widget is opened or saved.
125
+ $(swpWidget).on("click", swpConditionalFields);
126
+
127
+ $(widgetSubmit).on("click", function() {
128
+ setTimeout(swpConditionalFields, 600);
129
+ });
130
+
131
+ }, 50);
132
+ }
133
+
134
+ (function(window, jQuery) {
135
+ 'use strict';
136
+
137
+ if (typeof $ != 'function') {
138
+
139
+ if (typeof jQuery == 'function') {
140
+ $ = jQuery;
141
+ }
142
+ else if (typeof window.jQuery == 'function') {
143
+ $ = window.jQuery
144
+ }
145
+ else {
146
+ console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");
147
+ return;
148
+ }
149
+ }
150
+
151
+ socialWarfareAdmin.linkLength = function(input) {
152
+ var tmp = '';
153
+
154
+ for (var i = 0; i < 23; i++) {
155
+ tmp += 'o';
156
+ }
157
+
158
+ return input.replace(/(http:\/\/[\S]*)/g, tmp).length;
159
+ };
160
+
161
+ function updateCharactersRemaining(containerSelector, characterLimit) {
162
+ var input = $("#social_warfare #" + containerSelector);
163
+ var container = input.parent();
164
+ var remaining = characterLimit - input.val().length
165
+
166
+ // Account for the permalink + whitespace being added to the tweet.
167
+ if (containerSelector == "swp_custom_tweet") {
168
+ var permalinkLength = 0;
169
+
170
+ // Classic Editor
171
+ if ($("#sample-permalink").length) {
172
+ permalinkLength = $("#sample-permalink").text().length;
173
+ }
174
+
175
+ // Gutenberg Editor
176
+ else if ($("#wp-admin-bar-view a").length) {
177
+ permalinkLength = $("#wp-admin-bar-view a").attr('href').length;
178
+ }
179
+
180
+ if ($("#swp-twitter-handle").length) {
181
+ var twitterHandle = $("#swp-twitter-handle").text();
182
+ remaining -= twitterHandle.length;
183
+ }
184
+
185
+ remaining -= permalinkLength;
186
+ }
187
+
188
+ if (remaining >= 0) {
189
+ container.find(".swp_CountDown").removeClass("swp_red").addClass("swp_blue")
190
+ } else {
191
+ container.find(".swp_CountDown").removeClass("swp_blue").addClass("swp_red")
192
+ }
193
+
194
+ container.find(".counterNumber").text(remaining)
195
+ }
196
+
197
+ function toggleCustomThumbnailFields(show) {
198
+ if (typeof show === 'undefined') show = true;
199
+
200
+ if (show) {
201
+ $(".custom_thumb_size").show();
202
+ } else {
203
+ $(".custom_thumb_size").hide();
204
+ }
205
+ }
206
+
207
+ function noticeClickHandlers() {
208
+ $(".swp-notice-cta").on("click", function(e) {
209
+ e.preventDefault();
210
+ //* Do not use $ to get href.
211
+ var link = e.target.getAttribute("href");
212
+
213
+ if (typeof link == 'string' && link.length) {
214
+ window.open(link);
215
+ }
216
+
217
+ var parent = $(this).parents(".swp-dismiss-notice");
218
+
219
+ $.post({
220
+ url: ajaxurl,
221
+ data: {
222
+ action: 'dismiss',
223
+ key: parent.data("key"),
224
+ timeframe: this.dataset.timeframe
225
+ },
226
+ success: function(result) {
227
+ result = JSON.parse(result)
228
+ if (result) {
229
+ parent.slideUp(500);
230
+ }
231
+ }
232
+ });
233
+ });
234
+ }
235
+
236
+ function postEditorCheckboxChange(event) {
237
+ event.preventDefault();
238
+
239
+ var checked = !($(this).attr('status') == 'on');
240
+ var selector = $(this).attr("field");
241
+ var checkbox = $(selector);
242
+
243
+ if (checked) {
244
+ $(this).attr('status', 'on');
245
+ checkbox.prop('checked', true).prop('value', true);
246
+ } else {
247
+ $(this).attr('status', 'off');
248
+ checkbox.prop('checked', false).prop('value', false);
249
+ }
250
+ }
251
+
252
+ /**
253
+ * For the inputs which have a text counter, the labels are pushed too
254
+ * far above and need to be brought closer.
255
+ *
256
+ * Top/bottom margins have no apparent effect, so we'll use positioning instead.
257
+ *
258
+ * @param string textareaID The textarea whose label is too close.
259
+ */
260
+ function updateTextareaStyle(textareaID) {
261
+ var style = {
262
+ top: "-25px",
263
+ position: "relative"
264
+ }
265
+
266
+ $("#" + textareaID).css("border-top-right-radius", 0) // Makes the character counter look connected to the input.
267
+ .parent().css(style); // Positions the input closer to label.
268
+ }
269
+
270
+
271
+ function createCharactersRemaining(selector, textLimit) {
272
+ var div = '<div class="swp_CountDown"><span class="counterNumber">' + -textLimit + '</span></div>';
273
+ updateTextareaStyle(selector)
274
+ $("#social_warfare #" + selector).parent().prepend(div);
275
+ }
276
+
277
+ socialWarfareAdmin.resizeImageFields = function() {
278
+ $('ul.swpmb-media-list').each(function(index, mediaList) {
279
+ // Check if the media list has been created yet
280
+ if ($(mediaList).is(':empty')) {
281
+ //* For the Pinterest image placeholder image.
282
+ if ($(mediaList).parents(".swpmb-field").attr("class").indexOf("pinterest") > 0) {
283
+ var height = $(mediaList).width() * (3 / 2);
284
+ } else {
285
+ // Setup the Open Graph Image Placeholder
286
+ var height = $(mediaList).width() * (9 / 16);
287
+ }
288
+
289
+ $(mediaList).css("height", height);
290
+ } else {
291
+ $(mediaList).css("height", "initial");
292
+ }
293
+ })
294
+ }
295
+
296
+ /**
297
+ * Creates the left, right, and full-width wraps for each container.
298
+ * @return {[type]} [description]
299
+ */
300
+ function fillContainer(container) {
301
+ var positions = ['full-width', 'left', 'right'];
302
+ var type = $(container).data('type');
303
+
304
+ positions.forEach(function(position) {
305
+ var className = '.swpmb-' + position;
306
+
307
+ if ($(container).find(className)) {
308
+ //* Only include child elements with the correct type.
309
+ var children = $(container).find(className)
310
+ .filter(function(index, child) {
311
+ return $(child).hasClass(type)
312
+ })
313
+ if (children.length) {
314
+ var wrap = $(container).find(className + '-wrap');
315
+ $(wrap).append(children);
316
+ }
317
+ }
318
+ });
319
+ }
320
+
321
+ /**
322
+ *
323
+ * @since 3.x.x | Created
324
+ * @since 3.4.0 | Wrote the docblock and added comments.
325
+ * @return void
326
+ *
327
+ */
328
+ function putFieldsInContainers() {
329
+ $(".swpmb-meta-container[data-type]").map(function(index, container) {
330
+ var type = $(this).data('type');
331
+ if (!type) {
332
+ return;
333
+ }
334
+
335
+ var fields = $(".swpmb-field." + type);
336
+
337
+ if (fields.length) {
338
+ $(this).append(fields);
339
+ }
340
+
341
+ fillContainer(container);
342
+ });
343
+ }
344
+
345
+ function createTextCounters() {
346
+ // map CSS selector to the character limit.
347
+ var textCounters = {
348
+ "swp_og_title": 60,
349
+ "swp_og_description": 150,
350
+ "swp_pinterest_description": 500,
351
+ "swp_custom_tweet": 280
352
+ };
353
+
354
+ Object.keys(textCounters).map(function(selector) {
355
+ var textLimit = textCounters[selector];
356
+
357
+ createCharactersRemaining(selector, textLimit);
358
+ updateCharactersRemaining(selector, textLimit);
359
+
360
+ $("#social_warfare #" + selector).on("input", function() {
361
+ updateCharactersRemaining(selector, textLimit);
362
+ });
363
+ });
364
+ }
365
+
366
+ //* This method exists ONLY for version 3.4.1 of Social Warfare.
367
+ //* The next version should have a more long-term sustainable way to manage
368
+ //* post-editor fields with dependencies.
369
+ function setTempConditionalField() {
370
+ $('[field=#swp_twitter_use_open_graph]').click(function(event) {
371
+ var target = $("#swp_twitter_use_open_graph");
372
+
373
+ if (target.attr('value') == 'true') {
374
+ $('.swpmb-meta-container[data-type=twitter]').slideUp()
375
+ target.attr('value', 'true');
376
+ } else {
377
+ $('.swpmb-meta-container[data-type=twitter]').slideDown()
378
+ target.attr('value', 'false');
379
+ }
380
+
381
+ socialWarfareAdmin.resizeImageFields();
382
+ });
383
+ }
384
+
385
+
386
+ /**
387
+ * The third party module used to create metaboxes (on the server) does not
388
+ * provide a way to organize the HTML.
389
+ *
390
+ * Our fix for this is to create a new parent container with the `data-type`
391
+ * attribute. The value of `data-type` represents the group of related
392
+ * functionality, such as 'heading', 'open-graph', or 'pinterest'.
393
+ *
394
+ * Then we move the related content (matched by CSS classnames) into the
395
+ * appropriate container using javascript.
396
+ *
397
+ * @see PHP social-warfare-pro\lib\admin\SWP_Meta_Box_Loader->before_meta_boxes()
398
+ */
399
+ function displayMetaBox() {
400
+ if (!$($(".swpmb-media-list").length)) return;
401
+
402
+ clearInterval(window.initSWMetabox);
403
+
404
+ putFieldsInContainers();
405
+
406
+ //* Metabox is loaded via Ajax, but we want to resize known images ASAP.
407
+ //* Even a couple extra times if need be.
408
+ setTimeout(socialWarfareAdmin.resizeImageFields, 600);
409
+ setTimeout(socialWarfareAdmin.resizeImageFields, 1400);
410
+ setTimeout(socialWarfareAdmin.resizeImageFields, 3000);
411
+
412
+ //* Begin Temp code only for 3.4.1
413
+ var status = $("#swp_twitter_use_open_graph").val()
414
+ if (status == 'false') {
415
+ $('.swpmb-meta-container[data-type=twitter]').slideDown()
416
+ } else {
417
+ $('.swpmb-meta-container[data-type=twitter]').slideUp()
418
+ }
419
+ setTempConditionalField();
420
+ //* End Temp code
421
+
422
+ $('ul.swpmb-media-list').find(".swpmb-overlay").click(socialWarfareAdmin.resizeImageFields);
423
+ $("#social_warfare.ui-sortable-handle").click(socialWarfareAdmin.resizeImageFields); //* The open/close handle WP gives us. Images need to be resized if it was closed then opened.
424
+ socialWarfareAdmin.addImageEditListeners()
425
+
426
+ $("#social_warfare.postbox").show();
427
+ }
428
+
429
+ //* These elements are only created once an image exists
430
+ socialWarfareAdmin.addImageEditListeners = function() {
431
+ $('.swpmb-edit-media, .swpmb-remove-media').off(socialWarfareAdmin.resizeImageFields);
432
+ $('.swpmb-edit-media, .swpmb-remove-media').on(socialWarfareAdmin.resizeImageFields);
433
+ }
434
+
435
+ // The network key is stored in a classname `swp-network-$network`.
436
+ // @see SWP_Options_Page->establish_authorizations()
437
+ socialWarfareAdmin.revokeNetworkConnection = function(event) {
438
+ var button, index, networkAndTail, network;
439
+ button = event.target;
440
+ if ($(event.target).is('div')) {
441
+ // This is the inner div holding the network text.
442
+ button = event.target.parentNode;
443
+ }
444
+ else {
445
+ button = event.target;
446
+ }
447
+
448
+ // First find the target class, then parse that class for a network name.
449
+ index = button.className.indexOf('swp-network');
450
+ index = 1 + button.className.indexOf('-', 4+index);
451
+
452
+ networkAndTail = button.className.slice(index);
453
+
454
+ index = networkAndTail.indexOf(' ');
455
+
456
+ if ( -1 == index ) {
457
+ // This was the last class in the selector
458
+ network = networkAndTail;
459
+ }
460
+
461
+ else {
462
+ // There are more classes after the selector.
463
+ network = networkAndTail.slice(0, index)
464
+ }
465
+
466
+ /**
467
+ * The disconnect URL opens in a new tab. While the user is distracted,
468
+ * make an ajax request to delete these credentials and reload the page.
469
+ */
470
+
471
+ $.post({
472
+ url: ajaxurl,
473
+ data: {
474
+ action: 'swp_delete_network_tokens',
475
+ network: network
476
+ },
477
+ success: function(r) {
478
+ var response = JSON.parse(r)
479
+ if (response.ok) {
480
+ window.location.href = response.url
481
+ }
482
+ else {
483
+ console.log('bad response', response)
484
+ }
485
+ // should be redirected by server back to ?page=social-warfare
486
+ }
487
+ // complete: function(/*try again*/) {window.location.reload(1)}
488
+ });
489
+ }
490
+
491
+ socialWarfareAdmin.triggerDeletePostMeta = function(event) {
492
+ event.preventDefault()
493
+ var message = "This will delete all Social Warfare meta keys for this post, including Open Graph, Twitter, and Pinterest descriptions and images. If you want to keep these, please copy them to an offline file first, and paste them back in after the reset. To reset, enter reset_post_meta";
494
+ var prompt = window.prompt(message, 'reset_or_cancel');
495
+ console.log('prompt', prompt)
496
+ if (prompt == 'reset_post_meta') {
497
+ jQuery.post({
498
+ url: ajaxurl,
499
+ data: {
500
+ action: 'swp_reset_post_meta',
501
+ post_id: socialWarfare.post_id
502
+ },
503
+ complete: function(response) {
504
+ socialWarfareAdmin.resetMetaFields()
505
+ }
506
+ })
507
+ }
508
+ }
509
+
510
+
511
+ socialWarfareAdmin.resetMetaFields = function() {
512
+ $('#social_warfare.postbox').find('input[type=text], textarea').val('');
513
+ $('#social_warfare.postbox').find('select').val('default');
514
+
515
+ }
516
+
517
+
518
+ socialWarfareAdmin.addEventListeners = function() {
519
+ $('.swp-revoke-button').on('click', socialWarfareAdmin.revokeNetworkConnection)
520
+ $('#swp_reset_button').on('click', socialWarfareAdmin.triggerDeletePostMeta)
521
+ }
522
+
523
+ socialWarfareAdmin.createResetButton = function() {
524
+ var parent = $("#swp_reset_button");
525
+
526
+ var button = jQuery('<button class="button">Reset Post Meta</button>')
527
+ button.on('click', socialWarfareAdmin.triggerDeletePostMeta)
528
+
529
+ parent.after(button)
530
+ }
531
+
532
+ $(document).ready(function() {
533
+ noticeClickHandlers();
534
+
535
+ if ($('#social_warfare.postbox').length) {
536
+ createTextCounters();
537
+ socialWarfareAdmin.createResetButton();
538
+ swpConditionalFields();
539
+
540
+ $(".sw-checkbox-toggle.swp-post-editor").click(postEditorCheckboxChange);
541
+ $('.swp_popular_post_options select').on('change', swpConditionalFields);
542
+
543
+ //* Wait for the Rilis metabox to populate itself.
544
+ window.initSWMetabox = setInterval(displayMetaBox, 10);
545
+ }
546
+
547
+ socialWarfareAdmin.addEventListeners();
548
+ });
549
+ })(this, jQuery);
assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- function swpConditionalFields(){function e(e){return jQuery('select[name="'+e+'"]').val()}function t(e){return"true"===e&&(e=!0),"false"===e&&(e=!1),e}jQuery("[data-dep]").each(function(){var e=jQuery(this).data("dep"),i=JSON.parse(JSON.stringify(jQuery(this).data("dep_val")));if(-1===window.location.href.indexOf("page=social-warfare"))var a=jQuery(this).parents(".widgets-holder-wrap").find('[data-swp-name="'+e+'"]');else var a=jQuery('[name="'+e+'"]')[0];var r;void 0===a&&void 0===(a=jQuery('[name="'+e+'"]')[0])&&(a=jQuery("[fieldjQuery="+e+"]")[0]),r="checkbox"==jQuery(a).attr("type")?jQuery(a).prop("checked"):jQuery(a).val(),r=t(r),-1!==window.location.href.indexOf("page=social-warfare")?-1!==jQuery.inArray(r,i)&&jQuery(a).parent(".sw-grid").is(":visible")?jQuery(this).show():jQuery(this).hide():-1!==jQuery.inArray(r,i)||r===i?jQuery(this).show():jQuery(this).hide()}),!1===function(e){return jQuery('[name="'+e+'"]').prop("checked")}("float_style_source")&&"custom_color"===e("float_default_colors")||"custom_color_outlines"===e("float_default_colors")||"custom_color"===e("float_single_colors")||"custom_color_outlines"===e("float_single_colors")||"custom_color"===e("float_hover_colors")||"custom_color_outlines"===e("float_hover_colors")?jQuery(".sideCustomColor_wrapper").slideDown():jQuery(".sideCustomColor_wrapper").slideUp()}var socialWarfareAdmin=socialWarfareAdmin||{},swpWidget,widgetSubmit;if(window.location.href.indexOf("widgets.php")>-1)var widgetFinder=setInterval(function(){void 0!==swpWidget&&clearInterval(widgetFinder),swpWidget=jQuery("#widgets-right [id*=_swp_popular_posts_widget], [id*=_swp_popular_posts_widget].open")[0],widgetSubmit=jQuery(swpWidget).find("[idjQuery=savewidget]")[0],jQuery(swpWidget).on("click",swpConditionalFields),jQuery(widgetSubmit).on("click",function(){setTimeout(swpConditionalFields,600)})},50);!function(e,t,i){"use strict";function a(e,i){var a=t("#social_warfare #"+e),r=a.parent(),s=i-a.val().length;"swp_custom_tweet"==e&&(s-=t("#sample-permalink").text().length+1),s>=0?r.find(".swp_CountDown").removeClass("swp_red").addClass("swp_blue"):r.find(".swp_CountDown").removeClass("swp_blue").addClass("swp_red"),r.find(".counterNumber").text(s)}function r(){t(".swp-notice-cta").on("click",function(i){i.preventDefault();var a=i.target.getAttribute("href");"string"==typeof a&&a.length&&e.open(a);var r=t(this).parents(".swp-dismiss-notice");t.post({url:ajaxurl,data:{action:"dismiss",key:r.data("key"),timeframe:this.dataset.timeframe},success:function(e){(e=JSON.parse(e))&&r.slideUp(500)}})})}function s(e){e.preventDefault();var i=!("on"==t(this).attr("status")),a=t(this).attr("field"),r=t(a);i?(t(this).attr("status","on"),r.prop("checked",!0).prop("value",!0)):(t(this).attr("status","off"),r.prop("checked",!1).prop("value",!1))}function o(e){var i={top:"-25px",position:"relative"};t("#"+e).css("border-top-right-radius",0).parent().css(i)}function n(e,i){var a='<div class="swp_CountDown"><span class="counterNumber">'+-i+"</span></div>";o(e),t("#social_warfare #"+e).parent().prepend(a)}function l(e){var i=["full-width","left","right"],a=t(e).data("type");i.forEach(function(i){var r=".swpmb-"+i;if(t(e).find(r)){var s=t(e).find(r).filter(function(e,i){return t(i).hasClass(a)});if(s.length){var o=t(e).find(r+"-wrap");t(o).append(s)}}})}function d(){t(".swpmb-meta-container[data-type]").map(function(e,i){var a=t(this).data("type");if(a){var r=t(".swpmb-field."+a);r.length&&t(this).append(r),l(i)}})}function p(){var e={swp_og_title:60,swp_og_description:150,swp_pinterest_description:500,swp_custom_tweet:280};Object.keys(e).map(function(i){var r=e[i];n(i,r),a(i,r),t("#social_warfare #"+i).on("input",function(){a(i,r)})})}function c(){t("[field=#swp_twitter_use_open_graph]").click(function(e){var i=t("#swp_twitter_use_open_graph");"true"==i.attr("value")?(t(".swpmb-meta-container[data-type=twitter]").slideUp(),i.attr("value","true")):(t(".swpmb-meta-container[data-type=twitter]").slideDown(),i.attr("value","false")),socialWarfareAdmin.resizeImageFields()})}function u(){if(t(t(".swpmb-media-list").length)){clearInterval(e.initSWMetabox),d(),setTimeout(socialWarfareAdmin.resizeImageFields,600),setTimeout(socialWarfareAdmin.resizeImageFields,1400),setTimeout(socialWarfareAdmin.resizeImageFields,3e3);"false"==t("#swp_twitter_use_open_graph").val()?t(".swpmb-meta-container[data-type=twitter]").slideDown():t(".swpmb-meta-container[data-type=twitter]").slideUp(),c(),t("ul.swpmb-media-list").find(".swpmb-overlay").click(socialWarfareAdmin.resizeImageFields),t("#social_warfare.ui-sortable-handle").click(socialWarfareAdmin.resizeImageFields),socialWarfareAdmin.addImageEditListeners(),t("#social_warfare.postbox").show()}}if("function"!=typeof t)return void console.log("Social Warfare requires jQuery, or jQuery as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");socialWarfareAdmin.linkLength=function(e){for(var t="",i=0;i<23;i++)t+="o";return e.replace(/(http:\/\/[\S]*)/g,t).length},socialWarfareAdmin.resizeImageFields=function(){t("ul.swpmb-media-list").each(function(e,i){if(t(i).is(":empty")){if(t(i).parents(".swpmb-field").attr("class").indexOf("pinterest")>0)var a=1.5*t(i).width();else var a=t(i).width()*(9/16);t(i).css("height",a)}else t(i).css("height","initial")})},socialWarfareAdmin.addImageEditListeners=function(){t(".swpmb-edit-media, .swpmb-remove-media").off(socialWarfareAdmin.resizeImageFields),t(".swpmb-edit-media, .swpmb-remove-media").on(socialWarfareAdmin.resizeImageFields)},t(document).ready(function(){r(),t("#social_warfare.postbox").length&&(p(),swpConditionalFields(),t(".sw-checkbox-toggle.swp-post-editor").click(s),t(".swp_popular_post_options select").on("change",swpConditionalFields),e.initSWMetabox=setInterval(u,10))})}(this,jQuery);
1
+ function swpConditionalFields(){function e(e){return $('select[name="'+e+'"]').val()}function t(e){return"true"===e&&(e=!0),"false"===e&&(e=!1),e}"undefined"==typeof $&&($=jQuery),$("[data-dep]").each(function(){var e=$(this).data("dep"),a=JSON.parse(JSON.stringify($(this).data("dep_val")));if(-1===window.location.href.indexOf("page=social-warfare"))var i=$(this).parents(".widgets-holder-wrap").find('[data-swp-name="'+e+'"]');else var i=$('[name="'+e+'"]')[0];var s;void 0===i&&void 0===(i=$('[name="'+e+'"]')[0])&&(i=$("[field$="+e+"]")[0]),s="checkbox"==$(i).attr("type")?$(i).prop("checked"):$(i).val(),s=t(s),-1!==window.location.href.indexOf("page=social-warfare")?-1!==$.inArray(s,a)&&$(i).parent(".sw-grid").is(":visible")?$(this).show():$(this).hide():-1!==$.inArray(s,a)||s===a?$(this).show():$(this).hide()}),!1===function(e){return $('[name="'+e+'"]').prop("checked")}("float_style_source")&&"custom_color"===e("float_default_colors")||"custom_color_outlines"===e("float_default_colors")||"custom_color"===e("float_single_colors")||"custom_color_outlines"===e("float_single_colors")||"custom_color"===e("float_hover_colors")||"custom_color_outlines"===e("float_hover_colors")?$(".sideCustomColor_wrapper").slideDown():$(".sideCustomColor_wrapper").slideUp()}var socialWarfareAdmin=socialWarfareAdmin||{},swpWidget,widgetSubmit;if(window.location.href.indexOf("widgets.php")>-1)var widgetFinder=setInterval(function(){void 0!==swpWidget&&clearInterval(widgetFinder),swpWidget=$("#widgets-right [id*=_swp_popular_posts_widget], [id*=_swp_popular_posts_widget].open")[0],widgetSubmit=$(swpWidget).find("[id$=savewidget]")[0],$(swpWidget).on("click",swpConditionalFields),$(widgetSubmit).on("click",function(){setTimeout(swpConditionalFields,600)})},50);!function(e,t){"use strict";function a(e,t){var a=$("#social_warfare #"+e),i=a.parent(),s=t-a.val().length;if("swp_custom_tweet"==e){var r=0;if($("#sample-permalink").length?r=$("#sample-permalink").text().length:$("#wp-admin-bar-view a").length&&(r=$("#wp-admin-bar-view a").attr("href").length),$("#swp-twitter-handle").length){s-=$("#swp-twitter-handle").text().length}s-=r}s>=0?i.find(".swp_CountDown").removeClass("swp_red").addClass("swp_blue"):i.find(".swp_CountDown").removeClass("swp_blue").addClass("swp_red"),i.find(".counterNumber").text(s)}function i(){$(".swp-notice-cta").on("click",function(t){t.preventDefault();var a=t.target.getAttribute("href");"string"==typeof a&&a.length&&e.open(a);var i=$(this).parents(".swp-dismiss-notice");$.post({url:ajaxurl,data:{action:"dismiss",key:i.data("key"),timeframe:this.dataset.timeframe},success:function(e){(e=JSON.parse(e))&&i.slideUp(500)}})})}function s(e){e.preventDefault();var t=!("on"==$(this).attr("status")),a=$(this).attr("field"),i=$(a);t?($(this).attr("status","on"),i.prop("checked",!0).prop("value",!0)):($(this).attr("status","off"),i.prop("checked",!1).prop("value",!1))}function r(e){var t={top:"-25px",position:"relative"};$("#"+e).css("border-top-right-radius",0).parent().css(t)}function o(e,t){var a='<div class="swp_CountDown"><span class="counterNumber">'+-t+"</span></div>";r(e),$("#social_warfare #"+e).parent().prepend(a)}function n(e){var t=["full-width","left","right"],a=$(e).data("type");t.forEach(function(t){var i=".swpmb-"+t;if($(e).find(i)){var s=$(e).find(i).filter(function(e,t){return $(t).hasClass(a)});if(s.length){var r=$(e).find(i+"-wrap");$(r).append(s)}}})}function l(){$(".swpmb-meta-container[data-type]").map(function(e,t){var a=$(this).data("type");if(a){var i=$(".swpmb-field."+a);i.length&&$(this).append(i),n(t)}})}function c(){var e={swp_og_title:60,swp_og_description:150,swp_pinterest_description:500,swp_custom_tweet:280};Object.keys(e).map(function(t){var i=e[t];o(t,i),a(t,i),$("#social_warfare #"+t).on("input",function(){a(t,i)})})}function d(){$("[field=#swp_twitter_use_open_graph]").click(function(e){var t=$("#swp_twitter_use_open_graph");"true"==t.attr("value")?($(".swpmb-meta-container[data-type=twitter]").slideUp(),t.attr("value","true")):($(".swpmb-meta-container[data-type=twitter]").slideDown(),t.attr("value","false")),socialWarfareAdmin.resizeImageFields()})}function p(){if($($(".swpmb-media-list").length)){clearInterval(e.initSWMetabox),l(),setTimeout(socialWarfareAdmin.resizeImageFields,600),setTimeout(socialWarfareAdmin.resizeImageFields,1400),setTimeout(socialWarfareAdmin.resizeImageFields,3e3);"false"==$("#swp_twitter_use_open_graph").val()?$(".swpmb-meta-container[data-type=twitter]").slideDown():$(".swpmb-meta-container[data-type=twitter]").slideUp(),d(),$("ul.swpmb-media-list").find(".swpmb-overlay").click(socialWarfareAdmin.resizeImageFields),$("#social_warfare.ui-sortable-handle").click(socialWarfareAdmin.resizeImageFields),socialWarfareAdmin.addImageEditListeners(),$("#social_warfare.postbox").show()}}if("function"!=typeof $)if("function"==typeof t)$=t;else{if("function"!=typeof e.jQuery)return void console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");$=e.jQuery}socialWarfareAdmin.linkLength=function(e){for(var t="",a=0;a<23;a++)t+="o";return e.replace(/(http:\/\/[\S]*)/g,t).length},socialWarfareAdmin.resizeImageFields=function(){$("ul.swpmb-media-list").each(function(e,t){if($(t).is(":empty")){if($(t).parents(".swpmb-field").attr("class").indexOf("pinterest")>0)var a=1.5*$(t).width();else var a=$(t).width()*(9/16);$(t).css("height",a)}else $(t).css("height","initial")})},socialWarfareAdmin.addImageEditListeners=function(){$(".swpmb-edit-media, .swpmb-remove-media").off(socialWarfareAdmin.resizeImageFields),$(".swpmb-edit-media, .swpmb-remove-media").on(socialWarfareAdmin.resizeImageFields)},socialWarfareAdmin.revokeNetworkConnection=function(t){var a,i,s,r;a=t.target,a=$(t.target).is("div")?t.target.parentNode:t.target,i=a.className.indexOf("swp-network"),i=1+a.className.indexOf("-",4+i),s=a.className.slice(i),i=s.indexOf(" "),r=-1==i?s:s.slice(0,i),$.post({url:ajaxurl,data:{action:"swp_delete_network_tokens",network:r},success:function(t){var a=JSON.parse(t);a.ok?e.location.href=a.url:console.log("bad response",a)}})},socialWarfareAdmin.triggerDeletePostMeta=function(a){a.preventDefault();var i=e.prompt("This will delete all Social Warfare meta keys for this post, including Open Graph, Twitter, and Pinterest descriptions and images. If you want to keep these, please copy them to an offline file first, and paste them back in after the reset. To reset, enter reset_post_meta","reset_or_cancel");console.log("prompt",i),"reset_post_meta"==i&&t.post({url:ajaxurl,data:{action:"swp_reset_post_meta",post_id:socialWarfare.post_id},complete:function(e){socialWarfareAdmin.resetMetaFields()}})},socialWarfareAdmin.resetMetaFields=function(){$("#social_warfare.postbox").find("input[type=text], textarea").val(""),$("#social_warfare.postbox").find("select").val("default")},socialWarfareAdmin.addEventListeners=function(){$(".swp-revoke-button").on("click",socialWarfareAdmin.revokeNetworkConnection),$("#swp_reset_button").on("click",socialWarfareAdmin.triggerDeletePostMeta)},socialWarfareAdmin.createResetButton=function(){var e=$("#swp_reset_button"),a=t('<button class="button">Reset Post Meta</button>');a.on("click",socialWarfareAdmin.triggerDeletePostMeta),e.after(a)},$(document).ready(function(){i(),$("#social_warfare.postbox").length&&(c(),socialWarfareAdmin.createResetButton(),swpConditionalFields(),$(".sw-checkbox-toggle.swp-post-editor").click(s),$(".swp_popular_post_options select").on("change",swpConditionalFields),e.initSWMetabox=setInterval(p,10)),socialWarfareAdmin.addEventListeners()})}(this,jQuery);
assets/js/post-editor/dist/blocks.build.js CHANGED
@@ -1,132 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // getDefaultExport function for compatibility with non-harmony modules
48
- /******/ __webpack_require__.n = function(module) {
49
- /******/ var getter = module && module.__esModule ?
50
- /******/ function getDefault() { return module['default']; } :
51
- /******/ function getModuleExports() { return module; };
52
- /******/ __webpack_require__.d(getter, 'a', getter);
53
- /******/ return getter;
54
- /******/ };
55
- /******/
56
- /******/ // Object.prototype.hasOwnProperty.call
57
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58
- /******/
59
- /******/ // __webpack_public_path__
60
- /******/ __webpack_require__.p = "";
61
- /******/
62
- /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 2);
64
- /******/ })
65
- /************************************************************************/
66
- /******/ ([
67
- /* 0 */
68
- /*!******************************!*\
69
- !*** ./src/block/style.scss ***!
70
- \******************************/
71
- /*! dynamic exports provided */
72
- /***/ (function(module, exports) {
73
-
74
- eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9zdHlsZS5zY3NzPzgwZjMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9ibG9jay9zdHlsZS5zY3NzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n");
75
-
76
- /***/ }),
77
- /* 1 */
78
- /*!*************************!*\
79
- !*** ./src/common.scss ***!
80
- \*************************/
81
- /*! dynamic exports provided */
82
- /***/ (function(module, exports) {
83
-
84
- eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1\n");
85
-
86
- /***/ }),
87
- /* 2 */
88
- /*!***********************!*\
89
- !*** ./src/blocks.js ***!
90
- \***********************/
91
- /*! no exports provided */
92
- /*! all exports used */
93
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
94
-
95
- "use strict";
96
- eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__block_social_warfare_js__ = __webpack_require__(/*! ./block/social-warfare.js */ 3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__block_click_to_tweet_js__ = __webpack_require__(/*! ./block/click-to-tweet.js */ 4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__block_pinterest_js__ = __webpack_require__(/*! ./block/pinterest.js */ 5);\n/**\n * Gutenberg Blocks\n *\n * All blocks related JavaScript files should be imported here.\n * You can create a new block folder in this dir and include code\n * for that block here as well.\n *\n * All blocks should be included here since this is the file that\n * Webpack is compiling as the input file.\n */\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9ja3MuanM/N2I1YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEd1dGVuYmVyZyBCbG9ja3NcbiAqXG4gKiBBbGwgYmxvY2tzIHJlbGF0ZWQgSmF2YVNjcmlwdCBmaWxlcyBzaG91bGQgYmUgaW1wb3J0ZWQgaGVyZS5cbiAqIFlvdSBjYW4gY3JlYXRlIGEgbmV3IGJsb2NrIGZvbGRlciBpbiB0aGlzIGRpciBhbmQgaW5jbHVkZSBjb2RlXG4gKiBmb3IgdGhhdCBibG9jayBoZXJlIGFzIHdlbGwuXG4gKlxuICogQWxsIGJsb2NrcyBzaG91bGQgYmUgaW5jbHVkZWQgaGVyZSBzaW5jZSB0aGlzIGlzIHRoZSBmaWxlIHRoYXRcbiAqIFdlYnBhY2sgaXMgY29tcGlsaW5nIGFzIHRoZSBpbnB1dCBmaWxlLlxuICovXG5cbmltcG9ydCAnLi9ibG9jay9zb2NpYWwtd2FyZmFyZS5qcyc7XG5pbXBvcnQgJy4vYmxvY2svY2xpY2stdG8tdHdlZXQuanMnO1xuaW1wb3J0ICcuL2Jsb2NrL3BpbnRlcmVzdC5qcyc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYmxvY2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n");
97
-
98
- /***/ }),
99
- /* 3 */
100
- /*!*************************************!*\
101
- !*** ./src/block/social-warfare.js ***!
102
- \*************************************/
103
- /*! no exports provided */
104
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
105
-
106
- "use strict";
107
- eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss__ = __webpack_require__(/*! ./style.scss */ 0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__style_scss__);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar __ = wp.i18n.__; // Import __() from wp.i18n\n\nvar registerBlockType = wp.blocks.registerBlockType; // Import registerBlockType() from wp.blocks\n\nvar Dashicon = wp.components.Dashicon;\nvar icon = wp.element.createElement(\n\t\"div\",\n\t{ className: \"swp-block-icon\" },\n\twp.element.createElement(\n\t\t\"svg\",\n\t\t{ version: \"1.1\", id: \"Layer_1\", x: \"0px\", y: \"0px\", viewBox: \"0 0 32 32\", \"enable-background\": \"new 0 0 32 32\" },\n\t\twp.element.createElement(\"path\", { fill: \"#ee464f\", d: \"M8.6,9.9c0.2-0.8,1.8-4.2,5.5-6.3C8.1,4.5,3.5,9.7,3.5,15.9c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3 l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C17.1,17.8,5.5,18.5,8.6,9.9z M27.2,10.4 c-0.3,0.3-0.6,0.6-1.1,0.7L21.4,12c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7 c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C28.5,14,28,12.1,27.2,10.4z\" })\n\t)\n);\n\n/**\n * Registers a new block provided a unique name and an object defining its\n * behavior. Once registered, the block is made editor as an option to any\n * editor interface where blocks are implemented.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/\n * @param {string} name Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.\n * @param {Object} settings Block settings.\n * @return {?WPBlock} The block, if it has been successfully\n * registered; otherwise `undefined`.\n */\nregisterBlockType('social-warfare/social-warfare', {\n\ttitle: __('Social Warfare'), // Block title.\n\ticon: icon,\n\tcategory: 'social-warfare', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.\n\tkeywords: [\n\t// Has a limit of 3 keywords.\n\t__('share'), __('button'), __('tweet')],\n\tattributes: {\n\t\thasFocus: { type: 'boolean', defualt: false }, //* Used only for editor to display either slim or full block.\n\t\tuseThisPost: { type: 'string', default: \"this\" }, //* Option to use share data from this post, or another post.\n\t\tpostID: { type: 'number', default: '' }, //* If ${useThisPost} == 'other', the ID of target post to fetch data from.\n\t\tbuttons: { type: 'string', default: '' } //* A csv of valid networks to display in the shortcode.\n\t},\n\n\t/**\n * The edit function describes the structure of your block in the context of the editor.\n * This represents what the editor will render when the block is used.\n *\n * The \"edit\" property must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\tedit: function edit(props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t useThisPost = _props$attributes.useThisPost,\n\t\t buttons = _props$attributes.buttons,\n\t\t postID = _props$attributes.postID;\n\n\n\t\tvar toggleFocus = function toggleFocus(event) {\n\t\t\tprops.setAttributes({ hasFocus: !props.attributes.hasFocus });\n\t\t};\n\n\t\tvar updateAttributes = function updateAttributes(event) {\n\t\t\tprops.setAttributes(_defineProperty({}, event.target.name, event.target.value));\n\t\t};\n\n\t\tvar updateButtonsList = function updateButtonsList(event) {\n\t\t\tprops.setAttributes({ buttons: event.target.value });\n\t\t};\n\n\t\tvar updatePostID = function updatePostID(event) {\n\t\t\tvar postID = wp.data.select('core/editor').getCurrentPostId();\n\t\t\tvar value = event.target.value;\n\n\t\t\tif (value == '') {\n\t\t\t\tprops.setAttributes({ postID: \"\" });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isNaN(parseInt(value))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tprops.setAttributes({ postID: parseInt(value) });\n\t\t};\n\n\t\t//* Inactive state\n\t\tif (!props.attributes.hasFocus) {\n\t\t\tvar _buttons = props.attributes.buttons && props.attributes.buttons.length ? \"buttons=\\\"\" + props.attributes.buttons + \"\\\"\" : '';\n\n\t\t\tvar _postID = props.attributes.useThisPost == \"other\" ? \"id=\\\"\" + props.attributes.postID + \"\\\"\" : '';\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: props.className + \" social-warfare-block-wrap swp-inactive-block\" },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"head\", onClick: toggleFocus },\n\t\t\t\t\ticon,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t{ className: \"swp-preview\" },\n\t\t\t\t\t\t\"[social_warfare \",\n\t\t\t\t\t\t_buttons,\n\t\t\t\t\t\t\" \",\n\t\t\t\t\t\t_postID,\n\t\t\t\t\t\t\"]\"\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(Dashicon, { className: \"swp-dashicon\", icon: \"arrow-down\" })\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t//* Active state\n\t\treturn wp.element.createElement(\n\t\t\t\"div\",\n\t\t\t{ className: props.className + \" social-warfare-block-wrap swp-active-block\" },\n\t\t\twp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"head\", onClick: toggleFocus },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\tnull,\n\t\t\t\t\ticon,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\"p\",\n\t\t\t\t\t\t{ className: \"swp-block-title\" },\n\t\t\t\t\t\t\"Social Warfare Shortcode\"\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(Dashicon, { className: \"swp-dashicon\", icon: \"arrow-down\" })\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t\"p\",\n\t\t\t\tnull,\n\t\t\t\t\"Inserts a \",\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"pre\",\n\t\t\t\t\t{ style: { display: 'inline' } },\n\t\t\t\t\t\"[social_warfare]\"\n\t\t\t\t),\n\t\t\t\t\" shortcode. Leave a field blank to use values based on your global settings. \",\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"a\",\n\t\t\t\t\t{ href: \"https://warfareplugins.com/support/using-shortcodes-and-php-snippets/\" },\n\t\t\t\t\t\"Learn more\"\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t\"p\",\n\t\t\t\tnull,\n\t\t\t\t\"Should the buttons reflect this post, or a different post?\"\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t\"select\",\n\t\t\t\t{ name: \"useThisPost\",\n\t\t\t\t\tvalue: props.attributes.useThisPost == \"other\" ? \"other\" : \"this\",\n\t\t\t\t\tonChange: updateAttributes\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"option\",\n\t\t\t\t\t{ value: \"this\" },\n\t\t\t\t\t\"This post\"\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"option\",\n\t\t\t\t\t{ value: \"other\" },\n\t\t\t\t\t\"Another post\"\n\t\t\t\t)\n\t\t\t),\n\t\t\tprops.attributes.useThisPost == \"other\" && wp.element.createElement(\n\t\t\t\t\"div\",\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t\"p\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Which post should we fetch SW settings and shares from?\"\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\"input\", { type: \"text\",\n\t\t\t\t\tonChange: updatePostID,\n\t\t\t\t\tvalue: props.attributes.postID\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t\"p\",\n\t\t\t\tnull,\n\t\t\t\t\"Which networks should we display? Leave blank to use your global settings. \"\n\t\t\t),\n\t\t\twp.element.createElement(\"input\", { value: props.attributes.buttons,\n\t\t\t\ttype: \"text\",\n\t\t\t\tonChange: updateButtonsList\n\t\t\t})\n\t\t);\n\t},\n\n\t/**\n * The save function defines the way in which the different attributes should be combined\n * into the final markup, which is then serialized by Gutenberg into post_content.\n *\n * The \"save\" property must be specified and must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\tsave: function save(props) {\n\t\tvar buttons = props.attributes.buttons && props.attributes.buttons.length ? \"buttons=\\\"\" + props.attributes.buttons + \"\\\"\" : '';\n\n\t\tvar postID = props.attributes.useThisPost == \"other\" ? \"id=\\\"\" + props.attributes.postID + \"\\\"\" : '';\n\n\t\treturn wp.element.createElement(\n\t\t\t\"div\",\n\t\t\tnull,\n\t\t\t\"[social_warfare \",\n\t\t\tbuttons,\n\t\t\t\" \",\n\t\t\tpostID,\n\t\t\t\"]\"\n\t\t);\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9zb2NpYWwtd2FyZmFyZS5qcz8zMDRkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcblxudmFyIF9fID0gd3AuaTE4bi5fXzsgLy8gSW1wb3J0IF9fKCkgZnJvbSB3cC5pMThuXG5cbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTsgLy8gSW1wb3J0IHJlZ2lzdGVyQmxvY2tUeXBlKCkgZnJvbSB3cC5ibG9ja3NcblxudmFyIERhc2hpY29uID0gd3AuY29tcG9uZW50cy5EYXNoaWNvbjtcbnZhciBpY29uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcImRpdlwiLFxuXHR7IGNsYXNzTmFtZTogXCJzd3AtYmxvY2staWNvblwiIH0sXG5cdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcInN2Z1wiLFxuXHRcdHsgdmVyc2lvbjogXCIxLjFcIiwgaWQ6IFwiTGF5ZXJfMVwiLCB4OiBcIjBweFwiLCB5OiBcIjBweFwiLCB2aWV3Qm94OiBcIjAgMCAzMiAzMlwiLCBcImVuYWJsZS1iYWNrZ3JvdW5kXCI6IFwibmV3IDAgMCAzMiAzMlwiIH0sXG5cdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6IFwiI2VlNDY0ZlwiLCBkOiBcIk04LjYsOS45YzAuMi0wLjgsMS44LTQuMiw1LjUtNi4zQzguMSw0LjUsMy41LDkuNywzLjUsMTUuOWMwLDEuNiwwLjMsMy4yLDAuOSw0LjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjMgbDQuNi0wLjljMC44LTAuMiwxLjEsMC4yLDAuOSwxYy0wLjUsMS44LDAuNSwyLjksMi4zLDIuOWMxLjgsMCwzLjYtMS4xLDMuNy0yLjFDMTcuMSwxNy44LDUuNSwxOC41LDguNiw5Ljl6IE0yNy4yLDEwLjQgYy0wLjMsMC4zLTAuNiwwLjYtMS4xLDAuN0wyMS40LDEyYy0wLjgsMC4yLTEuMS0wLjItMC45LTAuOWMwLjMtMS41LTAuNi0yLjUtMi40LTIuNWMtMS41LDAtMi43LDAuOS0yLjgsMS43IGMtMC41LDIuOSwxMS40LDIuOSw4LjQsMTEuNWMtMC4zLDAuOC0yLjMsNC42LTYuOCw2LjZjNi41LTAuNCwxMS43LTUuOCwxMS43LTEyLjRDMjguNSwxNCwyOCwxMi4xLDI3LjIsMTAuNHpcIiB9KVxuXHQpXG4pO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG5ldyBibG9jayBwcm92aWRlZCBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBvYmplY3QgZGVmaW5pbmcgaXRzXG4gKiBiZWhhdmlvci4gT25jZSByZWdpc3RlcmVkLCB0aGUgYmxvY2sgaXMgbWFkZSBlZGl0b3IgYXMgYW4gb3B0aW9uIHRvIGFueVxuICogZWRpdG9yIGludGVyZmFjZSB3aGVyZSBibG9ja3MgYXJlIGltcGxlbWVudGVkLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9ndXRlbmJlcmcvaGFuZGJvb2svYmxvY2stYXBpL1xuICogQHBhcmFtICB7c3RyaW5nfSAgIG5hbWUgICAgIEJsb2NrIG5hbWUuIEJsb2NrIG5hbWVzIG11c3QgYmUgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBuYW1lc3BhY2UgcHJlZml4LiBFeGFtcGxlOiBteS1wbHVnaW4vbXktY3VzdG9tLWJsb2NrLlxuICogQHBhcmFtICB7T2JqZWN0fSAgIHNldHRpbmdzIEJsb2NrIHNldHRpbmdzLlxuICogQHJldHVybiB7P1dQQmxvY2t9ICAgICAgICAgIFRoZSBibG9jaywgaWYgaXQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICovXG5yZWdpc3RlckJsb2NrVHlwZSgnc29jaWFsLXdhcmZhcmUvc29jaWFsLXdhcmZhcmUnLCB7XG5cdHRpdGxlOiBfXygnU29jaWFsIFdhcmZhcmUnKSwgLy8gQmxvY2sgdGl0bGUuXG5cdGljb246IGljb24sXG5cdGNhdGVnb3J5OiAnc29jaWFsLXdhcmZhcmUnLCAvLyBCbG9jayBjYXRlZ29yeSDigJQgR3JvdXAgYmxvY2tzIHRvZ2V0aGVyIGJhc2VkIG9uIGNvbW1vbiB0cmFpdHMgRS5nLiBjb21tb24sIGZvcm1hdHRpbmcsIGxheW91dCB3aWRnZXRzLCBlbWJlZC5cblx0a2V5d29yZHM6IFtcblx0Ly8gSGFzIGEgbGltaXQgb2YgMyBrZXl3b3Jkcy5cblx0X18oJ3NoYXJlJyksIF9fKCdidXR0b24nKSwgX18oJ3R3ZWV0JyldLFxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0aGFzRm9jdXM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZ1YWx0OiBmYWxzZSB9LCAvLyogVXNlZCBvbmx5IGZvciBlZGl0b3IgdG8gZGlzcGxheSBlaXRoZXIgc2xpbSBvciBmdWxsIGJsb2NrLlxuXHRcdHVzZVRoaXNQb3N0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiBcInRoaXNcIiB9LCAvLyogT3B0aW9uIHRvIHVzZSBzaGFyZSBkYXRhIGZyb20gdGhpcyBwb3N0LCBvciBhbm90aGVyIHBvc3QuXG5cdFx0cG9zdElEOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAnJyB9LCAvLyogSWYgJHt1c2VUaGlzUG9zdH0gPT0gJ290aGVyJywgdGhlIElEIG9mIHRhcmdldCBwb3N0IHRvIGZldGNoIGRhdGEgZnJvbS5cblx0XHRidXR0b25zOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnJyB9IC8vKiBBIGNzdiBvZiB2YWxpZCBuZXR3b3JrcyB0byBkaXNwbGF5IGluIHRoZSBzaG9ydGNvZGUuXG5cdH0sXG5cblx0LyoqXG4gICogVGhlIGVkaXQgZnVuY3Rpb24gZGVzY3JpYmVzIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBibG9jayBpbiB0aGUgY29udGV4dCBvZiB0aGUgZWRpdG9yLlxuICAqIFRoaXMgcmVwcmVzZW50cyB3aGF0IHRoZSBlZGl0b3Igd2lsbCByZW5kZXIgd2hlbiB0aGUgYmxvY2sgaXMgdXNlZC5cbiAgKlxuICAqIFRoZSBcImVkaXRcIiBwcm9wZXJ0eSBtdXN0IGJlIGEgdmFsaWQgZnVuY3Rpb24uXG4gICpcbiAgKiBAbGluayBodHRwczovL3dvcmRwcmVzcy5vcmcvZ3V0ZW5iZXJnL2hhbmRib29rL2Jsb2NrLWFwaS9ibG9jay1lZGl0LXNhdmUvXG4gICovXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgX3Byb3BzJGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICB1c2VUaGlzUG9zdCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnVzZVRoaXNQb3N0LFxuXHRcdCAgICBidXR0b25zID0gX3Byb3BzJGF0dHJpYnV0ZXMuYnV0dG9ucyxcblx0XHQgICAgcG9zdElEID0gX3Byb3BzJGF0dHJpYnV0ZXMucG9zdElEO1xuXG5cblx0XHR2YXIgdG9nZ2xlRm9jdXMgPSBmdW5jdGlvbiB0b2dnbGVGb2N1cyhldmVudCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGhhc0ZvY3VzOiAhcHJvcHMuYXR0cmlidXRlcy5oYXNGb2N1cyB9KTtcblx0XHR9O1xuXG5cdFx0dmFyIHVwZGF0ZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGVzKGV2ZW50KSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKF9kZWZpbmVQcm9wZXJ0eSh7fSwgZXZlbnQudGFyZ2V0Lm5hbWUsIGV2ZW50LnRhcmdldC52YWx1ZSkpO1xuXHRcdH07XG5cblx0XHR2YXIgdXBkYXRlQnV0dG9uc0xpc3QgPSBmdW5jdGlvbiB1cGRhdGVCdXR0b25zTGlzdChldmVudCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGJ1dHRvbnM6IGV2ZW50LnRhcmdldC52YWx1ZSB9KTtcblx0XHR9O1xuXG5cdFx0dmFyIHVwZGF0ZVBvc3RJRCA9IGZ1bmN0aW9uIHVwZGF0ZVBvc3RJRChldmVudCkge1xuXHRcdFx0dmFyIHBvc3RJRCA9IHdwLmRhdGEuc2VsZWN0KCdjb3JlL2VkaXRvcicpLmdldEN1cnJlbnRQb3N0SWQoKTtcblx0XHRcdHZhciB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuXHRcdFx0aWYgKHZhbHVlID09ICcnKSB7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBwb3N0SUQ6IFwiXCIgfSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzTmFOKHBhcnNlSW50KHZhbHVlKSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcG9zdElEOiBwYXJzZUludCh2YWx1ZSkgfSk7XG5cdFx0fTtcblxuXHRcdC8vKiBJbmFjdGl2ZSBzdGF0ZVxuXHRcdGlmICghcHJvcHMuYXR0cmlidXRlcy5oYXNGb2N1cykge1xuXHRcdFx0dmFyIF9idXR0b25zID0gcHJvcHMuYXR0cmlidXRlcy5idXR0b25zICYmIHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9ucy5sZW5ndGggPyBcImJ1dHRvbnM9XFxcIlwiICsgcHJvcHMuYXR0cmlidXRlcy5idXR0b25zICsgXCJcXFwiXCIgOiAnJztcblxuXHRcdFx0dmFyIF9wb3N0SUQgPSBwcm9wcy5hdHRyaWJ1dGVzLnVzZVRoaXNQb3N0ID09IFwib3RoZXJcIiA/IFwiaWQ9XFxcIlwiICsgcHJvcHMuYXR0cmlidXRlcy5wb3N0SUQgKyBcIlxcXCJcIiA6ICcnO1xuXG5cdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcImRpdlwiLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lICsgXCIgc29jaWFsLXdhcmZhcmUtYmxvY2std3JhcCBzd3AtaW5hY3RpdmUtYmxvY2tcIiB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XCJkaXZcIixcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogXCJoZWFkXCIsIG9uQ2xpY2s6IHRvZ2dsZUZvY3VzIH0sXG5cdFx0XHRcdFx0aWNvbixcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcImRpdlwiLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6IFwic3dwLXByZXZpZXdcIiB9LFxuXHRcdFx0XHRcdFx0XCJbc29jaWFsX3dhcmZhcmUgXCIsXG5cdFx0XHRcdFx0XHRfYnV0dG9ucyxcblx0XHRcdFx0XHRcdFwiIFwiLFxuXHRcdFx0XHRcdFx0X3Bvc3RJRCxcblx0XHRcdFx0XHRcdFwiXVwiXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoRGFzaGljb24sIHsgY2xhc3NOYW1lOiBcInN3cC1kYXNoaWNvblwiLCBpY29uOiBcImFycm93LWRvd25cIiB9KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vKiBBY3RpdmUgc3RhdGVcblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XCJkaXZcIixcblx0XHRcdHsgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUgKyBcIiBzb2NpYWwtd2FyZmFyZS1ibG9jay13cmFwIHN3cC1hY3RpdmUtYmxvY2tcIiB9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcImRpdlwiLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogXCJoZWFkXCIsIG9uQ2xpY2s6IHRvZ2dsZUZvY3VzIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcImRpdlwiLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0aWNvbixcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcInBcIixcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiBcInN3cC1ibG9jay10aXRsZVwiIH0sXG5cdFx0XHRcdFx0XHRcIlNvY2lhbCBXYXJmYXJlIFNob3J0Y29kZVwiXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoRGFzaGljb24sIHsgY2xhc3NOYW1lOiBcInN3cC1kYXNoaWNvblwiLCBpY29uOiBcImFycm93LWRvd25cIiB9KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XCJwXCIsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdFwiSW5zZXJ0cyBhIFwiLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XCJwcmVcIixcblx0XHRcdFx0XHR7IHN0eWxlOiB7IGRpc3BsYXk6ICdpbmxpbmUnIH0gfSxcblx0XHRcdFx0XHRcIltzb2NpYWxfd2FyZmFyZV1cIlxuXHRcdFx0XHQpLFxuXHRcdFx0XHRcIiBzaG9ydGNvZGUuIExlYXZlIGEgZmllbGQgYmxhbmsgdG8gdXNlIHZhbHVlcyBiYXNlZCBvbiB5b3VyIGdsb2JhbCBzZXR0aW5ncy4gXCIsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcImFcIixcblx0XHRcdFx0XHR7IGhyZWY6IFwiaHR0cHM6Ly93YXJmYXJlcGx1Z2lucy5jb20vc3VwcG9ydC91c2luZy1zaG9ydGNvZGVzLWFuZC1waHAtc25pcHBldHMvXCIgfSxcblx0XHRcdFx0XHRcIkxlYXJuIG1vcmVcIlxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcInBcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XCJTaG91bGQgdGhlIGJ1dHRvbnMgcmVmbGVjdCB0aGlzIHBvc3QsIG9yIGEgZGlmZmVyZW50IHBvc3Q/XCJcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFwic2VsZWN0XCIsXG5cdFx0XHRcdHsgbmFtZTogXCJ1c2VUaGlzUG9zdFwiLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnVzZVRoaXNQb3N0ID09IFwib3RoZXJcIiA/IFwib3RoZXJcIiA6IFwidGhpc1wiLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiB1cGRhdGVBdHRyaWJ1dGVzXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcIm9wdGlvblwiLFxuXHRcdFx0XHRcdHsgdmFsdWU6IFwidGhpc1wiIH0sXG5cdFx0XHRcdFx0XCJUaGlzIHBvc3RcIlxuXHRcdFx0XHQpLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XCJvcHRpb25cIixcblx0XHRcdFx0XHR7IHZhbHVlOiBcIm90aGVyXCIgfSxcblx0XHRcdFx0XHRcIkFub3RoZXIgcG9zdFwiXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnVzZVRoaXNQb3N0ID09IFwib3RoZXJcIiAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFwiZGl2XCIsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcInBcIixcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFwiV2hpY2ggcG9zdCBzaG91bGQgd2UgZmV0Y2ggU1cgc2V0dGluZ3MgYW5kIHNoYXJlcyBmcm9tP1wiXG5cdFx0XHRcdCksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHsgdHlwZTogXCJ0ZXh0XCIsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IHVwZGF0ZVBvc3RJRCxcblx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5wb3N0SURcblx0XHRcdFx0fSlcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFwicFwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcIldoaWNoIG5ldHdvcmtzIHNob3VsZCB3ZSBkaXNwbGF5PyBMZWF2ZSBibGFuayB0byB1c2UgeW91ciBnbG9iYWwgc2V0dGluZ3MuIFwiXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgeyB2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5idXR0b25zLFxuXHRcdFx0XHR0eXBlOiBcInRleHRcIixcblx0XHRcdFx0b25DaGFuZ2U6IHVwZGF0ZUJ1dHRvbnNMaXN0XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG4gICogVGhlIHNhdmUgZnVuY3Rpb24gZGVmaW5lcyB0aGUgd2F5IGluIHdoaWNoIHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBzaG91bGQgYmUgY29tYmluZWRcbiAgKiBpbnRvIHRoZSBmaW5hbCBtYXJrdXAsIHdoaWNoIGlzIHRoZW4gc2VyaWFsaXplZCBieSBHdXRlbmJlcmcgaW50byBwb3N0X2NvbnRlbnQuXG4gICpcbiAgKiBUaGUgXCJzYXZlXCIgcHJvcGVydHkgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIG11c3QgYmUgYSB2YWxpZCBmdW5jdGlvbi5cbiAgKlxuICAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9ndXRlbmJlcmcvaGFuZGJvb2svYmxvY2stYXBpL2Jsb2NrLWVkaXQtc2F2ZS9cbiAgKi9cblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuXHRcdHZhciBidXR0b25zID0gcHJvcHMuYXR0cmlidXRlcy5idXR0b25zICYmIHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9ucy5sZW5ndGggPyBcImJ1dHRvbnM9XFxcIlwiICsgcHJvcHMuYXR0cmlidXRlcy5idXR0b25zICsgXCJcXFwiXCIgOiAnJztcblxuXHRcdHZhciBwb3N0SUQgPSBwcm9wcy5hdHRyaWJ1dGVzLnVzZVRoaXNQb3N0ID09IFwib3RoZXJcIiA/IFwiaWQ9XFxcIlwiICsgcHJvcHMuYXR0cmlidXRlcy5wb3N0SUQgKyBcIlxcXCJcIiA6ICcnO1xuXG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFwiZGl2XCIsXG5cdFx0XHRudWxsLFxuXHRcdFx0XCJbc29jaWFsX3dhcmZhcmUgXCIsXG5cdFx0XHRidXR0b25zLFxuXHRcdFx0XCIgXCIsXG5cdFx0XHRwb3N0SUQsXG5cdFx0XHRcIl1cIlxuXHRcdCk7XG5cdH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2Jsb2NrL3NvY2lhbC13YXJmYXJlLmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n");
108
-
109
- /***/ }),
110
- /* 4 */
111
- /*!*************************************!*\
112
- !*** ./src/block/click-to-tweet.js ***!
113
- \*************************************/
114
- /*! no exports provided */
115
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
116
-
117
- "use strict";
118
- eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_scss__ = __webpack_require__(/*! ../common.scss */ 1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__common_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(/*! ./style.scss */ 0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\n\n\n\n\nvar __ = wp.i18n.__; // Import __() from wp.i18n\n\nvar registerBlockType = wp.blocks.registerBlockType; // Import registerBlockType() from wp.blocks\n\nvar _wp$data$select = wp.data.select('core/editor'),\n getCurrentPostId = _wp$data$select.getCurrentPostId;\n\nvar Dashicon = wp.components.Dashicon;\n\nvar icon = wp.element.createElement(\n\t'div',\n\t{ className: 'swp-block-icon', style: { color: '#429cd6' } },\n\twp.element.createElement(Dashicon, { icon: 'twitter' })\n);\n\n/**\n * Registers a new block provided a unique name and an object defining its\n * behavior. Once registered, the block is made editor as an option to any\n * editor interface where blocks are implemented.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/\n * @param {string} name Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.\n * @param {Object} settings Block settings.\n * @return {?WPBlock} The block, if it has been successfully\n * registered; otherwise `undefined`.\n */\nregisterBlockType('social-warfare/click-to-tweet', {\n\ttitle: __('Click To Tweet'), // Block title.\n\ticon: icon,\n\tcategory: 'social-warfare', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.\n\tkeywords: [\n\t// Has a limit of 3 keywords.\n\t__('twitter'), __('quote'), __('share')],\n\tattributes: {\n\t\thasFocus: { type: 'boolean', defualt: false },\n\t\ttweetText: { type: 'string', default: \"\" }, //* The text to display in the popup dialogue.\n\t\tdisplayText: { type: 'string', default: \"\" }, //* The text to display in the post content CTT.\n\t\toverLimit: { type: 'boolean', default: false } //* If they are over the tweet limit.\n\t},\n\n\t/**\n * The edit function describes the structure of your block in the context of the editor.\n * This represents what the editor will render when the block is used.\n *\n * The \"edit\" property must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\tedit: function edit(props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t tweetText = _props$attributes.tweetText,\n\t\t displayText = _props$attributes.displayText,\n\t\t theme = _props$attributes.theme;\n\n\t\tvar styles = ['Default', 'Send Her My Love', 'Roll With The Changes', 'Free Bird', 'Don\\'t Stop Believin\\'', 'Thunderstruck', 'Livin\\' On A Prayer'];\n\t\tvar characterLimit = 280;\n\t\tvar color = props.attributes.overLimit ? \"rgb(211, 66, 80)\" : \"\";\n\t\tvar className = props.attributes.overLimit ? \"over-limit\" : \"\";\n\n\t\t/**\n * Local method delcarations.\n */\n\t\tvar updateTweetText = function updateTweetText(event) {\n\t\t\tvar tweetText = event.target.value;\n\n\t\t\tif (!tweetText || !tweetText.length) {\n\t\t\t\treturn props.setAttributes({ tweetText: '', overLimit: false });\n\t\t\t}\n\n\t\t\tvar overLimit = tweetText.length > characterLimit;\n\n\t\t\tprops.setAttributes({ overLimit: overLimit, tweetText: tweetText });\n\t\t};\n\n\t\tvar updateDisplayText = function updateDisplayText(event) {\n\t\t\tvar displayText = event.target.value;\n\n\t\t\tprops.setAttributes({ displayText: displayText });\n\t\t};\n\n\t\tvar updateTheme = function updateTheme(event) {\n\t\t\tvar index = event.target.value;\n\n\t\t\tif (parseInt(index) == 0) {\n\t\t\t\tprops.setAttributes({ theme: '' });\n\t\t\t} else {\n\t\t\t\tprops.setAttributes({ theme: index });\n\t\t\t}\n\t\t};\n\n\t\tvar toggleFocus = function toggleFocus(event) {\n\t\t\tprops.setAttributes({ hasFocus: !props.attributes.hasFocus });\n\t\t};\n\n\t\t//* Inactive state\n\t\tif (!props.attributes.hasFocus) {\n\t\t\t/**\n * If no displayText is provided, fallback to use the tweetText.\n * Else display a \"no text provided\" messaged.\n */\n\t\t\tvar text = props.attributes.displayText ? props.attributes.displayText : props.attributes.tweetText ? props.attributes.tweetText : \"No Click To Tweet text is provided.\";\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: props.className + ' click-to-tweet-block-wrap swp-inactive-block' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'head', onClick: toggleFocus },\n\t\t\t\t\ticon,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'swp-preview' },\n\t\t\t\t\t\ttext\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(Dashicon, { className: 'swp-dashicon', icon: 'arrow-down' })\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t//* Active state\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className + ' click-to-tweet-block-wrap swp-active-block' },\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'head', onClick: toggleFocus },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\tnull,\n\t\t\t\t\ticon,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t{ className: 'swp-block-title' },\n\t\t\t\t\t\t'Click to Tweet'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(Dashicon, { className: 'swp-dashicon', icon: 'arrow-up' })\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t'Inserts a ',\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'pre',\n\t\t\t\t\t{ style: { display: 'inline' } },\n\t\t\t\t\t'[click_to_tweet]'\n\t\t\t\t),\n\t\t\t\t' shortcode. ',\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'a',\n\t\t\t\t\t{ href: 'https://warfareplugins.com/support/click-to-tweet/' },\n\t\t\t\t\t'Learn more'\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t'Type your tweet as you want it to display ',\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'b',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t'on Twitter'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t':'\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ style: { width: \"100%\" } },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\t{ className: 'block-characters-remaining ' + className, style: { marginTop: -33 } },\n\t\t\t\t\tcharacterLimit - tweetText.length\n\t\t\t\t),\n\t\t\t\twp.element.createElement('textarea', { name: 'tweetText',\n\t\t\t\t\tplaceholder: 'Type your tweet. . . ',\n\t\t\t\t\tonChange: updateTweetText,\n\t\t\t\t\tvalue: tweetText\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t'Type your quote as you want it to display ',\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'b',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t'on the page'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t':'\n\t\t\t),\n\t\t\twp.element.createElement('textarea', { name: 'displayText',\n\t\t\t\tplaceholder: 'Type your quote. . . ',\n\t\t\t\tonChange: updateDisplayText,\n\t\t\t\tvalue: displayText\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t'Which theme would you like to use for this CTT?'\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'select',\n\t\t\t\t{ name: 'theme',\n\t\t\t\t\tvalue: theme,\n\t\t\t\t\tonChange: updateTheme\n\t\t\t\t},\n\t\t\t\tstyles.map(function (theme, index) {\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'option',\n\t\t\t\t\t\t{ value: index },\n\t\t\t\t\t\ttheme\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t},\n\n\t/**\n * The save function defines the way in which the different attributes should be combined\n * into the final markup, which is then serialized by Gutenberg into post_content.\n *\n * The \"save\" property must be specified and must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\tsave: function save(props) {\n\t\tvar _props$attributes2 = props.attributes,\n\t\t tweetText = _props$attributes2.tweetText,\n\t\t displayText = _props$attributes2.displayText;\n\n\t\tif (!displayText) {\n\t\t\tdisplayText = tweetText;\n\t\t}\n\n\t\tvar theme = props.attributes.theme ? 'style' + props.attributes.theme : '';\n\n\t\tif (!tweetText) return;\n\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\tnull,\n\t\t\t'[click_to_tweet tweet=\"',\n\t\t\ttweetText,\n\t\t\t'\" quote=\"',\n\t\t\tdisplayText,\n\t\t\t'\" theme=\"',\n\t\t\ttheme,\n\t\t\t'\"]'\n\t\t);\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9jbGljay10by10d2VldC5qcz8yMTFiIl0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICcuLi9jb21tb24uc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGUuc2Nzcyc7XG5cbnZhciBfXyA9IHdwLmkxOG4uX187IC8vIEltcG9ydCBfXygpIGZyb20gd3AuaTE4blxuXG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7IC8vIEltcG9ydCByZWdpc3RlckJsb2NrVHlwZSgpIGZyb20gd3AuYmxvY2tzXG5cbnZhciBfd3AkZGF0YSRzZWxlY3QgPSB3cC5kYXRhLnNlbGVjdCgnY29yZS9lZGl0b3InKSxcbiAgICBnZXRDdXJyZW50UG9zdElkID0gX3dwJGRhdGEkc2VsZWN0LmdldEN1cnJlbnRQb3N0SWQ7XG5cbnZhciBEYXNoaWNvbiA9IHdwLmNvbXBvbmVudHMuRGFzaGljb247XG5cbnZhciBpY29uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHQnZGl2Jyxcblx0eyBjbGFzc05hbWU6ICdzd3AtYmxvY2staWNvbicsIHN0eWxlOiB7IGNvbG9yOiAnIzQyOWNkNicgfSB9LFxuXHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoRGFzaGljb24sIHsgaWNvbjogJ3R3aXR0ZXInIH0pXG4pO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG5ldyBibG9jayBwcm92aWRlZCBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBvYmplY3QgZGVmaW5pbmcgaXRzXG4gKiBiZWhhdmlvci4gT25jZSByZWdpc3RlcmVkLCB0aGUgYmxvY2sgaXMgbWFkZSBlZGl0b3IgYXMgYW4gb3B0aW9uIHRvIGFueVxuICogZWRpdG9yIGludGVyZmFjZSB3aGVyZSBibG9ja3MgYXJlIGltcGxlbWVudGVkLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9ndXRlbmJlcmcvaGFuZGJvb2svYmxvY2stYXBpL1xuICogQHBhcmFtICB7c3RyaW5nfSAgIG5hbWUgICAgIEJsb2NrIG5hbWUuIEJsb2NrIG5hbWVzIG11c3QgYmUgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBuYW1lc3BhY2UgcHJlZml4LiBFeGFtcGxlOiBteS1wbHVnaW4vbXktY3VzdG9tLWJsb2NrLlxuICogQHBhcmFtICB7T2JqZWN0fSAgIHNldHRpbmdzIEJsb2NrIHNldHRpbmdzLlxuICogQHJldHVybiB7P1dQQmxvY2t9ICAgICAgICAgIFRoZSBibG9jaywgaWYgaXQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICovXG5yZWdpc3RlckJsb2NrVHlwZSgnc29jaWFsLXdhcmZhcmUvY2xpY2stdG8tdHdlZXQnLCB7XG5cdHRpdGxlOiBfXygnQ2xpY2sgVG8gVHdlZXQnKSwgLy8gQmxvY2sgdGl0bGUuXG5cdGljb246IGljb24sXG5cdGNhdGVnb3J5OiAnc29jaWFsLXdhcmZhcmUnLCAvLyBCbG9jayBjYXRlZ29yeSDigJQgR3JvdXAgYmxvY2tzIHRvZ2V0aGVyIGJhc2VkIG9uIGNvbW1vbiB0cmFpdHMgRS5nLiBjb21tb24sIGZvcm1hdHRpbmcsIGxheW91dCB3aWRnZXRzLCBlbWJlZC5cblx0a2V5d29yZHM6IFtcblx0Ly8gSGFzIGEgbGltaXQgb2YgMyBrZXl3b3Jkcy5cblx0X18oJ3R3aXR0ZXInKSwgX18oJ3F1b3RlJyksIF9fKCdzaGFyZScpXSxcblx0YXR0cmlidXRlczoge1xuXHRcdGhhc0ZvY3VzOiB7IHR5cGU6ICdib29sZWFuJywgZGVmdWFsdDogZmFsc2UgfSxcblx0XHR0d2VldFRleHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6IFwiXCIgfSwgLy8qIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIHBvcHVwIGRpYWxvZ3VlLlxuXHRcdGRpc3BsYXlUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiBcIlwiIH0sIC8vKiBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBwb3N0IGNvbnRlbnQgQ1RULlxuXHRcdG92ZXJMaW1pdDogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0gLy8qIElmIHRoZXkgYXJlIG92ZXIgdGhlIHR3ZWV0IGxpbWl0LlxuXHR9LFxuXG5cdC8qKlxuICAqIFRoZSBlZGl0IGZ1bmN0aW9uIGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIHlvdXIgYmxvY2sgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGVkaXRvci5cbiAgKiBUaGlzIHJlcHJlc2VudHMgd2hhdCB0aGUgZWRpdG9yIHdpbGwgcmVuZGVyIHdoZW4gdGhlIGJsb2NrIGlzIHVzZWQuXG4gICpcbiAgKiBUaGUgXCJlZGl0XCIgcHJvcGVydHkgbXVzdCBiZSBhIHZhbGlkIGZ1bmN0aW9uLlxuICAqXG4gICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xuICAqL1xuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgdHdlZXRUZXh0ID0gX3Byb3BzJGF0dHJpYnV0ZXMudHdlZXRUZXh0LFxuXHRcdCAgICBkaXNwbGF5VGV4dCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmRpc3BsYXlUZXh0LFxuXHRcdCAgICB0aGVtZSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnRoZW1lO1xuXG5cdFx0dmFyIHN0eWxlcyA9IFsnRGVmYXVsdCcsICdTZW5kIEhlciBNeSBMb3ZlJywgJ1JvbGwgV2l0aCBUaGUgQ2hhbmdlcycsICdGcmVlIEJpcmQnLCAnRG9uXFwndCBTdG9wIEJlbGlldmluXFwnJywgJ1RodW5kZXJzdHJ1Y2snLCAnTGl2aW5cXCcgT24gQSBQcmF5ZXInXTtcblx0XHR2YXIgY2hhcmFjdGVyTGltaXQgPSAyODA7XG5cdFx0dmFyIGNvbG9yID0gcHJvcHMuYXR0cmlidXRlcy5vdmVyTGltaXQgPyBcInJnYigyMTEsIDY2LCA4MClcIiA6IFwiXCI7XG5cdFx0dmFyIGNsYXNzTmFtZSA9IHByb3BzLmF0dHJpYnV0ZXMub3ZlckxpbWl0ID8gXCJvdmVyLWxpbWl0XCIgOiBcIlwiO1xuXG5cdFx0LyoqXG4gICAqIExvY2FsIG1ldGhvZCBkZWxjYXJhdGlvbnMuXG4gICAqL1xuXHRcdHZhciB1cGRhdGVUd2VldFRleHQgPSBmdW5jdGlvbiB1cGRhdGVUd2VldFRleHQoZXZlbnQpIHtcblx0XHRcdHZhciB0d2VldFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XG5cblx0XHRcdGlmICghdHdlZXRUZXh0IHx8ICF0d2VldFRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybiBwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdHdlZXRUZXh0OiAnJywgb3ZlckxpbWl0OiBmYWxzZSB9KTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIG92ZXJMaW1pdCA9IHR3ZWV0VGV4dC5sZW5ndGggPiBjaGFyYWN0ZXJMaW1pdDtcblxuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IG92ZXJMaW1pdDogb3ZlckxpbWl0LCB0d2VldFRleHQ6IHR3ZWV0VGV4dCB9KTtcblx0XHR9O1xuXG5cdFx0dmFyIHVwZGF0ZURpc3BsYXlUZXh0ID0gZnVuY3Rpb24gdXBkYXRlRGlzcGxheVRleHQoZXZlbnQpIHtcblx0XHRcdHZhciBkaXNwbGF5VGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGRpc3BsYXlUZXh0OiBkaXNwbGF5VGV4dCB9KTtcblx0XHR9O1xuXG5cdFx0dmFyIHVwZGF0ZVRoZW1lID0gZnVuY3Rpb24gdXBkYXRlVGhlbWUoZXZlbnQpIHtcblx0XHRcdHZhciBpbmRleCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuXHRcdFx0aWYgKHBhcnNlSW50KGluZGV4KSA9PSAwKSB7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0aGVtZTogJycgfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGhlbWU6IGluZGV4IH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR2YXIgdG9nZ2xlRm9jdXMgPSBmdW5jdGlvbiB0b2dnbGVGb2N1cyhldmVudCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGhhc0ZvY3VzOiAhcHJvcHMuYXR0cmlidXRlcy5oYXNGb2N1cyB9KTtcblx0XHR9O1xuXG5cdFx0Ly8qIEluYWN0aXZlIHN0YXRlXG5cdFx0aWYgKCFwcm9wcy5hdHRyaWJ1dGVzLmhhc0ZvY3VzKSB7XG5cdFx0XHQvKipcbiAgICAqIElmIG5vIGRpc3BsYXlUZXh0IGlzIHByb3ZpZGVkLCBmYWxsYmFjayB0byB1c2UgdGhlIHR3ZWV0VGV4dC5cbiAgICAqIEVsc2UgZGlzcGxheSBhIFwibm8gdGV4dCBwcm92aWRlZFwiIG1lc3NhZ2VkLlxuICAgICovXG5cdFx0XHR2YXIgdGV4dCA9IHByb3BzLmF0dHJpYnV0ZXMuZGlzcGxheVRleHQgPyBwcm9wcy5hdHRyaWJ1dGVzLmRpc3BsYXlUZXh0IDogcHJvcHMuYXR0cmlidXRlcy50d2VldFRleHQgPyBwcm9wcy5hdHRyaWJ1dGVzLnR3ZWV0VGV4dCA6IFwiTm8gQ2xpY2sgVG8gVHdlZXQgdGV4dCBpcyBwcm92aWRlZC5cIjtcblxuXHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUgKyAnIGNsaWNrLXRvLXR3ZWV0LWJsb2NrLXdyYXAgc3dwLWluYWN0aXZlLWJsb2NrJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdoZWFkJywgb25DbGljazogdG9nZ2xlRm9jdXMgfSxcblx0XHRcdFx0XHRpY29uLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdzd3AtcHJldmlldycgfSxcblx0XHRcdFx0XHRcdHRleHRcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChEYXNoaWNvbiwgeyBjbGFzc05hbWU6ICdzd3AtZGFzaGljb24nLCBpY29uOiAnYXJyb3ctZG93bicgfSlcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyogQWN0aXZlIHN0YXRlXG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCdkaXYnLFxuXHRcdFx0eyBjbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSArICcgY2xpY2stdG8tdHdlZXQtYmxvY2std3JhcCBzd3AtYWN0aXZlLWJsb2NrJyB9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0eyBjbGFzc05hbWU6ICdoZWFkJywgb25DbGljazogdG9nZ2xlRm9jdXMgfSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0aWNvbixcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3N3cC1ibG9jay10aXRsZScgfSxcblx0XHRcdFx0XHRcdCdDbGljayB0byBUd2VldCdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChEYXNoaWNvbiwgeyBjbGFzc05hbWU6ICdzd3AtZGFzaGljb24nLCBpY29uOiAnYXJyb3ctdXAnIH0pXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQncCcsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdCdJbnNlcnRzIGEgJyxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdwcmUnLFxuXHRcdFx0XHRcdHsgc3R5bGU6IHsgZGlzcGxheTogJ2lubGluZScgfSB9LFxuXHRcdFx0XHRcdCdbY2xpY2tfdG9fdHdlZXRdJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHQnIHNob3J0Y29kZS4gJyxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHR7IGhyZWY6ICdodHRwczovL3dhcmZhcmVwbHVnaW5zLmNvbS9zdXBwb3J0L2NsaWNrLXRvLXR3ZWV0LycgfSxcblx0XHRcdFx0XHQnTGVhcm4gbW9yZSdcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J3AnLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQnVHlwZSB5b3VyIHR3ZWV0IGFzIHlvdSB3YW50IGl0IHRvIGRpc3BsYXkgJyxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdiJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdlbScsXG5cdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0J29uIFR3aXR0ZXInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHQnOidcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHR7IHN0eWxlOiB7IHdpZHRoOiBcIjEwMCVcIiB9IH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdibG9jay1jaGFyYWN0ZXJzLXJlbWFpbmluZyAnICsgY2xhc3NOYW1lLCBzdHlsZTogeyBtYXJnaW5Ub3A6IC0zMyB9IH0sXG5cdFx0XHRcdFx0Y2hhcmFjdGVyTGltaXQgLSB0d2VldFRleHQubGVuZ3RoXG5cdFx0XHRcdCksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnLCB7IG5hbWU6ICd0d2VldFRleHQnLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIHR3ZWV0LiAuIC4gJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogdXBkYXRlVHdlZXRUZXh0LFxuXHRcdFx0XHRcdHZhbHVlOiB0d2VldFRleHRcblx0XHRcdFx0fSlcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdwJyxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0J1R5cGUgeW91ciBxdW90ZSBhcyB5b3Ugd2FudCBpdCB0byBkaXNwbGF5ICcsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnYicsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZW0nLFxuXHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdCdvbiB0aGUgcGFnZSdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdCc6J1xuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnLCB7IG5hbWU6ICdkaXNwbGF5VGV4dCcsXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiAnVHlwZSB5b3VyIHF1b3RlLiAuIC4gJyxcblx0XHRcdFx0b25DaGFuZ2U6IHVwZGF0ZURpc3BsYXlUZXh0LFxuXHRcdFx0XHR2YWx1ZTogZGlzcGxheVRleHRcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQncCcsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdCdXaGljaCB0aGVtZSB3b3VsZCB5b3UgbGlrZSB0byB1c2UgZm9yIHRoaXMgQ1RUPydcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdzZWxlY3QnLFxuXHRcdFx0XHR7IG5hbWU6ICd0aGVtZScsXG5cdFx0XHRcdFx0dmFsdWU6IHRoZW1lLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiB1cGRhdGVUaGVtZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzdHlsZXMubWFwKGZ1bmN0aW9uICh0aGVtZSwgaW5kZXgpIHtcblx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J29wdGlvbicsXG5cdFx0XHRcdFx0XHR7IHZhbHVlOiBpbmRleCB9LFxuXHRcdFx0XHRcdFx0dGhlbWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG4gICogVGhlIHNhdmUgZnVuY3Rpb24gZGVmaW5lcyB0aGUgd2F5IGluIHdoaWNoIHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBzaG91bGQgYmUgY29tYmluZWRcbiAgKiBpbnRvIHRoZSBmaW5hbCBtYXJrdXAsIHdoaWNoIGlzIHRoZW4gc2VyaWFsaXplZCBieSBHdXRlbmJlcmcgaW50byBwb3N0X2NvbnRlbnQuXG4gICpcbiAgKiBUaGUgXCJzYXZlXCIgcHJvcGVydHkgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIG11c3QgYmUgYSB2YWxpZCBmdW5jdGlvbi5cbiAgKlxuICAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9ndXRlbmJlcmcvaGFuZGJvb2svYmxvY2stYXBpL2Jsb2NrLWVkaXQtc2F2ZS9cbiAgKi9cblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuXHRcdHZhciBfcHJvcHMkYXR0cmlidXRlczIgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICB0d2VldFRleHQgPSBfcHJvcHMkYXR0cmlidXRlczIudHdlZXRUZXh0LFxuXHRcdCAgICBkaXNwbGF5VGV4dCA9IF9wcm9wcyRhdHRyaWJ1dGVzMi5kaXNwbGF5VGV4dDtcblxuXHRcdGlmICghZGlzcGxheVRleHQpIHtcblx0XHRcdGRpc3BsYXlUZXh0ID0gdHdlZXRUZXh0O1xuXHRcdH1cblxuXHRcdHZhciB0aGVtZSA9IHByb3BzLmF0dHJpYnV0ZXMudGhlbWUgPyAnc3R5bGUnICsgcHJvcHMuYXR0cmlidXRlcy50aGVtZSA6ICcnO1xuXG5cdFx0aWYgKCF0d2VldFRleHQpIHJldHVybjtcblxuXHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHQnZGl2Jyxcblx0XHRcdG51bGwsXG5cdFx0XHQnW2NsaWNrX3RvX3R3ZWV0IHR3ZWV0PVwiJyxcblx0XHRcdHR3ZWV0VGV4dCxcblx0XHRcdCdcIiBxdW90ZT1cIicsXG5cdFx0XHRkaXNwbGF5VGV4dCxcblx0XHRcdCdcIiB0aGVtZT1cIicsXG5cdFx0XHR0aGVtZSxcblx0XHRcdCdcIl0nXG5cdFx0KTtcblx0fVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYmxvY2svY2xpY2stdG8tdHdlZXQuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n");
119
-
120
- /***/ }),
121
- /* 5 */
122
- /*!********************************!*\
123
- !*** ./src/block/pinterest.js ***!
124
- \********************************/
125
- /*! no exports provided */
126
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
127
-
128
- "use strict";
129
- eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_scss__ = __webpack_require__(/*! ../common.scss */ 1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__common_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(/*! ./style.scss */ 0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n// Give the page 10 seconds to load before bailing.\nvar timeout = +new Date() + 10000;\n\n//* The socialWarfare object does not exist at the time this file is loaded, so wait for it first.\nvar checker = setInterval(function () {\n\tif (+new Date() > timeout) clearTimeout(checker);\n\tif (!socialWarfare) return;\n\n\tclearInterval(checker);\n\tif (!socialWarfare.addons || !socialWarfare.addons.includes('pro')) {\n\t\treturn;\n\t}\n\n\tvar __ = wp.i18n.__; // Import __() from wp.i18n\n\n\tvar registerBlockType = wp.blocks.registerBlockType; // Import registerBlockType() from wp.blocks\n\n\tvar _wp$data$select = wp.data.select('core/editor'),\n\t getCurrentPostId = _wp$data$select.getCurrentPostId;\n\n\tvar Dashicon = wp.components.Dashicon;\n\tvar icon = wp.element.createElement(\n\t\t'div',\n\t\t{ className: 'swp-block-icon' },\n\t\twp.element.createElement(\n\t\t\t'svg',\n\t\t\t{ version: '1.1', id: 'Layer_1', x: '0px', y: '0px', viewBox: '0 0 32 32', 'enable-background': 'new 0 0 32 32' },\n\t\t\twp.element.createElement(\n\t\t\t\t'g',\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement('path', { fill: '#cd2029', d: 'M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6 s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3 c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7 c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9 c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5 c6.7,0,12.1-5.4,12.1-12.1C28.1,9.3,22.7,3.9,16,3.9z' })\n\t\t\t)\n\t\t)\n\t);\n\n\t/**\n * Registers a new block provided a unique name and an object defining its\n * behavior. Once registered, the block is made editor as an option to any\n * editor interface where blocks are implemented.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/\n * @param {string} name Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.\n * @param {Object} settings Block settings.\n * @return {?WPBlock} The block, if it has been successfully\n * registered; otherwise `undefined`.\n */\n\tregisterBlockType('social-warfare/pinterest', {\n\t\ttitle: __('Pinterest Image'), // Block title.\n\t\ticon: icon,\n\t\tcategory: 'social-warfare', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.\n\t\tkeywords: [\n\t\t// Has a limit of 3 keywords.\n\t\t__('share'), __('pin'), __('tailwind')],\n\t\tattributes: {\n\t\t\thasFocus: { type: 'boolean', defualt: false },\n\t\t\tid: { type: 'number', default: 0 },\n\t\t\twidth: { type: 'number', default: 0 },\n\t\t\theight: { type: 'number', default: 0 },\n\t\t\tclassName: { type: 'string', default: '' },\n\t\t\talignment: { type: 'string', default: '' }\n\t\t},\n\n\t\t/**\n * The edit function describes the structure of your block in the context of the editor.\n * This represents what the editor will render when the block is used.\n *\n * The \"edit\" property must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\t\tedit: function edit(props) {\n\t\t\tvar toggleFocus = function toggleFocus(event) {\n\t\t\t\tprops.setAttributes({ hasFocus: !props.attributes.hasFocus });\n\t\t\t};\n\n\t\t\tvar attributes = {\n\t\t\t\t//* key: 'Display Text',\n\t\t\t\tid: 'Post ID or Image ID',\n\t\t\t\twidth: 'Width (in pixels)',\n\t\t\t\theight: 'Height (in pixels)',\n\t\t\t\tclassName: 'Custom CSS class',\n\t\t\t\talignment: 'Alignment. You may enter one of: left, right, center'\n\t\t\t};\n\n\t\t\tvar updateAttribute = function updateAttribute(event) {\n\t\t\t\tprops.setAttributes(_defineProperty({}, event.target.name, event.target.value));\n\t\t\t};\n\n\t\t\t//* Inactive state\n\t\t\tif (!props.attributes.hasFocus) {\n\n\t\t\t\t//* Create the attribute=\"value\" string for the shortcode.\n\t\t\t\tvar attributeString = Object.entries(props.attributes).reduce(function (string, _ref) {\n\t\t\t\t\tvar _ref2 = _slicedToArray(_ref, 2),\n\t\t\t\t\t attr = _ref2[0],\n\t\t\t\t\t value = _ref2[1];\n\n\t\t\t\t\tif (!value.length || typeof value == 'undefined') return string;\n\t\t\t\t\treturn string += ' ' + attr + '=\"' + value + '\"';\n\t\t\t\t}, '');\n\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: props.className + ' pinterest-block-wrap swp-inactive-block' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'head', onClick: toggleFocus },\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'swp-preview' },\n\t\t\t\t\t\t\t'[pinterest_image',\n\t\t\t\t\t\t\tattributeString,\n\t\t\t\t\t\t\t']'\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(Dashicon, { className: 'swp-dashicon', icon: 'arrow-down' })\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t//* Active state\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: props.className + ' pinterest-block-wrap swp-active-block' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'head', onClick: toggleFocus },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t{ className: 'swp-block-title' },\n\t\t\t\t\t\t\t'Pinterest Image'\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(Dashicon, { className: 'swp-dashicon', icon: 'arrow-up' })\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\t'Inserts a ',\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'pre',\n\t\t\t\t\t\t{ style: { display: 'inline' } },\n\t\t\t\t\t\t'[pinterest_image]'\n\t\t\t\t\t),\n\t\t\t\t\t' shortcode. Leave a field blank to use values based on your global settings.'\n\t\t\t\t),\n\n\t\t\t\t//* All attributes except `alignment`.\n\t\t\t\tObject.entries(attributes).map(function (_ref3) {\n\t\t\t\t\tvar _ref4 = _slicedToArray(_ref3, 2),\n\t\t\t\t\t name = _ref4[0],\n\t\t\t\t\t displayText = _ref4[1];\n\n\t\t\t\t\tif (name == 'alignment') return;\n\t\t\t\t\tvar className = name == 'width' || name == 'height' ? \"swp-inner-block-50\" : '';\n\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: className },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tdisplayText\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement('input', { name: name,\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tonChange: updateAttribute,\n\t\t\t\t\t\t\tvalue: props.attributes[name] || ''\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t'Alignment'\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'select',\n\t\t\t\t\t\t{ name: 'alignment',\n\t\t\t\t\t\t\tvalue: props.attributes.alignment ? props.attributes.alignment : '',\n\t\t\t\t\t\t\tonChange: updateAttribute\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'option',\n\t\t\t\t\t\t\t{ value: '' },\n\t\t\t\t\t\t\t'Default'\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'option',\n\t\t\t\t\t\t\t{ value: 'left' },\n\t\t\t\t\t\t\t'Left'\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'option',\n\t\t\t\t\t\t\t{ value: 'center' },\n\t\t\t\t\t\t\t'Center'\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'option',\n\t\t\t\t\t\t\t{ value: 'right' },\n\t\t\t\t\t\t\t'Right'\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\n\t\t/**\n * The save function defines the way in which the different attributes should be combined\n * into the final markup, which is then serialized by Gutenberg into post_content.\n *\n * The \"save\" property must be specified and must be a valid function.\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n */\n\t\tsave: function save(props) {\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\tnull,\n\t\t\t\t'[pinterest_image]'\n\t\t\t);\n\t\t}\n\t});\n}, 100);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9waW50ZXJlc3QuanM/NGNmNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX3NsaWNlZFRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIHNsaWNlSXRlcmF0b3IoYXJyLCBpKSB7IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH0gcmV0dXJuIGZ1bmN0aW9uIChhcnIsIGkpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyByZXR1cm4gYXJyOyB9IGVsc2UgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkgeyByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpOyB9IGVsc2UgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfSB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCAnLi4vY29tbW9uLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlLnNjc3MnO1xuXG4vLyBHaXZlIHRoZSBwYWdlIDEwIHNlY29uZHMgdG8gbG9hZCBiZWZvcmUgYmFpbGluZy5cbnZhciB0aW1lb3V0ID0gK25ldyBEYXRlKCkgKyAxMDAwMDtcblxuLy8qIFRoZSBzb2NpYWxXYXJmYXJlIG9iamVjdCBkb2VzIG5vdCBleGlzdCBhdCB0aGUgdGltZSB0aGlzIGZpbGUgaXMgbG9hZGVkLCBzbyB3YWl0IGZvciBpdCBmaXJzdC5cbnZhciBjaGVja2VyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuXHRpZiAoK25ldyBEYXRlKCkgPiB0aW1lb3V0KSBjbGVhclRpbWVvdXQoY2hlY2tlcik7XG5cdGlmICghc29jaWFsV2FyZmFyZSkgcmV0dXJuO1xuXG5cdGNsZWFySW50ZXJ2YWwoY2hlY2tlcik7XG5cdGlmICghc29jaWFsV2FyZmFyZS5hZGRvbnMgfHwgIXNvY2lhbFdhcmZhcmUuYWRkb25zLmluY2x1ZGVzKCdwcm8nKSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHZhciBfXyA9IHdwLmkxOG4uX187IC8vIEltcG9ydCBfXygpIGZyb20gd3AuaTE4blxuXG5cdHZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTsgLy8gSW1wb3J0IHJlZ2lzdGVyQmxvY2tUeXBlKCkgZnJvbSB3cC5ibG9ja3NcblxuXHR2YXIgX3dwJGRhdGEkc2VsZWN0ID0gd3AuZGF0YS5zZWxlY3QoJ2NvcmUvZWRpdG9yJyksXG5cdCAgICBnZXRDdXJyZW50UG9zdElkID0gX3dwJGRhdGEkc2VsZWN0LmdldEN1cnJlbnRQb3N0SWQ7XG5cblx0dmFyIERhc2hpY29uID0gd3AuY29tcG9uZW50cy5EYXNoaWNvbjtcblx0dmFyIGljb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0J2RpdicsXG5cdFx0eyBjbGFzc05hbWU6ICdzd3AtYmxvY2staWNvbicgfSxcblx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHQnc3ZnJyxcblx0XHRcdHsgdmVyc2lvbjogJzEuMScsIGlkOiAnTGF5ZXJfMScsIHg6ICcwcHgnLCB5OiAnMHB4Jywgdmlld0JveDogJzAgMCAzMiAzMicsICdlbmFibGUtYmFja2dyb3VuZCc6ICduZXcgMCAwIDMyIDMyJyB9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQnZycsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgncGF0aCcsIHsgZmlsbDogJyNjZDIwMjknLCBkOiAnTTE2LDMuOUM5LjMsMy45LDMuOSw5LjMsMy45LDE2YzAsNC45LDMsOS4yLDcuMiwxMS4xYzAtMC44LDAtMS45LDAuMi0yLjhjMC4yLTEsMS42LTYuNiwxLjYtNi42IHMtMC40LTAuOC0wLjQtMS45YzAtMS44LDEtMy4xLDIuMy0zLjFjMS4xLDAsMS42LDAuOCwxLjYsMS44YzAsMS4xLTAuNywyLjgtMS4xLDQuM2MtMC4zLDEuMywwLjYsMi4zLDEuOSwyLjMgYzIuMywwLDMuOC0yLjksMy44LTYuNGMwLTIuNi0xLjgtNC42LTUtNC42Yy0zLjcsMC01LjksMi43LTUuOSw1LjhjMCwxLjEsMC4zLDEuOCwwLjgsMi40YzAuMiwwLjMsMC4zLDAuNCwwLjIsMC43IGMtMC4xLDAuMi0wLjIsMC44LTAuMiwxYy0wLjEsMC4zLTAuMywwLjQtMC42LDAuM2MtMS43LTAuNy0yLjUtMi41LTIuNS00LjZjMC0zLjQsMi45LTcuNSw4LjYtNy41YzQuNiwwLDcuNiwzLjMsNy42LDYuOSBjMCw0LjctMi42LDguMy02LjUsOC4zYy0xLjMsMC0yLjUtMC43LTIuOS0xLjVjMCwwLTAuNywyLjgtMC45LDMuM2MtMC4zLDAuOS0wLjgsMS45LTEuMiwyLjZjMS4xLDAuMywyLjIsMC41LDMuNCwwLjUgYzYuNywwLDEyLjEtNS40LDEyLjEtMTIuMUMyOC4xLDkuMywyMi43LDMuOSwxNiwzLjl6JyB9KVxuXHRcdFx0KVxuXHRcdClcblx0KTtcblxuXHQvKipcbiAgKiBSZWdpc3RlcnMgYSBuZXcgYmxvY2sgcHJvdmlkZWQgYSB1bmlxdWUgbmFtZSBhbmQgYW4gb2JqZWN0IGRlZmluaW5nIGl0c1xuICAqIGJlaGF2aW9yLiBPbmNlIHJlZ2lzdGVyZWQsIHRoZSBibG9jayBpcyBtYWRlIGVkaXRvciBhcyBhbiBvcHRpb24gdG8gYW55XG4gICogZWRpdG9yIGludGVyZmFjZSB3aGVyZSBibG9ja3MgYXJlIGltcGxlbWVudGVkLlxuICAqXG4gICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvXG4gICogQHBhcmFtICB7c3RyaW5nfSAgIG5hbWUgICAgIEJsb2NrIG5hbWUuIEJsb2NrIG5hbWVzIG11c3QgYmUgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBuYW1lc3BhY2UgcHJlZml4LiBFeGFtcGxlOiBteS1wbHVnaW4vbXktY3VzdG9tLWJsb2NrLlxuICAqIEBwYXJhbSAge09iamVjdH0gICBzZXR0aW5ncyBCbG9jayBzZXR0aW5ncy5cbiAgKiBAcmV0dXJuIHs/V1BCbG9ja30gICAgICAgICAgVGhlIGJsb2NrLCBpZiBpdCBoYXMgYmVlbiBzdWNjZXNzZnVsbHlcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICAqL1xuXHRyZWdpc3RlckJsb2NrVHlwZSgnc29jaWFsLXdhcmZhcmUvcGludGVyZXN0Jywge1xuXHRcdHRpdGxlOiBfXygnUGludGVyZXN0IEltYWdlJyksIC8vIEJsb2NrIHRpdGxlLlxuXHRcdGljb246IGljb24sXG5cdFx0Y2F0ZWdvcnk6ICdzb2NpYWwtd2FyZmFyZScsIC8vIEJsb2NrIGNhdGVnb3J5IOKAlCBHcm91cCBibG9ja3MgdG9nZXRoZXIgYmFzZWQgb24gY29tbW9uIHRyYWl0cyBFLmcuIGNvbW1vbiwgZm9ybWF0dGluZywgbGF5b3V0IHdpZGdldHMsIGVtYmVkLlxuXHRcdGtleXdvcmRzOiBbXG5cdFx0Ly8gSGFzIGEgbGltaXQgb2YgMyBrZXl3b3Jkcy5cblx0XHRfXygnc2hhcmUnKSwgX18oJ3BpbicpLCBfXygndGFpbHdpbmQnKV0sXG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0aGFzRm9jdXM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZ1YWx0OiBmYWxzZSB9LFxuXHRcdFx0aWQ6IHsgdHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDAgfSxcblx0XHRcdHdpZHRoOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAwIH0sXG5cdFx0XHRoZWlnaHQ6IHsgdHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDAgfSxcblx0XHRcdGNsYXNzTmFtZTogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJycgfSxcblx0XHRcdGFsaWdubWVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJycgfVxuXHRcdH0sXG5cblx0XHQvKipcbiAgICogVGhlIGVkaXQgZnVuY3Rpb24gZGVzY3JpYmVzIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBibG9jayBpbiB0aGUgY29udGV4dCBvZiB0aGUgZWRpdG9yLlxuICAgKiBUaGlzIHJlcHJlc2VudHMgd2hhdCB0aGUgZWRpdG9yIHdpbGwgcmVuZGVyIHdoZW4gdGhlIGJsb2NrIGlzIHVzZWQuXG4gICAqXG4gICAqIFRoZSBcImVkaXRcIiBwcm9wZXJ0eSBtdXN0IGJlIGEgdmFsaWQgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9ndXRlbmJlcmcvaGFuZGJvb2svYmxvY2stYXBpL2Jsb2NrLWVkaXQtc2F2ZS9cbiAgICovXG5cdFx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdFx0dmFyIHRvZ2dsZUZvY3VzID0gZnVuY3Rpb24gdG9nZ2xlRm9jdXMoZXZlbnQpIHtcblx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGhhc0ZvY3VzOiAhcHJvcHMuYXR0cmlidXRlcy5oYXNGb2N1cyB9KTtcblx0XHRcdH07XG5cblx0XHRcdHZhciBhdHRyaWJ1dGVzID0ge1xuXHRcdFx0XHQvLyoga2V5OiAnRGlzcGxheSBUZXh0Jyxcblx0XHRcdFx0aWQ6ICdQb3N0IElEIG9yIEltYWdlIElEJyxcblx0XHRcdFx0d2lkdGg6ICdXaWR0aCAoaW4gcGl4ZWxzKScsXG5cdFx0XHRcdGhlaWdodDogJ0hlaWdodCAoaW4gcGl4ZWxzKScsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ0N1c3RvbSBDU1MgY2xhc3MnLFxuXHRcdFx0XHRhbGlnbm1lbnQ6ICdBbGlnbm1lbnQuIFlvdSBtYXkgZW50ZXIgb25lIG9mOiBsZWZ0LCByaWdodCwgY2VudGVyJ1xuXHRcdFx0fTtcblxuXHRcdFx0dmFyIHVwZGF0ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uIHVwZGF0ZUF0dHJpYnV0ZShldmVudCkge1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKF9kZWZpbmVQcm9wZXJ0eSh7fSwgZXZlbnQudGFyZ2V0Lm5hbWUsIGV2ZW50LnRhcmdldC52YWx1ZSkpO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8qIEluYWN0aXZlIHN0YXRlXG5cdFx0XHRpZiAoIXByb3BzLmF0dHJpYnV0ZXMuaGFzRm9jdXMpIHtcblxuXHRcdFx0XHQvLyogQ3JlYXRlIHRoZSBhdHRyaWJ1dGU9XCJ2YWx1ZVwiIHN0cmluZyBmb3IgdGhlIHNob3J0Y29kZS5cblx0XHRcdFx0dmFyIGF0dHJpYnV0ZVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbiAoc3RyaW5nLCBfcmVmKSB7XG5cdFx0XHRcdFx0dmFyIF9yZWYyID0gX3NsaWNlZFRvQXJyYXkoX3JlZiwgMiksXG5cdFx0XHRcdFx0ICAgIGF0dHIgPSBfcmVmMlswXSxcblx0XHRcdFx0XHQgICAgdmFsdWUgPSBfcmVmMlsxXTtcblxuXHRcdFx0XHRcdGlmICghdmFsdWUubGVuZ3RoIHx8IHR5cGVvZiB2YWx1ZSA9PSAndW5kZWZpbmVkJykgcmV0dXJuIHN0cmluZztcblx0XHRcdFx0XHRyZXR1cm4gc3RyaW5nICs9ICcgJyArIGF0dHIgKyAnPVwiJyArIHZhbHVlICsgJ1wiJztcblx0XHRcdFx0fSwgJycpO1xuXG5cdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0eyBjbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSArICcgcGludGVyZXN0LWJsb2NrLXdyYXAgc3dwLWluYWN0aXZlLWJsb2NrJyB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdoZWFkJywgb25DbGljazogdG9nZ2xlRm9jdXMgfSxcblx0XHRcdFx0XHRcdGljb24sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3N3cC1wcmV2aWV3JyB9LFxuXHRcdFx0XHRcdFx0XHQnW3BpbnRlcmVzdF9pbWFnZScsXG5cdFx0XHRcdFx0XHRcdGF0dHJpYnV0ZVN0cmluZyxcblx0XHRcdFx0XHRcdFx0J10nXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KERhc2hpY29uLCB7IGNsYXNzTmFtZTogJ3N3cC1kYXNoaWNvbicsIGljb246ICdhcnJvdy1kb3duJyB9KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8qIEFjdGl2ZSBzdGF0ZVxuXHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUgKyAnIHBpbnRlcmVzdC1ibG9jay13cmFwIHN3cC1hY3RpdmUtYmxvY2snIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2hlYWQnLCBvbkNsaWNrOiB0b2dnbGVGb2N1cyB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdGljb24sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdzd3AtYmxvY2stdGl0bGUnIH0sXG5cdFx0XHRcdFx0XHRcdCdQaW50ZXJlc3QgSW1hZ2UnXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoRGFzaGljb24sIHsgY2xhc3NOYW1lOiAnc3dwLWRhc2hpY29uJywgaWNvbjogJ2Fycm93LXVwJyB9KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0J0luc2VydHMgYSAnLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdwcmUnLFxuXHRcdFx0XHRcdFx0eyBzdHlsZTogeyBkaXNwbGF5OiAnaW5saW5lJyB9IH0sXG5cdFx0XHRcdFx0XHQnW3BpbnRlcmVzdF9pbWFnZV0nXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQnIHNob3J0Y29kZS4gTGVhdmUgYSBmaWVsZCBibGFuayB0byB1c2UgdmFsdWVzIGJhc2VkIG9uIHlvdXIgZ2xvYmFsIHNldHRpbmdzLidcblx0XHRcdFx0KSxcblxuXHRcdFx0XHQvLyogQWxsIGF0dHJpYnV0ZXMgZXhjZXB0IGBhbGlnbm1lbnRgLlxuXHRcdFx0XHRPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24gKF9yZWYzKSB7XG5cdFx0XHRcdFx0dmFyIF9yZWY0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjMsIDIpLFxuXHRcdFx0XHRcdCAgICBuYW1lID0gX3JlZjRbMF0sXG5cdFx0XHRcdFx0ICAgIGRpc3BsYXlUZXh0ID0gX3JlZjRbMV07XG5cblx0XHRcdFx0XHRpZiAobmFtZSA9PSAnYWxpZ25tZW50JykgcmV0dXJuO1xuXHRcdFx0XHRcdHZhciBjbGFzc05hbWUgPSBuYW1lID09ICd3aWR0aCcgfHwgbmFtZSA9PSAnaGVpZ2h0JyA/IFwic3dwLWlubmVyLWJsb2NrLTUwXCIgOiAnJztcblxuXHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5VGV4dFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IG5hbWU6IG5hbWUsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0Jyxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHVwZGF0ZUF0dHJpYnV0ZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXNbbmFtZV0gfHwgJydcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHQnQWxpZ25tZW50J1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J3NlbGVjdCcsXG5cdFx0XHRcdFx0XHR7IG5hbWU6ICdhbGlnbm1lbnQnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5hbGlnbm1lbnQgPyBwcm9wcy5hdHRyaWJ1dGVzLmFsaWdubWVudCA6ICcnLFxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogdXBkYXRlQXR0cmlidXRlXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0eyB2YWx1ZTogJycgfSxcblx0XHRcdFx0XHRcdFx0J0RlZmF1bHQnXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0eyB2YWx1ZTogJ2xlZnQnIH0sXG5cdFx0XHRcdFx0XHRcdCdMZWZ0J1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdHsgdmFsdWU6ICdjZW50ZXInIH0sXG5cdFx0XHRcdFx0XHRcdCdDZW50ZXInXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0eyB2YWx1ZTogJ3JpZ2h0JyB9LFxuXHRcdFx0XHRcdFx0XHQnUmlnaHQnXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0sXG5cblx0XHQvKipcbiAgICogVGhlIHNhdmUgZnVuY3Rpb24gZGVmaW5lcyB0aGUgd2F5IGluIHdoaWNoIHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBzaG91bGQgYmUgY29tYmluZWRcbiAgICogaW50byB0aGUgZmluYWwgbWFya3VwLCB3aGljaCBpcyB0aGVuIHNlcmlhbGl6ZWQgYnkgR3V0ZW5iZXJnIGludG8gcG9zdF9jb250ZW50LlxuICAgKlxuICAgKiBUaGUgXCJzYXZlXCIgcHJvcGVydHkgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIG11c3QgYmUgYSB2YWxpZCBmdW5jdGlvbi5cbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xuICAgKi9cblx0XHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cblx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQnW3BpbnRlcmVzdF9pbWFnZV0nXG5cdFx0XHQpO1xuXHRcdH1cblx0fSk7XG59LCAxMDApO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2Jsb2NrL3BpbnRlcmVzdC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n");
130
-
131
- /***/ })
132
- /******/ ]);
1
+ !function(e){function t(n){if(a[n])return a[n].exports;var l=a[n]={i:n,l:!1,exports:{}};return e[n].call(l.exports,l,l.exports,t),l.l=!0,l.exports}var a={};t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t){},function(e,t){},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});a(3),a(4),a(5)},function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var l=a(0),r=(a.n(l),wp.i18n.__),s=wp.blocks.registerBlockType,i=wp.components.Dashicon,c=wp.element.createElement("div",{className:"swp-block-icon"},wp.element.createElement("svg",{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 32 32","enable-background":"new 0 0 32 32"},wp.element.createElement("path",{fill:"#ee464f",d:"M8.6,9.9c0.2-0.8,1.8-4.2,5.5-6.3C8.1,4.5,3.5,9.7,3.5,15.9c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3 l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C17.1,17.8,5.5,18.5,8.6,9.9z M27.2,10.4 c-0.3,0.3-0.6,0.6-1.1,0.7L21.4,12c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7 c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C28.5,14,28,12.1,27.2,10.4z"})));s("social-warfare/social-warfare",{title:r("Social Warfare"),icon:c,category:"social-warfare",keywords:[r("share"),r("button"),r("tweet")],attributes:{hasFocus:{type:"boolean",defualt:!1},useThisPost:{type:"string",default:"this"},postID:{type:"number",default:""},buttons:{type:"string",default:""}},edit:function(e){var t=e.attributes,a=(t.useThisPost,t.buttons,t.postID,function(t){e.setAttributes({hasFocus:!e.attributes.hasFocus})}),l=function(t){e.setAttributes(n({},t.target.name,t.target.value))},r=function(t){e.setAttributes({buttons:t.target.value})},s=function(t){var a=(wp.data.select("core/editor").getCurrentPostId(),t.target.value);if(""==a)return void e.setAttributes({postID:""});isNaN(parseInt(a))||e.setAttributes({postID:parseInt(a)})};if(!e.attributes.hasFocus){var o=e.attributes.buttons&&e.attributes.buttons.length?'buttons="'+e.attributes.buttons+'"':"",u="other"==e.attributes.useThisPost?'id="'+e.attributes.postID+'"':"";return wp.element.createElement("div",{className:"social-warfare-admin-block"},wp.element.createElement("div",{className:e.className+" social-warfare-block-wrap swp-inactive-block"},wp.element.createElement("div",{className:"head",onClick:a},c,wp.element.createElement("div",{className:"swp-preview"},"[social_warfare ",o," ",u,"]"),wp.element.createElement(i,{className:"swp-dashicon",icon:"arrow-down"}))))}return wp.element.createElement("div",{className:"social-warfare-admin-block"},wp.element.createElement("div",{className:e.className+" social-warfare-block-wrap swp-active-block"},wp.element.createElement("div",{className:"head",onClick:a},wp.element.createElement("div",null,c,wp.element.createElement("p",{className:"swp-block-title"},"Social Warfare Shortcode")),wp.element.createElement(i,{className:"swp-dashicon",icon:"arrow-down"})),wp.element.createElement("p",null,"Inserts a rockin ",wp.element.createElement("pre",{style:{display:"inline"}},"[social_warfare]")," shortcode. Leave a field blank to use values based on your global settings. ",wp.element.createElement("a",{href:"https://warfareplugins.com/support/using-shortcodes-and-php-snippets/"},"Learn more")),wp.element.createElement("p",null,"Should the buttons reflect this post, or a different post?"),wp.element.createElement("select",{name:"useThisPost",value:"other"==e.attributes.useThisPost?"other":"this",onChange:l},wp.element.createElement("option",{value:"this"},"This post"),wp.element.createElement("option",{value:"other"},"Another post")),"other"==e.attributes.useThisPost&&wp.element.createElement("div",null,wp.element.createElement("p",null,"Which post should we fetch SW settings and shares from?"),wp.element.createElement("input",{type:"text",onChange:s,value:e.attributes.postID})),wp.element.createElement("p",null,"Which networks should we display? Leave blank to use your global settings. "),wp.element.createElement("input",{value:e.attributes.buttons,type:"text",onChange:r})))},save:function(e){var t=e.attributes.buttons&&e.attributes.buttons.length?'buttons="'+e.attributes.buttons+'"':"",a="other"==e.attributes.useThisPost?'id="'+e.attributes.postID+'"':"";return wp.element.createElement("div",null,"[social_warfare ",t," ",a,"]")}})},function(e,t,a){"use strict";var n=a(1),l=(a.n(n),a(0)),r=(a.n(l),wp.i18n.__),s=wp.blocks.registerBlockType,i=wp.data.select("core/editor"),c=(i.getCurrentPostId,wp.components.Dashicon),o=wp.element.createElement("div",{className:"swp-block-icon",style:{color:"#429cd6"}},wp.element.createElement(c,{icon:"twitter"}));s("social-warfare/click-to-tweet",{title:r("Click To Tweet"),icon:o,category:"social-warfare",keywords:[r("twitter"),r("quote"),r("share")],attributes:{hasFocus:{type:"boolean",defualt:!1},tweetText:{type:"string",default:""},displayText:{type:"string",default:""},overLimit:{type:"boolean",default:!1}},edit:function(e){console.log("editing ctt"),window.onetwothree=123;var t=e.attributes,a=t.tweetText,n=t.displayText,l=t.theme,r=["Default","Send Her My Love","Roll With The Changes","Free Bird","Don't Stop Believin'","Thunderstruck","Livin' On A Prayer"],s=(e.attributes.overLimit,e.attributes.overLimit?"over-limit":""),i=function(t){var a=t.target.value;if(!a||!a.length)return e.setAttributes({tweetText:"",overLimit:!1});var n=a.length>280;e.setAttributes({overLimit:n,tweetText:a})},u=function(t){var a=t.target.value;e.setAttributes({displayText:a})},m=function(t){var a=t.target.value;0==parseInt(a)?e.setAttributes({theme:""}):e.setAttributes({theme:a})},p=function(t){e.setAttributes({hasFocus:!e.attributes.hasFocus})};if(!e.attributes.hasFocus){var w=e.attributes.displayText?e.attributes.displayText:e.attributes.tweetText?e.attributes.tweetText:"No Click To Tweet text is provided.";return wp.element.createElement("div",{className:"social-warfare-admin-block"},wp.element.createElement("div",{className:e.className+" click-to-tweet-block-wrap swp-inactive-block"},wp.element.createElement("div",{className:"head",onClick:p},o,wp.element.createElement("div",{className:"swp-preview"},w),wp.element.createElement(c,{className:"swp-dashicon",icon:"arrow-down"}))))}return wp.element.createElement("div",{className:"social-warfare-admin-block"},wp.element.createElement("div",{className:e.className+" click-to-tweet-block-wrap swp-active-block"},wp.element.createElement("div",{className:"head",onClick:p},wp.element.createElement("div",null,o,wp.element.createElement("p",{className:"swp-block-title"},"Click to Tweet")),wp.element.createElement(c,{className:"swp-dashicon",icon:"arrow-up"})),wp.element.createElement("p",null,"Inserts a ",wp.element.createElement("pre",{style:{display:"inline"}},"[click_to_tweet]")," shortcode. ",wp.element.createElement("a",{href:"https://warfareplugins.com/support/click-to-tweet/"},"Learn more")),wp.element.createElement("p",null,"Type your tweet as you want it to display ",wp.element.createElement("b",null,wp.element.createElement("em",null,"on Twitter")),":"),wp.element.createElement("div",{style:{width:"100%"}},wp.element.createElement("p",{className:"block-characters-remaining "+s,style:{marginTop:-33}},280-a.length),wp.element.createElement("textarea",{name:"tweetText",placeholder:"Type your tweet. . . ",onChange:i,value:a})),wp.element.createElement("p",null,"Type your quote as you want it to display ",wp.element.createElement("b",null,wp.element.createElement("em",null,"on the page")),":"),wp.element.createElement("textarea",{name:"displayText",placeholder:"Type your quote. . . ",onChange:u,value:n}),wp.element.createElement("p",null,"Which theme would you like to use for this CTT?"),wp.element.createElement("select",{name:"theme",value:l,onChange:m},r.map(function(e,t){return wp.element.createElement("option",{value:t},e)}))))},save:function(e){console.log("saving ctt");var t=e.attributes,a=t.tweetText,n=t.displayText;n||(n=a);var l=e.attributes.theme?"style"+e.attributes.theme:"";if(a)return wp.element.createElement("div",{className:"social-warfare-admin-block"},'[click_to_tweet tweet="',a,'" quote="',n,'" theme="',l,'"]')}})},function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var l=a(1),r=(a.n(l),a(0)),s=(a.n(r),function(){function e(e,t){var a=[],n=!0,l=!1,r=void 0;try{for(var s,i=e[Symbol.iterator]();!(n=(s=i.next()).done)&&(a.push(s.value),!t||a.length!==t);n=!0);}catch(e){l=!0,r=e}finally{try{!n&&i.return&&i.return()}finally{if(l)throw r}}return a}return function(t,a){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()),i=+new Date+1e4,c=setInterval(function(){if(+new Date>i&&clearTimeout(c),"undefined"!=typeof socialWarfare&&(clearInterval(c),socialWarfare.addons&&socialWarfare.addons.includes("pro"))){var e=wp.i18n.__,t=wp.blocks.registerBlockType,a=wp.data.select("core/editor"),l=(a.getCurrentPostId,wp.components.Dashicon),r=wp.element.createElement("div",{className:"swp-block-icon"},wp.element.createElement("svg",{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 32 32","enable-background":"new 0 0 32 32"},wp.element.createElement("g",null,wp.element.createElement("path",{fill:"#cd2029",d:"M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6 s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3 c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7 c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9 c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5 c6.7,0,12.1-5.4,12.1-12.1C28.1,9.3,22.7,3.9,16,3.9z"}))));t("social-warfare/pinterest",{title:e("Pinterest Image"),icon:r,category:"social-warfare",keywords:[e("share"),e("pin"),e("tailwind")],attributes:{hasFocus:{type:"boolean",defualt:!1},id:{type:"number",default:0},width:{type:"number",default:0},height:{type:"number",default:0},className:{type:"string",default:""},alignment:{type:"string",default:""}},edit:function(e){var t=function(t){e.setAttributes({hasFocus:!e.attributes.hasFocus})},a={id:"Post ID or Image ID",width:"Width (in pixels)",height:"Height (in pixels)",className:"Custom CSS class",alignment:"Alignment. You may enter one of: left, right, center"},i=function(t){e.setAttributes(n({},t.target.name,t.target.value))};if(!e.attributes.hasFocus){var c=Object.entries(e.attributes).reduce(function(e,t){var a=s(t,2),n=a[0],l=a[1];return l.length&&"undefined"!=typeof l?e+=" "+n+'="'+l+'"':e},"");return wp.element.createElement("div",{className:e.className+" pinterest-block-wrap swp-inactive-block"},wp.element.createElement("div",{className:"head",onClick:t},r,wp.element.createElement("div",{className:"swp-preview"},"[pinterest_image",c,"]"),wp.element.createElement(l,{className:"swp-dashicon",icon:"arrow-down"})))}return wp.element.createElement("div",{className:"social-warfare-admin-block"},wp.element.createElement("div",{className:e.className+" pinterest-block-wrap swp-active-block"},wp.element.createElement("div",{className:"head",onClick:t},wp.element.createElement("div",null,r,wp.element.createElement("p",{className:"swp-block-title"},"Pinterest Image")),wp.element.createElement(l,{className:"swp-dashicon",icon:"arrow-up"})),wp.element.createElement("p",null,"Inserts a ",wp.element.createElement("pre",{style:{display:"inline"}},"[pinterest_image]")," shortcode. Leave a field blank to use values based on your global settings."),Object.entries(a).map(function(t){var a=s(t,2),n=a[0],l=a[1];if("alignment"!=n){var r="width"==n||"height"==n?"swp-inner-block-50":"";return wp.element.createElement("div",{className:r},wp.element.createElement("p",null,l),wp.element.createElement("input",{name:n,type:"text",onChange:i,value:e.attributes[n]||""}))}}),wp.element.createElement("div",null,wp.element.createElement("p",null,"Alignment"),wp.element.createElement("select",{name:"alignment",value:e.attributes.alignment?e.attributes.alignment:"",onChange:i},wp.element.createElement("option",{value:""},"Default"),wp.element.createElement("option",{value:"left"},"Left"),wp.element.createElement("option",{value:"center"},"Center"),wp.element.createElement("option",{value:"right"},"Right")))))},save:function(e){return wp.element.createElement("div",null,"[pinterest_image]")}})}},100)}]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/post-editor/dist/blocks.style.build.css CHANGED
@@ -1,135 +1 @@
1
- [class*="-block-wrap"] {
2
- font-family: "SF Pro Text", "Helvetica", sans-serif;
3
- font-size: 13px; }
4
-
5
- [class*="-block-wrap"] .head {
6
- width: 100%;
7
- display: -ms-flexbox;
8
- display: flex;
9
- -ms-flex-flow: row nowrap;
10
- flex-flow: row nowrap;
11
- -ms-flex-align: center;
12
- align-items: center;
13
- -ms-flex-pack: justify;
14
- justify-content: space-between; }
15
- [class*="-block-wrap"] .head p {
16
- font-weight: bold; }
17
-
18
- [class*="-block-wrap"] input,
19
- [class*="-block-wrap"] select,
20
- [class*="-block-wrap"] textarea {
21
- display: block;
22
- width: 100%;
23
- padding: 5px;
24
- height: 42px;
25
- border: 1px solid #e2e4e7; }
26
-
27
- [class*="-block-wrap"] code {
28
- display: block;
29
- width: 100%;
30
- padding: 5px;
31
- height: 42px; }
32
-
33
- [class*="-block-wrap"] textarea {
34
- height: 64px; }
35
-
36
- .swp-dashicon.dashicons-arrow-up,
37
- .swp-dashicon.dashicons-arrow-down {
38
- margin-right: 14px;
39
- cursor: pointer; }
40
-
41
- .social-warfare-block-wrap input,
42
- .social-warfare-block-wrap select {
43
- width: 100%; }
44
-
45
- /* Common styles for SWP Gutenberg blocks. */
46
- [class^="wp-block-social-warfare"] .head {
47
- min-height: 55px; }
48
-
49
- [class^="wp-block-social-warfare"] svg {
50
- width: 24px;
51
- height: 24px; }
52
-
53
- .swp-block-icon {
54
- margin: 0 28px 0 14px;
55
- font-size: 18px;
56
- width: 32px;
57
- height: 32px; }
58
-
59
- [class^="wp-block-social-warfare"] .head {
60
- cursor: pointer;
61
- border-bottom: 1px solid rgba(255, 255, 255, 0);
62
- -webkit-transition: border 0.3s;
63
- -o-transition: border 0.3s;
64
- transition: border 0.3s; }
65
-
66
- .is-selected [class^="wp-block-social-warfare"].swp-active-block .head {
67
- border-bottom: 1px solid #e2e4e7; }
68
-
69
- .swp-active-block {
70
- height: 100%; }
71
- .swp-active-block .swp-inner-block-50 {
72
- width: 50%;
73
- display: inline-block;
74
- padding: 0 1px; }
75
- .swp-active-block .head > div {
76
- display: -ms-flexbox;
77
- display: flex;
78
- -ms-flex-flow: row no-wrap;
79
- flex-flow: row no-wrap;
80
- -ms-flex-pack: center;
81
- justify-content: center;
82
- -ms-flex-align: center;
83
- align-items: center; }
84
- .swp-active-block .head .swp-block-icon,
85
- .swp-active-block .head .swp-block-title {
86
- display: inline-block; }
87
- .swp-active-block p {
88
- margin: 25px 0 5px 0; }
89
- .swp-active-block .head p {
90
- margin: initial; }
91
-
92
- .swp-inactive-block {
93
- min-height: 50px;
94
- display: -ms-flexbox;
95
- display: flex;
96
- -ms-flex-flow: row nowrap;
97
- flex-flow: row nowrap;
98
- -ms-flex-align: center;
99
- align-items: center;
100
- /* The preview displayed when the block is not active. */ }
101
- .swp-inactive-block .swp-preview {
102
- background: #F5F5F5;
103
- width: 100%;
104
- display: block;
105
- font-family: 'SF Pro Text', 'Helvetica', sans-sans-serif;
106
- font-size: 13px;
107
- padding: 15px;
108
- border-radius: 4px; }
109
- .swp-inactive-block .swp-dashicon {
110
- margin: 0 14px; }
111
-
112
- .click-to-tweet-block-wrap textarea[name="tweetText"] {
113
- border-top-right-radius: 0px; }
114
-
115
- .click-to-tweet-block-wrap .block-characters-remaining {
116
- font-size: 16px;
117
- font-weight: normal;
118
- color: white;
119
- padding: 5px;
120
- border-top-right-radius: 4px;
121
- border-top-left-radius: 4px;
122
- background: #30394F;
123
- margin: 0;
124
- float: right;
125
- max-width: 200px;
126
- padding: 5px 15px;
127
- position: relative;
128
- font-size: 13px;
129
- -webkit-transition: all 300ms;
130
- -o-transition: all 300ms;
131
- transition: all 300ms; }
132
-
133
- .click-to-tweet-block-wrap .block-characters-remaining.over-limit {
134
- background: #EE464F;
135
- color: #fff; }
1
+ .social-warfare-admin-block{font-family:"SF Pro Text", "Helvetica", sans-serif;font-size:13px}.social-warfare-admin-block .head{width:100%;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.social-warfare-admin-block .head p{font-weight:bold}.social-warfare-admin-block .swp-block-icon{margin:0 28px 0 14px;font-size:18px;width:32px;height:32px}.social-warfare-block-wrap input,.social-warfare-block-wrap select{width:100%}.swp-active-block{height:100%}.swp-active-block input,.swp-active-block select,.swp-active-block textarea{display:block;width:100%;padding:5px;height:42px;border:1px solid #e2e4e7}.swp-active-block textarea{height:64px}.swp-active-block .swp-inner-block-50{width:50%;display:inline-block;padding:0 1px}.swp-active-block .head>div{display:-ms-flexbox;display:flex;-ms-flex-flow:row no-wrap;flex-flow:row no-wrap;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.swp-active-block .head .swp-block-icon,.swp-active-block .head .swp-block-title{display:inline-block}.swp-active-block p{margin:25px 0 5px 0}.swp-active-block .head p{margin:initial}.swp-inactive-block{min-height:50px;display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:center;align-items:center}.swp-inactive-block code{display:block;width:100%;padding:5px;height:42px}.swp-inactive-block .swp-preview{background:#F5F5F5;width:100%;display:block;font-family:'SF Pro Text', 'Helvetica', sans-sans-serif;font-size:13px;padding:15px;border-radius:4px}.swp-inactive-block .swp-dashicon{margin:0 14px}.click-to-tweet-block-wrap textarea[name="tweetText"]{border-top-right-radius:0px}.click-to-tweet-block-wrap .block-characters-remaining{font-size:16px;font-weight:normal;color:white;padding:5px;border-top-right-radius:4px;border-top-left-radius:4px;background:#30394F;margin:0;float:right;max-width:200px;padding:5px 15px;position:relative;font-size:13px;-webkit-transition:all 300ms;-o-transition:all 300ms;transition:all 300ms}.click-to-tweet-block-wrap .block-characters-remaining.over-limit{background:#EE464F;color:#fff}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/post-editor/src/block/click-to-tweet.js CHANGED
@@ -1,4 +1,3 @@
1
-
2
  import '../common.scss';
3
  import './style.scss';
4
 
@@ -46,7 +45,9 @@ registerBlockType( 'social-warfare/click-to-tweet', {
46
  * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/
47
  */
48
  edit: function( props ) {
49
- const { tweetText, displayText, theme } = props.attributes;
 
 
50
  const styles = ['Default', 'Send Her My Love', 'Roll With The Changes', 'Free Bird', 'Don\'t Stop Believin\'', 'Thunderstruck', 'Livin\' On A Prayer'];
51
  const characterLimit = 280;
52
  const color = props.attributes.overLimit ? "rgb(211, 66, 80)" : "";
@@ -56,7 +57,7 @@ registerBlockType( 'social-warfare/click-to-tweet', {
56
  * Local method delcarations.
57
  */
58
  const updateTweetText = ( event ) => {
59
- const tweetText = event.target.value;
60
 
61
  if ( !tweetText || !tweetText.length ) {
62
  return props.setAttributes( { tweetText: '', overLimit: false } );
@@ -64,17 +65,17 @@ registerBlockType( 'social-warfare/click-to-tweet', {
64
 
65
  const overLimit = tweetText.length > characterLimit;
66
 
67
- props.setAttributes( { overLimit, tweetText } );
68
- }
69
 
70
  const updateDisplayText = ( event ) => {
71
- const displayText = event.target.value;
72
 
73
  props.setAttributes( { displayText } );
74
- }
75
 
76
  const updateTheme = ( event ) => {
77
- const index = event.target.value;
78
 
79
  if ( parseInt(index) == 0 ) {
80
  props.setAttributes( {theme: ''} );
@@ -87,76 +88,80 @@ registerBlockType( 'social-warfare/click-to-tweet', {
87
  props.setAttributes( {hasFocus: !props.attributes.hasFocus} );
88
  }
89
 
90
- //* Inactive state
91
  if ( !props.attributes.hasFocus ) {
92
  /**
93
  * If no displayText is provided, fallback to use the tweetText.
94
  * Else display a "no text provided" messaged.
95
  */
96
- const text = props.attributes.displayText
97
- ? props.attributes.displayText
98
  : props.attributes.tweetText
99
- ? props.attributes.tweetText
100
  : "No Click To Tweet text is provided.";
101
 
102
  return (
103
- <div className={ `${props.className} click-to-tweet-block-wrap swp-inactive-block` }>
104
- <div className="head" onClick={toggleFocus}>
105
- {icon}
106
- <div className="swp-preview">{text}</div>
107
- <Dashicon className="swp-dashicon" icon="arrow-down" />
108
- </div>
109
- </div>
 
 
110
  )
111
  }
112
 
113
  //* Active state
114
- return (
115
- <div className={ `${props.className} click-to-tweet-block-wrap swp-active-block` }>
116
- <div className="head" onClick={toggleFocus}>
117
- <div>
118
- {icon}
119
- <p className="swp-block-title">Click to Tweet</p>
 
 
 
120
  </div>
121
- <Dashicon className="swp-dashicon" icon="arrow-up" />
122
- </div>
123
-
124
- <p>Inserts a <pre style={ {display: 'inline'} }>[click_to_tweet]</pre> shortcode. <a href="https://warfareplugins.com/support/click-to-tweet/">Learn more</a></p>
125
-
126
- <p>Type your tweet as you want it to display <b><em>on Twitter</em></b>:</p>
127
 
128
- <div style={ {width: "100%"} }>
129
- <p className={`block-characters-remaining ${className}`} style={ {marginTop: -33}}>
130
- {characterLimit - tweetText.length}
131
- </p>
132
- <textarea name="tweetText"
133
- placeholder="Type your tweet. . . "
134
- onChange={updateTweetText}
135
- value={tweetText}
136
- />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  </div>
138
-
139
- <p>Type your quote as you want it to display <b><em>on the page</em></b>:</p>
140
-
141
- <textarea name="displayText"
142
- placeholder="Type your quote. . . "
143
- onChange={updateDisplayText}
144
- value={displayText}
145
- />
146
-
147
- <p>Which theme would you like to use for this CTT?</p>
148
-
149
- <select name="theme"
150
- value={theme}
151
- onChange={updateTheme}
152
- >
153
- {
154
- styles.map( ( theme, index ) => <option value={index}>{theme}</option> )
155
- }
156
- </select>
157
- </div>
158
- );
159
- },
160
 
161
  /**
162
  * The save function defines the way in which the different attributes should be combined
@@ -167,6 +172,7 @@ registerBlockType( 'social-warfare/click-to-tweet', {
167
  * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/
168
  */
169
  save: function( props ) {
 
170
  let { tweetText, displayText } = props.attributes;
171
  if ( !displayText ) {
172
  displayText = tweetText;
@@ -177,7 +183,7 @@ registerBlockType( 'social-warfare/click-to-tweet', {
177
  if (!tweetText) return;
178
 
179
  return (
180
- <div>
181
  [click_to_tweet tweet="{tweetText}" quote="{displayText}" theme="{theme}"]
182
  </div>
183
  );
 
1
  import '../common.scss';
2
  import './style.scss';
3
 
45
  * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/
46
  */
47
  edit: function( props ) {
48
+ console.log('editing ctt')
49
+ window.onetwothree=123;
50
+ const { tweetText, displayText, theme } = props.attributes;
51
  const styles = ['Default', 'Send Her My Love', 'Roll With The Changes', 'Free Bird', 'Don\'t Stop Believin\'', 'Thunderstruck', 'Livin\' On A Prayer'];
52
  const characterLimit = 280;
53
  const color = props.attributes.overLimit ? "rgb(211, 66, 80)" : "";
57
  * Local method delcarations.
58
  */
59
  const updateTweetText = ( event ) => {
60
+ const tweetText = event.target.value;
61
 
62
  if ( !tweetText || !tweetText.length ) {
63
  return props.setAttributes( { tweetText: '', overLimit: false } );
65
 
66
  const overLimit = tweetText.length > characterLimit;
67
 
68
+ props.setAttributes( { overLimit, tweetText } );
69
+ }
70
 
71
  const updateDisplayText = ( event ) => {
72
+ const displayText = event.target.value;
73
 
74
  props.setAttributes( { displayText } );
75
+ }
76
 
77
  const updateTheme = ( event ) => {
78
+ const index = event.target.value;
79
 
80
  if ( parseInt(index) == 0 ) {
81
  props.setAttributes( {theme: ''} );
88
  props.setAttributes( {hasFocus: !props.attributes.hasFocus} );
89
  }
90
 
91
+ //* Inactive state
92
  if ( !props.attributes.hasFocus ) {
93
  /**
94
  * If no displayText is provided, fallback to use the tweetText.
95
  * Else display a "no text provided" messaged.
96
  */
97
+ const text = props.attributes.displayText
98
+ ? props.attributes.displayText
99
  : props.attributes.tweetText
100
+ ? props.attributes.tweetText
101
  : "No Click To Tweet text is provided.";
102
 
103
  return (
104
+ <div className='social-warfare-admin-block'>
105
+ <div className={ `${props.className} click-to-tweet-block-wrap swp-inactive-block` }>
106
+ <div className="head" onClick={toggleFocus}>
107
+ {icon}
108
+ <div className="swp-preview">{text}</div>
109
+ <Dashicon className="swp-dashicon" icon="arrow-down" />
110
+ </div>
111
+ </div>
112
+ </div>
113
  )
114
  }
115
 
116
  //* Active state
117
+ return (
118
+ <div className='social-warfare-admin-block'>
119
+ <div className={ `${props.className} click-to-tweet-block-wrap swp-active-block` }>
120
+ <div className="head" onClick={toggleFocus}>
121
+ <div>
122
+ {icon}
123
+ <p className="swp-block-title">Click to Tweet</p>
124
+ </div>
125
+ <Dashicon className="swp-dashicon" icon="arrow-up" />
126
  </div>
 
 
 
 
 
 
127
 
128
+ <p>Inserts a <pre style={ {display: 'inline'} }>[click_to_tweet]</pre> shortcode. <a href="https://warfareplugins.com/support/click-to-tweet/">Learn more</a></p>
129
+
130
+ <p>Type your tweet as you want it to display <b><em>on Twitter</em></b>:</p>
131
+
132
+ <div style={ {width: "100%"} }>
133
+ <p className={`block-characters-remaining ${className}`} style={ {marginTop: -33}}>
134
+ {characterLimit - tweetText.length}
135
+ </p>
136
+ <textarea name="tweetText"
137
+ placeholder="Type your tweet. . . "
138
+ onChange={updateTweetText}
139
+ value={tweetText}
140
+ />
141
+ </div>
142
+
143
+ <p>Type your quote as you want it to display <b><em>on the page</em></b>:</p>
144
+
145
+ <textarea name="displayText"
146
+ placeholder="Type your quote. . . "
147
+ onChange={updateDisplayText}
148
+ value={displayText}
149
+ />
150
+
151
+ <p>Which theme would you like to use for this CTT?</p>
152
+
153
+ <select name="theme"
154
+ value={theme}
155
+ onChange={updateTheme}
156
+ >
157
+ {
158
+ styles.map( ( theme, index ) => <option value={index}>{theme}</option> )
159
+ }
160
+ </select>
161
  </div>
162
+ </div>
163
+ );
164
+ },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
  /**
167
  * The save function defines the way in which the different attributes should be combined
172
  * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/
173
  */
174
  save: function( props ) {
175
+ console.log('saving ctt')
176
  let { tweetText, displayText } = props.attributes;
177
  if ( !displayText ) {
178
  displayText = tweetText;
183
  if (!tweetText) return;
184
 
185
  return (
186
+ <div className='social-warfare-admin-block'>
187
  [click_to_tweet tweet="{tweetText}" quote="{displayText}" theme="{theme}"]
188
  </div>
189
  );
assets/js/post-editor/src/block/pinterest.js CHANGED
@@ -8,8 +8,7 @@ const timeout = (+new Date) + 10000;
8
  //* The socialWarfare object does not exist at the time this file is loaded, so wait for it first.
9
  const checker = setInterval(() => {
10
  if (+new Date > timeout) clearTimeout(checker);
11
- if (!socialWarfare) return;
12
-
13
  clearInterval(checker);
14
  if ( !socialWarfare.addons || !socialWarfare.addons.includes('pro') ) {
15
  return;
@@ -22,12 +21,12 @@ const checker = setInterval(() => {
22
  const icon = (<div className="swp-block-icon">
23
  <svg version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" >
24
  <g>
25
- <path fill="#cd2029" d="M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
26
- s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
27
- c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
28
- c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
29
- c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
30
- c6.7,0,12.1-5.4,12.1-12.1C28.1,9.3,22.7,3.9,16,3.9z"/>
31
  </g>
32
  </svg>
33
  </div>);
@@ -94,7 +93,7 @@ const checker = setInterval(() => {
94
  //* Create the attribute="value" string for the shortcode.
95
  const attributeString = Object.entries(props.attributes).reduce((string, [attr, value]) => {
96
  if (!value.length || typeof value == 'undefined') return string;
97
- return string += ` ${attr}="${value}"`
98
  }, '');
99
 
100
  return (
@@ -110,47 +109,50 @@ const checker = setInterval(() => {
110
 
111
  //* Active state
112
  return (
113
- <div className={ `${props.className} pinterest-block-wrap swp-active-block` }>
114
- <div className="head" onClick={toggleFocus}>
115
- <div>
116
- {icon}
117
- <p className="swp-block-title">Pinterest Image</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  </div>
119
- <Dashicon className="swp-dashicon" icon="arrow-up" />
120
- </div>
121
- <p>Inserts a <pre style={ {display: 'inline'} }>[pinterest_image]</pre> shortcode. Leave a field blank to use values based on your global settings.</p>
122
- {
123
- //* All attributes except `alignment`.
124
- Object.entries(attributes).map(([name, displayText]) => {
125
- if (name == 'alignment') return;
126
- const className = name == 'width' || name == 'height' ? "swp-inner-block-50" : '';
127
-
128
- return (
129
- <div className={className}>
130
- <p>{displayText}</p>
131
- <input name={name}
132
- type="text"
133
- onChange={updateAttribute}
134
- value={props.attributes[name] || ''}
135
- />
136
- </div>
137
- )
138
- })
139
- }
140
-
141
- <div>
142
- <p>Alignment</p>
143
- <select name="alignment"
144
- value={props.attributes.alignment ? props.attributes.alignment : ''}
145
- onChange={updateAttribute}
146
- >
147
- <option value="">Default</option>
148
- <option value="left">Left</option>
149
- <option value="center">Center</option>
150
- <option value="right">Right</option>
151
- </select>
152
  </div>
153
- </div>
 
154
  );
155
  },
156
 
8
  //* The socialWarfare object does not exist at the time this file is loaded, so wait for it first.
9
  const checker = setInterval(() => {
10
  if (+new Date > timeout) clearTimeout(checker);
11
+ if (typeof socialWarfare == 'undefined') return;
 
12
  clearInterval(checker);
13
  if ( !socialWarfare.addons || !socialWarfare.addons.includes('pro') ) {
14
  return;
21
  const icon = (<div className="swp-block-icon">
22
  <svg version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" >
23
  <g>
24
+ <path fill="#cd2029" d="M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
25
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
26
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
27
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
28
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
29
+ c6.7,0,12.1-5.4,12.1-12.1C28.1,9.3,22.7,3.9,16,3.9z"/>
30
  </g>
31
  </svg>
32
  </div>);
93
  //* Create the attribute="value" string for the shortcode.
94
  const attributeString = Object.entries(props.attributes).reduce((string, [attr, value]) => {
95
  if (!value.length || typeof value == 'undefined') return string;
96
+ return string += ` ${attr}="${value}"`
97
  }, '');
98
 
99
  return (
109
 
110
  //* Active state
111
  return (
112
+ <div className='social-warfare-admin-block'>
113
+ <div className={ `${props.className} pinterest-block-wrap swp-active-block` }>
114
+ <div className="head" onClick={toggleFocus}>
115
+ <div>
116
+ {icon}
117
+ <p className="swp-block-title">Pinterest Image</p>
118
+ </div>
119
+ <Dashicon className="swp-dashicon" icon="arrow-up" />
120
+ </div>
121
+ <p>Inserts a <pre style={ {display: 'inline'} }>[pinterest_image]</pre> shortcode. Leave a field blank to use values based on your global settings.</p>
122
+ {
123
+ //* All attributes except `alignment`.
124
+ Object.entries(attributes).map(([name, displayText]) => {
125
+ if (name == 'alignment') return;
126
+ const className = name == 'width' || name == 'height' ? "swp-inner-block-50" : '';
127
+
128
+ return (
129
+ <div className={className}>
130
+ <p>{displayText}</p>
131
+ <input name={name}
132
+ type="text"
133
+ onChange={updateAttribute}
134
+ value={props.attributes[name] || ''}
135
+ />
136
+ </div>
137
+ )
138
+ })
139
+ }
140
+
141
+ <div>
142
+ <p>Alignment</p>
143
+ <select name="alignment"
144
+ value={props.attributes.alignment ? props.attributes.alignment : ''}
145
+ onChange={updateAttribute}
146
+ >
147
+ <option value="">Default</option>
148
+ <option value="left">Left</option>
149
+ <option value="center">Center</option>
150
+ <option value="right">Right</option>
151
+ </select>
152
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  </div>
154
+ </div>
155
+
156
  );
157
  },
158
 
assets/js/post-editor/src/block/social-warfare.js CHANGED
@@ -65,7 +65,7 @@ registerBlockType( 'social-warfare/social-warfare', {
65
  }
66
 
67
  const updatePostID = ( event ) => {
68
- const postID = wp.data.select('core/editor').getCurrentPostId();
69
  const value = event.target.value;
70
 
71
  if ( value == '' ) {
@@ -83,61 +83,65 @@ registerBlockType( 'social-warfare/social-warfare', {
83
  //* Inactive state
84
  if ( !props.attributes.hasFocus ) {
85
  const buttons = props.attributes.buttons && props.attributes.buttons.length
86
- ? `buttons="${props.attributes.buttons}"` : '';
87
 
88
  const postID = props.attributes.useThisPost == "other"
89
- ? `id="${props.attributes.postID}"` : '';
90
 
91
  return (
92
- <div className={ `${props.className} social-warfare-block-wrap swp-inactive-block` }>
93
- <div className="head" onClick={toggleFocus}>
94
- {icon}
95
- <div className="swp-preview">[social_warfare {buttons} {postID}]</div>
96
- <Dashicon className="swp-dashicon" icon="arrow-down" />
 
 
97
  </div>
98
  </div>
99
  );
100
  }
101
 
102
- //* Active state
103
  return (
104
- <div className={ `${props.className} social-warfare-block-wrap swp-active-block` }>
105
- <div className="head" onClick={toggleFocus}>
106
- <div>
107
- {icon}
108
- <p className="swp-block-title">Social Warfare Shortcode</p>
 
 
 
109
  </div>
110
- <Dashicon className="swp-dashicon" icon="arrow-down" />
111
- </div>
112
 
113
- <p>Inserts a <pre style={ {display: 'inline'} }>[social_warfare]</pre> shortcode. Leave a field blank to use values based on your global settings. <a href="https://warfareplugins.com/support/using-shortcodes-and-php-snippets/">Learn more</a></p>
114
-
115
- <p>Should the buttons reflect this post, or a different post?</p>
116
-
117
- <select name='useThisPost'
118
- value={props.attributes.useThisPost == "other" ? "other" : "this"}
119
- onChange={updateAttributes}
120
- >
121
- <option value="this">This post</option>
122
- <option value="other">Another post</option>
123
- </select>
124
-
125
- {
126
- props.attributes.useThisPost == "other" &&
127
- <div>
128
- <p>Which post should we fetch SW settings and shares from?</p>
129
- <input type="text"
130
- onChange ={updatePostID}
131
- value={props.attributes.postID}
132
- />
133
- </div>
134
- }
135
-
136
- <p>Which networks should we display? Leave blank to use your global settings. </p>
137
- <input value={props.attributes.buttons}
138
- type="text"
139
- onChange={updateButtonsList}
140
- />
 
141
  </div>
142
  );
143
  },
@@ -152,10 +156,10 @@ registerBlockType( 'social-warfare/social-warfare', {
152
  */
153
  save: function( props ) {
154
  const buttons = props.attributes.buttons && props.attributes.buttons.length
155
- ? `buttons="${props.attributes.buttons}"` : '';
156
 
157
  const postID = props.attributes.useThisPost == "other"
158
- ? `id="${props.attributes.postID}"` : '';
159
 
160
  return (
161
  <div>
65
  }
66
 
67
  const updatePostID = ( event ) => {
68
+ const postID = wp.data.select('core/editor').getCurrentPostId();
69
  const value = event.target.value;
70
 
71
  if ( value == '' ) {
83
  //* Inactive state
84
  if ( !props.attributes.hasFocus ) {
85
  const buttons = props.attributes.buttons && props.attributes.buttons.length
86
+ ? `buttons="${props.attributes.buttons}"` : '';
87
 
88
  const postID = props.attributes.useThisPost == "other"
89
+ ? `id="${props.attributes.postID}"` : '';
90
 
91
  return (
92
+ <div className='social-warfare-admin-block'>
93
+ <div className={ `${props.className} social-warfare-block-wrap swp-inactive-block` }>
94
+ <div className="head" onClick={toggleFocus}>
95
+ {icon}
96
+ <div className="swp-preview">[social_warfare {buttons} {postID}]</div>
97
+ <Dashicon className="swp-dashicon" icon="arrow-down" />
98
+ </div>
99
  </div>
100
  </div>
101
  );
102
  }
103
 
104
+ //* Active state
105
  return (
106
+ <div className='social-warfare-admin-block'>
107
+ <div className={ `${props.className} social-warfare-block-wrap swp-active-block` }>
108
+ <div className="head" onClick={toggleFocus}>
109
+ <div>
110
+ {icon}
111
+ <p className="swp-block-title">Social Warfare Shortcode</p>
112
+ </div>
113
+ <Dashicon className="swp-dashicon" icon="arrow-down" />
114
  </div>
 
 
115
 
116
+ <p>Inserts a <pre style={ {display: 'inline'} }>[social_warfare]</pre> shortcode. Leave a field blank to use values based on your global settings. <a href="https://warfareplugins.com/support/using-shortcodes-and-php-snippets/">Learn more</a></p>
117
+
118
+ <p>Should the buttons reflect this post, or a different post?</p>
119
+
120
+ <select name='useThisPost'
121
+ value={props.attributes.useThisPost == "other" ? "other" : "this"}
122
+ onChange={updateAttributes}
123
+ >
124
+ <option value="this">This post</option>
125
+ <option value="other">Another post</option>
126
+ </select>
127
+
128
+ {
129
+ props.attributes.useThisPost == "other" &&
130
+ <div>
131
+ <p>Which post should we fetch SW settings and shares from?</p>
132
+ <input type="text"
133
+ onChange ={updatePostID}
134
+ value={props.attributes.postID}
135
+ />
136
+ </div>
137
+ }
138
+
139
+ <p>Which networks should we display? Leave blank to use your global settings. </p>
140
+ <input value={props.attributes.buttons}
141
+ type="text"
142
+ onChange={updateButtonsList}
143
+ />
144
+ </div>
145
  </div>
146
  );
147
  },
156
  */
157
  save: function( props ) {
158
  const buttons = props.attributes.buttons && props.attributes.buttons.length
159
+ ? `buttons="${props.attributes.buttons}"` : '';
160
 
161
  const postID = props.attributes.useThisPost == "other"
162
+ ? `id="${props.attributes.postID}"` : '';
163
 
164
  return (
165
  <div>
assets/js/post-editor/src/block/style.scss CHANGED
@@ -1,85 +1,50 @@
1
- [class*="-block-wrap"] {
2
- font-family: "SF Pro Text", "Helvetica", sans-serif;
3
- font-size: 13px;
4
- }
5
 
6
- [class*="-block-wrap"] .head {
7
- width: 100%;
8
- display: flex;
9
- flex-flow: row nowrap;
10
- align-items: center;
11
- justify-content: space-between;
12
 
13
- p {
14
- font-weight: bold;
 
15
  }
16
- }
17
 
18
- [class*="-block-wrap"] input,
19
- [class*="-block-wrap"] select,
20
- [class*="-block-wrap"] textarea {
21
- display: block;
 
 
 
 
 
 
22
  width: 100%;
23
- padding: 5px;
24
- height: 42px;
25
- border: 1px solid #e2e4e7
26
  }
27
 
28
- [class*="-block-wrap"] code {
29
- display: block;
30
- width: 100%;
31
- padding: 5px;
32
- height: 42px;
33
- }
34
-
35
- [class*="-block-wrap"] textarea {
36
- height: 64px;
37
- }
38
-
39
- .swp-dashicon.dashicons-arrow-up,
40
- .swp-dashicon.dashicons-arrow-down {
41
- margin-right: 14px;
42
- cursor: pointer;
43
- }
44
-
45
- .social-warfare-block-wrap input,
46
- .social-warfare-block-wrap select {
47
- width: 100%;
48
- }
49
-
50
- /* Common styles for SWP Gutenberg blocks. */
51
- [class^="wp-block-social-warfare"] {
52
- .head {
53
- min-height: 55px;
54
- }
55
 
56
- svg {
57
- width: 24px;
58
- height: 24px;
59
- }
60
- }
61
-
62
- .swp-block-icon {
63
- margin: 0 28px 0 14px;
64
- font-size: 18px;
65
- width: 32px;
66
- height: 32px;
67
- }
68
-
69
- [class^="wp-block-social-warfare"] {
70
- .head {
71
- cursor: pointer;
72
- border-bottom: 1px solid rgba(255, 255, 255, 0); // transparent border to maintain same height.
73
- transition: border 0.3s;
74
- }
75
- }
76
 
77
- .is-selected [class^="wp-block-social-warfare"].swp-active-block .head {
78
- border-bottom: 1px solid #e2e4e7;
79
- }
 
 
 
 
 
 
80
 
81
- .swp-active-block {
82
- height: 100%;
 
83
 
84
  .swp-inner-block-50 {
85
  width: 50%;
@@ -107,13 +72,20 @@
107
  .head p {
108
  margin: initial;
109
  }
110
- }
111
 
112
- .swp-inactive-block {
113
- min-height: 50px;
114
- display: flex;
115
- flex-flow: row nowrap;
116
- align-items: center;
 
 
 
 
 
 
 
117
 
118
  /* The preview displayed when the block is not active. */
119
  .swp-preview {
@@ -127,16 +99,16 @@
127
  }
128
 
129
  .swp-dashicon {
130
- margin: 0 14px;
131
  }
132
- }
133
 
134
- .click-to-tweet-block-wrap {
135
- textarea[name="tweetText"] {
136
- border-top-right-radius: 0px;
137
- }
138
 
139
- .block-characters-remaining {
140
  font-size: 16px;
141
  font-weight: normal;
142
  color: white;
@@ -151,10 +123,10 @@
151
  position: relative;
152
  font-size: 13px;
153
  transition: all 300ms;
154
- }
155
 
156
- .block-characters-remaining.over-limit {
157
  background: #EE464F;
158
  color: #fff;
159
- }
160
- }
1
+ /* Wrap all styles in the parent SW wrapper to prevent namespace collisions. */
2
+ .social-warfare-admin-block {
3
+ font-family: "SF Pro Text", "Helvetica", sans-serif;
4
+ font-size: 13px;
5
 
6
+ .head {
7
+ width: 100%;
8
+ display: flex;
9
+ flex-flow: row nowrap;
10
+ align-items: center;
11
+ justify-content: space-between;
12
 
13
+ p {
14
+ font-weight: bold;
15
+ }
16
  }
 
17
 
18
+ .swp-block-icon {
19
+ margin: 0 28px 0 14px;
20
+ font-size: 18px;
21
+ width: 32px;
22
+ height: 32px;
23
+ }
24
+ }
25
+
26
+ .social-warfare-block-wrap input,
27
+ .social-warfare-block-wrap select {
28
  width: 100%;
 
 
 
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ .swp-active-block {
33
+ height: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
+ input,
36
+ select,
37
+ textarea {
38
+ display: block;
39
+ width: 100%;
40
+ padding: 5px;
41
+ height: 42px;
42
+ border: 1px solid #e2e4e7
43
+ }
44
 
45
+ textarea {
46
+ height: 64px;
47
+ }
48
 
49
  .swp-inner-block-50 {
50
  width: 50%;
72
  .head p {
73
  margin: initial;
74
  }
75
+ }
76
 
77
+ .swp-inactive-block {
78
+ min-height: 50px;
79
+ display: flex;
80
+ flex-flow: row nowrap;
81
+ align-items: center;
82
+
83
+ code {
84
+ display: block;
85
+ width: 100%;
86
+ padding: 5px;
87
+ height: 42px;
88
+ }
89
 
90
  /* The preview displayed when the block is not active. */
91
  .swp-preview {
99
  }
100
 
101
  .swp-dashicon {
102
+ margin: 0 14px;
103
  }
104
+ }
105
 
106
+ .click-to-tweet-block-wrap {
107
+ textarea[name="tweetText"] {
108
+ border-top-right-radius: 0px;
109
+ }
110
 
111
+ .block-characters-remaining {
112
  font-size: 16px;
113
  font-weight: normal;
114
  color: white;
123
  position: relative;
124
  font-size: 13px;
125
  transition: all 300ms;
126
+ }
127
 
128
+ .block-characters-remaining.over-limit {
129
  background: #EE464F;
130
  color: #fff;
131
+ }
132
+ }
assets/js/script.js CHANGED
@@ -30,7 +30,7 @@
30
  * #3. Floating Buttons Panel Controls
31
  * Function: socialWarfare.createFloatHorizontalPanel()
32
  * Function: socialWarfare.staticPanelIsVisible()
33
- * Function: socialWarfare.toggleFloatingButtons()
34
  * Function: socialWarfare.toggleMobileButtons()
35
  * Function: socialWarfare.toggleFloatingVerticalPanel()
36
  * Function: socialWarfare.toggleFloatingHorizontalPanel()
@@ -83,7 +83,7 @@ window.socialWarfare = window.socialWarfare || {};
83
  * still be able to access our functions and variables from anywhere.
84
  *
85
  */
86
- (function(window, $, jQuery) {
87
  'use strict';
88
 
89
  if ( typeof $ != 'function' ) {
@@ -93,7 +93,7 @@ window.socialWarfare = window.socialWarfare || {};
93
 
94
  else {
95
  console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");
96
- return;
97
  }
98
  }
99
 
@@ -106,28 +106,6 @@ window.socialWarfare = window.socialWarfare || {};
106
  ***************************************************************************/
107
 
108
 
109
- /**
110
- * Load the plugin once the DOM has been loaded.
111
- *
112
- */
113
- $(document).ready(function() {
114
-
115
- // This is what fires up the entire plugin's JS functionality.
116
- socialWarfare.initPlugin();
117
-
118
-
119
- /**
120
- * On resize, we're going to purge and re-init the entirety of the
121
- * socialWarfare functions. This will fully reset all of the floating
122
- * buttons which will allow for a clean transition if the size change
123
- * causes the isMobile() check to flip from true to false or vica versa.
124
- *
125
- */
126
- $(window).resize(socialWarfare.onWindowResize);
127
-
128
- });
129
-
130
-
131
  /**
132
  * This will cause our resize event to wait until the user is fully done
133
  * resizing the window prior to resetting and rebuilding the buttons and
@@ -183,7 +161,7 @@ window.socialWarfare = window.socialWarfare || {};
183
  socialWarfare.positionFloatSidePanel();
184
  socialWarfare.activateHoverStates();
185
  socialWarfare.handleButtonClicks();
186
- socialWarfare.toggleFloatingButtons();
187
 
188
 
189
  /**
@@ -193,7 +171,9 @@ window.socialWarfare = window.socialWarfare || {};
193
  * ensure that the buttons panel exist and activate the click bindings.
194
  *
195
  */
196
- setTimeout( socialWarfare.checkListeners(0, 5), 2000);
 
 
197
 
198
 
199
  /**
@@ -204,8 +184,14 @@ window.socialWarfare = window.socialWarfare || {};
204
  * floating buttons to flicker.
205
  *
206
  */
207
- $(window).scroll(socialWarfare.throttle(50, socialWarfare.toggleFloatingButtons));
208
-
 
 
 
 
 
 
209
  }
210
 
211
 
@@ -224,16 +210,9 @@ window.socialWarfare = window.socialWarfare || {};
224
  floatingHorizontal: null
225
  };
226
 
227
- var staticHorizontal = $(".swp_social_panel").not(".swp_social_panelSide");
228
- var floatingSide = $(".swp_social_panelSide");
229
-
230
- if (staticHorizontal) {
231
- socialWarfare.panels.staticHorizontal = staticHorizontal;
232
- }
233
-
234
- if (floatingSide) {
235
- socialWarfare.panels.floatingSide = floatingSide;
236
- }
237
 
238
  return socialWarfare.panels;
239
  }
@@ -415,9 +394,9 @@ window.socialWarfare = window.socialWarfare || {};
415
  *
416
  */
417
  top = window.screenY + (window.innerHeight - height) / 2;
418
- left = window.screenX + (window.innerWidth - width) / 2;
419
- windowAttributes = 'height=' + height + ',width=' + width + ',top=' + top + ',left=' + left;
420
- instance = window.open(href, network, windowAttributes);
421
  // Active Google Analytics event tracking for the button click.
422
  socialWarfare.trackClick(network);
423
  });
@@ -457,7 +436,7 @@ window.socialWarfare = window.socialWarfare || {};
457
  var floatLocation = socialWarfare.panels.staticHorizontal.data("float");
458
  var mobileFloatLocation = socialWarfare.panels.staticHorizontal.data("float-mobile");
459
  var backgroundColor = socialWarfare.panels.staticHorizontal.data("float-color");
460
- var wrapper = $('<div class="nc_wrapper" style="background-color:' + backgroundColor + '"></div>');
461
  var barLocation = '';
462
 
463
  //* .swp_social_panelSide is the side floater.
@@ -465,6 +444,11 @@ window.socialWarfare = window.socialWarfare || {};
465
  $(".nc_wrapper").remove();
466
  }
467
 
 
 
 
 
 
468
  //* No floating bars are used at all.
469
  if (floatLocation != 'top' && floatLocation != 'bottom' && mobileFloatLocation != "top" && mobileFloatLocation != "bottom") {
470
  return;
@@ -607,17 +591,31 @@ window.socialWarfare = window.socialWarfare || {};
607
  * @return void
608
  *
609
  */
610
- socialWarfare.toggleFloatingButtons = function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
611
 
612
  // Adjust the floating bar
613
- var location = socialWarfare.panels.staticHorizontal.data('float');
614
- if( true == socialWarfare.isMobile() ) {
615
- var location = socialWarfare.panels.staticHorizontal.data('float-mobile');
 
616
  }
617
 
618
  //* There are no floating buttons enabled, hide any that might exist.
619
  if (location == 'none') {
620
- return $(".nc_wrapper, .swp_social_panelSide").hide();
621
  }
622
 
623
  if (socialWarfare.isMobile()) {
@@ -648,7 +646,7 @@ window.socialWarfare = window.socialWarfare || {};
648
  socialWarfare.panels.floatingSide.hide();
649
 
650
  var visibility = socialWarfare.staticPanelIsVisible() ? "collapse" : "visible";
651
- $(".nc_wrapper").css("visibility", visibility);
652
  }
653
 
654
 
@@ -660,37 +658,28 @@ window.socialWarfare = window.socialWarfare || {};
660
  */
661
  socialWarfare.toggleFloatingVerticalPanel = function() {
662
  var direction = '';
663
- var location = socialWarfare.panels.floatingSide.data("float")
664
  var visible = socialWarfare.staticPanelIsVisible();
665
- var style = "";
666
 
667
  //* This is on mobile and does not use side panels.
668
  if (socialWarfare.isMobile()) {
669
  return socialWarfare.panels.floatingSide.hide();
670
  }
671
- socialWarfare.panels.floatingSide.show();
672
 
673
- //* No buttons panel! Manually re-define ${visibility}.
674
  if (!socialWarfare.panels.floatingSide || !socialWarfare.panels.floatingSide.length) {
675
- if (!socialWarfare.isMobile()) {
676
- visible = false;
677
- } else {
678
- visible = true;
679
- }
680
  }
681
 
682
  if (socialWarfare.panels.floatingSide.data("transition") == "slide") {
683
-
684
- direction = (location.indexOf("left") !== -1) ? "left" : "right";
685
- style = visible ? "-150px" : "5px";
686
-
687
  //* Update the side panel CSS with the direction and amount.
688
- socialWarfare.panels.floatingSide.css(direction, style);
689
-
690
  }
691
 
692
  else {
693
-
694
  /**
695
  * We had problems with the fading buttons flickering rather than having
696
  * a smooth fade animation. The workaround was to manually control opacity,
@@ -715,7 +704,7 @@ window.socialWarfare = window.socialWarfare || {};
715
 
716
  socialWarfare.hasReferencePanel = function() {
717
  return typeof socialWarfare.panels.staticHorizontal != 'undefined' &&
718
- socialWarfare.panels.staticHorizontal.length > 0
719
  }
720
 
721
 
@@ -746,7 +735,7 @@ window.socialWarfare = window.socialWarfare || {};
746
 
747
  //* Restore the padding to initial values.
748
  if (socialWarfare.staticPanelIsVisible()) {
749
- $(".nc_wrapper").hide();
750
 
751
 
752
  if (socialWarfare.isMobile() && $("#wpadminbar").length) {
@@ -757,16 +746,16 @@ window.socialWarfare = window.socialWarfare || {};
757
  // Add some padding to the page so it fits nicely at the top or bottom.
758
  else {
759
  newPadding += 50;
760
- $(".nc_wrapper").show();
761
 
762
- //* Compensate for the margin-top added to <html> by #wpadminbar.
763
  if (socialWarfare.isMobile() && location == 'top' && $("#wpadminbar").length) {
764
  $("#wpadminbar").css("top", panel.parent().height());
765
  }
766
  }
767
 
768
  //* Update padding to be either initial values, or to use padding for floatingHorizontal panels.
769
- $("body").css(paddingProp, newPadding);
770
  }
771
 
772
 
@@ -872,18 +861,18 @@ window.socialWarfare = window.socialWarfare || {};
872
  */
873
  socialWarfare.enablePinterestSaveButtons = function() {
874
 
875
-
876
  /**
877
  * Search and Destroy: This will find any Pinterest buttons that were
878
  * added via their browser extension and then destroy them so that only
879
  * ours are on the page.
880
  *
881
  */
882
- var pinterestBrowserButtons = socialWarfare.findPinterestBrowserSaveButtons();
883
- if (typeof pinterestBrowserButtons != 'undefined' && pinterestBrowserButtons) {
884
- socialWarfare.removePinterestBrowserSaveButtons(pinterestBrowserButtons);
885
- }
886
-
 
887
 
888
  /**
889
  * Find all images of the images that are in the content area by looking
@@ -969,7 +958,7 @@ window.socialWarfare = window.socialWarfare || {};
969
  * By creating a temporary image and then using jQuery to fetch the
970
  * URL of that image, it will convert any relative paths to
971
  * absolute paths. If we send a relative path image to Pinterest, it
972
- * will throw wonky errors.
973
  *
974
  */
975
  var i = new Image();
@@ -1048,10 +1037,11 @@ window.socialWarfare = window.socialWarfare || {};
1048
  *
1049
  */
1050
  socialWarfare.findPinterestBrowserSaveButtons = function() {
1051
- var pinterestRed, pinterestZIndex, pinterestBackgroundSize, button, style;
1052
 
1053
  //* Known constants used by Pinterest.
1054
  pinterestRed = "rgb(189, 8, 28)";
 
1055
  pinterestZIndex = "8675309";
1056
  pinterestBackgroundSize = "14px 14px";
1057
  button = null;
@@ -1060,7 +1050,7 @@ window.socialWarfare = window.socialWarfare || {};
1060
  document.querySelectorAll("span").forEach(function(element, index) {
1061
  style = window.getComputedStyle(element);
1062
 
1063
- if (style.backgroundColor == pinterestRed) {
1064
  if (style.backgroundSize == pinterestBackgroundSize && style.zIndex == pinterestZIndex) {
1065
  button = element;
1066
  }
@@ -1192,39 +1182,44 @@ window.socialWarfare = window.socialWarfare || {};
1192
  * @return function The callback function.
1193
  *
1194
  */
1195
- socialWarfare.throttle = function(delay, callback) {
1196
- var timeoutID = 0;
1197
- var lastExec = 0;
1198
-
1199
- function wrapper() {
1200
- var that = this;
1201
- var elapsed = +new Date() - lastExec;
1202
- var args = arguments;
1203
-
1204
- function exec() {
1205
- lastExec = +new Date();
1206
- callback.apply(that, args);
1207
- }
1208
-
1209
- function clear() {
1210
- timeoutID = undefined;
1211
- }
1212
-
1213
- timeoutID && clearTimeout(timeoutID);
1214
-
1215
- if (elapsed > delay) {
1216
- exec();
1217
- } else {
1218
- timeoutID = setTimeout(exec, delay - elapsed);
1219
- }
1220
- }
 
 
 
 
 
 
 
 
 
 
 
1221
 
1222
- if (socialWarfare.guid) {
1223
- wrapper.guid = callback.guid = callback.guid || socialWarfareguid++;
1224
- }
1225
-
1226
- return wrapper;
1227
- };
1228
 
1229
 
1230
  /**
@@ -1360,4 +1355,26 @@ window.socialWarfare = window.socialWarfare || {};
1360
  return $(window).width() < socialWarfare.breakpoint;
1361
  }
1362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1363
  })(this, jQuery);
30
  * #3. Floating Buttons Panel Controls
31
  * Function: socialWarfare.createFloatHorizontalPanel()
32
  * Function: socialWarfare.staticPanelIsVisible()
33
+ * Function: socialWarfare.updateFloatingButtons()
34
  * Function: socialWarfare.toggleMobileButtons()
35
  * Function: socialWarfare.toggleFloatingVerticalPanel()
36
  * Function: socialWarfare.toggleFloatingHorizontalPanel()
83
  * still be able to access our functions and variables from anywhere.
84
  *
85
  */
86
+ (function(window, $) {
87
  'use strict';
88
 
89
  if ( typeof $ != 'function' ) {
93
 
94
  else {
95
  console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");
96
+ return;
97
  }
98
  }
99
 
106
  ***************************************************************************/
107
 
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  /**
110
  * This will cause our resize event to wait until the user is fully done
111
  * resizing the window prior to resetting and rebuilding the buttons and
161
  socialWarfare.positionFloatSidePanel();
162
  socialWarfare.activateHoverStates();
163
  socialWarfare.handleButtonClicks();
164
+ socialWarfare.updateFloatingButtons();
165
 
166
 
167
  /**
171
  * ensure that the buttons panel exist and activate the click bindings.
172
  *
173
  */
174
+ setTimeout(function() {
175
+ socialWarfare.checkListeners(0, 5)
176
+ }, 2000);
177
 
178
 
179
  /**
184
  * floating buttons to flicker.
185
  *
186
  */
187
+ var time = Date.now();
188
+ var wait = 50;
189
+ $(window).scroll(function() {
190
+ if ((time + wait - Date.now()) < 0) {
191
+ socialWarfare.updateFloatingButtons();
192
+ time = Date.now();
193
+ }
194
+ });
195
  }
196
 
197
 
210
  floatingHorizontal: null
211
  };
212
 
213
+ // Set each type of panel as a jQuery object (with 0 or more panels)
214
+ socialWarfare.panels.staticHorizontal = $(".swp_social_panel").not(".swp_social_panelSide");
215
+ socialWarfare.panels.floatingSide = $(".swp_social_panelSide");
 
 
 
 
 
 
 
216
 
217
  return socialWarfare.panels;
218
  }
394
  *
395
  */
396
  top = window.screenY + (window.innerHeight - height) / 2;
397
+ left = window.screenX + (window.innerWidth - width) / 2;
398
+ windowAttributes = 'height=' + height + ',width=' + width + ',top=' + top + ',left=' + left;
399
+ instance = window.open(href, network, windowAttributes);
400
  // Active Google Analytics event tracking for the button click.
401
  socialWarfare.trackClick(network);
402
  });
436
  var floatLocation = socialWarfare.panels.staticHorizontal.data("float");
437
  var mobileFloatLocation = socialWarfare.panels.staticHorizontal.data("float-mobile");
438
  var backgroundColor = socialWarfare.panels.staticHorizontal.data("float-color");
439
+ var wrapper = $('<div class="nc_wrapper swp_floating_horizontal_wrapper" style="background-color:' + backgroundColor + '"></div>');
440
  var barLocation = '';
441
 
442
  //* .swp_social_panelSide is the side floater.
444
  $(".nc_wrapper").remove();
445
  }
446
 
447
+ //* repeating the code above for the new selector.
448
+ if ($(".swp_floating_horizontal_wrapper").length) {
449
+ $(".swp_floating_horizontal_wrapper").remove();
450
+ }
451
+
452
  //* No floating bars are used at all.
453
  if (floatLocation != 'top' && floatLocation != 'bottom' && mobileFloatLocation != "top" && mobileFloatLocation != "bottom") {
454
  return;
591
  * @return void
592
  *
593
  */
594
+ socialWarfare.updateFloatingButtons = function() {
595
+ // If buttons are on the page, there must be either a static horizontal
596
+ if (socialWarfare.panels.staticHorizontal.length) {
597
+ var panel = socialWarfare.panels.staticHorizontal;
598
+ }
599
+
600
+ // Or a side floating panel.
601
+ else if (socialWarfare.panels.floatingSide.length) {
602
+ var panel = socialWarfare.panels.floatingSide;
603
+ }
604
+
605
+ else {
606
+ return;
607
+ }
608
 
609
  // Adjust the floating bar
610
+ var location = panel.data('float');
611
+
612
+ if (true == socialWarfare.isMobile()) {
613
+ var location = panel.data('float-mobile');
614
  }
615
 
616
  //* There are no floating buttons enabled, hide any that might exist.
617
  if (location == 'none') {
618
+ return $(".nc_wrapper, .swp_floating_horizontal_wrapper, .swp_social_panelSide").hide();
619
  }
620
 
621
  if (socialWarfare.isMobile()) {
646
  socialWarfare.panels.floatingSide.hide();
647
 
648
  var visibility = socialWarfare.staticPanelIsVisible() ? "collapse" : "visible";
649
+ $(".nc_wrapper, .swp_floating_horizontal_wrapper").css("visibility", visibility);
650
  }
651
 
652
 
658
  */
659
  socialWarfare.toggleFloatingVerticalPanel = function() {
660
  var direction = '';
661
+ var location = socialWarfare.panels.floatingSide.data("float");
662
  var visible = socialWarfare.staticPanelIsVisible();
663
+ var offset = "";
664
 
665
  //* This is on mobile and does not use side panels.
666
  if (socialWarfare.isMobile()) {
667
  return socialWarfare.panels.floatingSide.hide();
668
  }
 
669
 
 
670
  if (!socialWarfare.panels.floatingSide || !socialWarfare.panels.floatingSide.length) {
671
+ // No buttons panel! Update `visible` to hide floaters.
672
+ visible = true;
 
 
 
673
  }
674
 
675
  if (socialWarfare.panels.floatingSide.data("transition") == "slide") {
676
+ direction = location;
677
+ offset = visible ? "-150px" : "5px";
 
 
678
  //* Update the side panel CSS with the direction and amount.
679
+ socialWarfare.panels.floatingSide.css(direction, offset).show();
 
680
  }
681
 
682
  else {
 
683
  /**
684
  * We had problems with the fading buttons flickering rather than having
685
  * a smooth fade animation. The workaround was to manually control opacity,
704
 
705
  socialWarfare.hasReferencePanel = function() {
706
  return typeof socialWarfare.panels.staticHorizontal != 'undefined' &&
707
+ socialWarfare.panels.staticHorizontal.length > 0
708
  }
709
 
710
 
735
 
736
  //* Restore the padding to initial values.
737
  if (socialWarfare.staticPanelIsVisible()) {
738
+ $(".nc_wrapper, .swp_floating_horizontal_wrapper").hide();
739
 
740
 
741
  if (socialWarfare.isMobile() && $("#wpadminbar").length) {
746
  // Add some padding to the page so it fits nicely at the top or bottom.
747
  else {
748
  newPadding += 50;
749
+ $(".nc_wrapper, .swp_floating_horizontal_wrapper").show();
750
 
751
+ //* Compensate for the margin-top added to <html> by #wpadminbar.
752
  if (socialWarfare.isMobile() && location == 'top' && $("#wpadminbar").length) {
753
  $("#wpadminbar").css("top", panel.parent().height());
754
  }
755
  }
756
 
757
  //* Update padding to be either initial values, or to use padding for floatingHorizontal panels.
758
+ $("body").css(paddingProp, newPadding);
759
  }
760
 
761
 
861
  */
862
  socialWarfare.enablePinterestSaveButtons = function() {
863
 
 
864
  /**
865
  * Search and Destroy: This will find any Pinterest buttons that were
866
  * added via their browser extension and then destroy them so that only
867
  * ours are on the page.
868
  *
869
  */
870
+ jQuery('img').on('mouseenter', function() {
871
+ var pinterestBrowserButtons = socialWarfare.findPinterestBrowserSaveButtons();
872
+ if (typeof pinterestBrowserButtons != 'undefined' && pinterestBrowserButtons) {
873
+ socialWarfare.removePinterestBrowserSaveButtons(pinterestBrowserButtons);
874
+ }
875
+ });
876
 
877
  /**
878
  * Find all images of the images that are in the content area by looking
958
  * By creating a temporary image and then using jQuery to fetch the
959
  * URL of that image, it will convert any relative paths to
960
  * absolute paths. If we send a relative path image to Pinterest, it
961
+ * will throw errors.
962
  *
963
  */
964
  var i = new Image();
1037
  *
1038
  */
1039
  socialWarfare.findPinterestBrowserSaveButtons = function() {
1040
+ var pinterestRed, pinterestRed2019, pinterestZIndex, pinterestBackgroundSize, button, style;
1041
 
1042
  //* Known constants used by Pinterest.
1043
  pinterestRed = "rgb(189, 8, 28)";
1044
+ pinterestRed2019 = "rgb(230, 0, 35)";
1045
  pinterestZIndex = "8675309";
1046
  pinterestBackgroundSize = "14px 14px";
1047
  button = null;
1050
  document.querySelectorAll("span").forEach(function(element, index) {
1051
  style = window.getComputedStyle(element);
1052
 
1053
+ if (style.backgroundColor == pinterestRed || style.backgroundColor == pinterestRed2019) {
1054
  if (style.backgroundSize == pinterestBackgroundSize && style.zIndex == pinterestZIndex) {
1055
  button = element;
1056
  }
1182
  * @return function The callback function.
1183
  *
1184
  */
1185
+ // socialWarfare.throttle = function(delay, callback) {
1186
+ // var timeoutID = 0;
1187
+ // // The previous time `callback` was called.
1188
+ // var lastExec = 0;
1189
+ //
1190
+ // function wrapper() {
1191
+ // var wrap = this;
1192
+ // var elapsed = +new Date() - lastExec;
1193
+ // var args = arguments;
1194
+ //
1195
+ // function exec() {
1196
+ // lastExec = +new Date();
1197
+ // callback.apply(wrap, args);
1198
+ // }
1199
+ //
1200
+ // function clear() {
1201
+ // timeoutID = 0;
1202
+ // lastExec = 0;
1203
+ // }
1204
+ //
1205
+ // timeoutID && clearTimeout(timeoutID);
1206
+ //
1207
+ // if (elapsed > delay) {
1208
+ // exec();
1209
+ // } else {
1210
+ // timeoutID = setTimeout(exec, delay - elapsed);
1211
+ // }
1212
+ // }
1213
+ //
1214
+ // if (socialWarfare.guid) {
1215
+ // wrapper.guid = callback.guid = callback.guid || socialWarfareguid++;
1216
+ // }
1217
+ //
1218
+ // console.log(wrapper)
1219
+ //
1220
+ // return wrapper;
1221
+ // };
1222
 
 
 
 
 
 
 
1223
 
1224
 
1225
  /**
1355
  return $(window).width() < socialWarfare.breakpoint;
1356
  }
1357
 
1358
+ /**
1359
+ * Load the plugin once the DOM has been loaded.
1360
+ *
1361
+ */
1362
+ $(document).ready(function() {
1363
+
1364
+ // This is what fires up the entire plugin's JS functionality.
1365
+ socialWarfare.initPlugin();
1366
+ socialWarfare.panels.floatingSide.hide();
1367
+
1368
+
1369
+ /**
1370
+ * On resize, we're going to purge and re-init the entirety of the
1371
+ * socialWarfare functions. This will fully reset all of the floating
1372
+ * buttons which will allow for a clean transition if the size change
1373
+ * causes the isMobile() check to flip from true to false or vica versa.
1374
+ *
1375
+ */
1376
+ $(window).resize(socialWarfare.onWindowResize);
1377
+
1378
+ });
1379
+
1380
  })(this, jQuery);
assets/js/script.min.js CHANGED
@@ -1 +1 @@
1
- window.socialWarfare=window.socialWarfare||{},function(a,e,i){"use strict";if("function"!=typeof e){var e;return void console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.")}e(document).ready(function(){socialWarfare.initPlugin(),e(a).resize(socialWarfare.onWindowResize)});var t;socialWarfare.onWindowResize=function(){clearTimeout(t),t=setTimeout(socialWarfare.initPlugin,100)},socialWarfare.paddingTop=parseInt(e("body").css("padding-top")),socialWarfare.paddingBottom=parseInt(e("body").css("padding-bottom")),socialWarfare.initPlugin=function(){e("body").css({paddingTop:socialWarfare.paddingTop,paddingBottom:socialWarfare.paddingBottom}),socialWarfare.establishPanels(),socialWarfare.establishBreakpoint(),(socialWarfare.panels.staticHorizontal||socialWarfare.panels.floatingSide||socialWarfare.panels.floatingHorizontal)&&(socialWarfare.createFloatHorizontalPanel(),socialWarfare.positionFloatSidePanel(),socialWarfare.activateHoverStates(),socialWarfare.handleButtonClicks(),socialWarfare.toggleFloatingButtons(),setTimeout(socialWarfare.checkListeners(0,5),2e3),e(a).scroll(socialWarfare.throttle(50,socialWarfare.toggleFloatingButtons)))},socialWarfare.establishPanels=function(){socialWarfare.panels={staticHorizontal:null,floatingSide:null,floatingHorizontal:null};var a=e(".swp_social_panel").not(".swp_social_panelSide"),i=e(".swp_social_panelSide");return a&&(socialWarfare.panels.staticHorizontal=a),i&&(socialWarfare.panels.floatingSide=i),socialWarfare.panels},socialWarfare.activateHoverStates=function(){socialWarfare.trigger("pre_activate_buttons"),e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer").on("mouseenter",function(){if(!e(this).hasClass("swp_nohover")){socialWarfare.resetStaticPanel();var a=e(this).find(".swp_share").outerWidth(),i=e(this).find("i.sw").outerWidth(),t=e(this).width(),o=1+(a+35)/t;e(this).find(".iconFiller").width(a+i+25+"px"),e(this).css("flex",o+" 1 0%")}}),e(".swp_social_panel:not(.swp_social_panelSide)").on("mouseleave",socialWarfare.resetStaticPanel)},socialWarfare.resetStaticPanel=function(){e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:not(.swp_nohover) .iconFiller").removeAttr("style"),e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:not(.swp_nohover)").removeAttr("style")},socialWarfare.handleButtonClicks=function(){e(".nc_tweet, a.swp_CTT").off("click"),e(".nc_tweet, a.swp_CTT").on("click",function(i){if(e(this).hasClass("noPop"))return i;if(void 0===e(this).data("link"))return i;i.preventDefault();var t,o,r,s,n,l,c=e(this).data("link").replace("’","'");t=270,o=500,e(this).is(".pinterest, .buffer_link, .flipboard")&&(t=550,o=775),e(this).hasClass("nc_tweet")?l=e(this).parents(".nc_tweetContainer").data("network"):e(this).hasClass("swp_CTT")&&(l="ctt"),r=a.screenY+(a.innerHeight-t)/2,s=a.screenX+(a.innerWidth-o)/2,n="height="+t+",width="+o+",top="+r+",left="+s,a.open(c,l,n),socialWarfare.trackClick(l)})},socialWarfare.createFloatHorizontalPanel=function(){if(socialWarfare.panels.staticHorizontal.length){var a=socialWarfare.panels.staticHorizontal.data("float"),i=socialWarfare.panels.staticHorizontal.data("float-mobile"),t=socialWarfare.panels.staticHorizontal.data("float-color"),o=e('<div class="nc_wrapper" style="background-color:'+t+'"></div>'),r="";e(".nc_wrapper").length&&e(".nc_wrapper").remove(),"top"!=a&&"bottom"!=a&&"top"!=i&&"bottom"!=i||(r=socialWarfare.isMobile()?i:a,o.addClass(r).hide().appendTo("body"),socialWarfare.panels.floatingHorizontal=socialWarfare.panels.staticHorizontal.first().clone(),socialWarfare.panels.floatingHorizontal.addClass("nc_floater").appendTo(o),socialWarfare.updateFloatingHorizontalDimensions(),e(".swp_social_panel .swp_count").css({transition:"padding .1s linear"}))}},socialWarfare.updateFloatingHorizontalDimensions=function(){if(socialWarfare.panels.staticHorizontal.length&&socialWarfare.panels.floatingHorizontal){var a="100%",e=0,i=socialWarfare.panels.staticHorizontal,t=i.parent();t.hasClass("swp-hidden-panel-wrap")&&(t=t.parent()),void 0!==i.offset().left&&(e=i.offset().left),void 0!==i.width()&&(a=i.width()),0==e&&(e=t.offset().left),100!=a&&0!=a||(a=t.width()),socialWarfare.panels.floatingHorizontal.css({width:a,left:e})}},socialWarfare.staticPanelIsVisible=function(){var i=!1,t=e(a).scrollTop();return e(".swp_social_panel").not(".swp_social_panelSide, .nc_floater").each(function(o){var r=e(this).offset();if(void 0!==socialWarfare.floatBeforeContent&&"1"!=socialWarfare.floatBeforeContent){var s=e(".swp-content-locator").parent();0===o&&s.length&&s.offset().top>t+e(a).height()&&(i=!0)}e(this).is(":visible")&&r.top+e(this).height()>t&&r.top<t+e(a).height()&&(i=!0)}),i},socialWarfare.toggleFloatingButtons=function(){var a=socialWarfare.panels.staticHorizontal.data("float");if(1==socialWarfare.isMobile())var a=socialWarfare.panels.staticHorizontal.data("float-mobile");return"none"==a?e(".nc_wrapper, .swp_social_panelSide").hide():socialWarfare.isMobile()?(socialWarfare.toggleMobileButtons(),void socialWarfare.toggleFloatingHorizontalPanel()):("right"!=a&&"left"!=a||socialWarfare.toggleFloatingVerticalPanel(),void("bottom"!=a&&"top"!=a||socialWarfare.toggleFloatingHorizontalPanel()))},socialWarfare.toggleMobileButtons=function(){socialWarfare.panels.floatingSide.hide();var a=socialWarfare.staticPanelIsVisible()?"collapse":"visible";e(".nc_wrapper").css("visibility",a)},socialWarfare.toggleFloatingVerticalPanel=function(){var a="",e=socialWarfare.panels.floatingSide.data("float"),i=socialWarfare.staticPanelIsVisible(),t="";if(socialWarfare.isMobile())return socialWarfare.panels.floatingSide.hide();socialWarfare.panels.floatingSide.show(),socialWarfare.panels.floatingSide&&socialWarfare.panels.floatingSide.length||(i=!!socialWarfare.isMobile()),"slide"==socialWarfare.panels.floatingSide.data("transition")?(a=-1!==e.indexOf("left")?"left":"right",t=i?"-150px":"5px",socialWarfare.panels.floatingSide.css(a,t)):i?socialWarfare.panels.floatingSide.css("opacity",1).fadeOut(300).css("opacity",0):socialWarfare.panels.floatingSide.css("opacity",0).fadeIn(300).css("display","flex").css("opacity",1)},socialWarfare.hasReferencePanel=function(){return void 0!==socialWarfare.panels.staticHorizontal&&socialWarfare.panels.staticHorizontal.length>0},socialWarfare.toggleFloatingHorizontalPanel=function(){if(socialWarfare.hasReferencePanel()&&socialWarfare.panels.floatingHorizontal){var a=socialWarfare.panels.floatingHorizontal.first(),i=socialWarfare.isMobile()?e(a).data("float-mobile"):e(a).data("float"),t="bottom"==i?socialWarfare.paddingBottom:socialWarfare.paddingTop,o="padding-"+i;"off"!=i&&(socialWarfare.staticPanelIsVisible()?(e(".nc_wrapper").hide(),socialWarfare.isMobile()&&e("#wpadminbar").length&&e("#wpadminbar").css("top",0)):(t+=50,e(".nc_wrapper").show(),socialWarfare.isMobile()&&"top"==i&&e("#wpadminbar").length&&e("#wpadminbar").css("top",a.parent().height())),e("body").css(o,t))}},socialWarfare.positionFloatSidePanel=function(){var e,i,t,o=socialWarfare.panels.floatingSide;if(o&&o.length&&!o.hasClass("swp_side_top")&&!o.hasClass("swp_side_bottom")){if(e=o.outerHeight(),i=a.innerHeight,e>i)return o.css("top",0);t=(i-e)/2,o.css("top",t)}},e(a).on("load",function(){"undefined"!=typeof swpPinIt&&swpPinIt.enabled&&socialWarfare.enablePinterestSaveButtons(),a.clearCheckID=0}),socialWarfare.enablePinterestSaveButtons=function(){var i=socialWarfare.findPinterestBrowserSaveButtons();void 0!==i&&i&&socialWarfare.removePinterestBrowserSaveButtons(i),e(".swp-content-locator").parent().find("img").each(socialWarfare.renderPinterestSaveButton),e(".sw-pinit .sw-pinit-button").on("click",function(i){i.preventDefault(),a.open(e(this).attr("href"),"Pinterest","width=632,height=253,status=0,toolbar=0,menubar=0,location=1,scrollbars=1"),socialWarfare.trackClick("pin_image")})},socialWarfare.renderPinterestSaveButton=function(){var a,i,t,o,r,s;if(a=e(this),!(void 0!=typeof swpPinIt.disableOnAnchors&&swpPinIt.disableOnAnchors&&e(a).parents().filter("a").length||a.outerHeight()<swpPinIt.minHeight||a.outerWidth()<swpPinIt.minWidth||a.hasClass("no_pin")||a.hasClass("no-pin"))){if(void 0!==swpPinIt.image_source){var n=new Image;n.src=swpPinIt.image_source,i=e(n).prop("src")}else a.data("media")?i=a.data("media"):e(this).data("lazy-src")?i=e(this).data("lazy-src"):a[0].src&&(i=a[0].src);i&&void 0!==i&&(void 0!==a.data("pin-description")?t=a.data("pin-description"):void 0!==swpPinIt.image_description?t=swpPinIt.image_description:a.attr("title")?t=a.attr("title"):a.attr("alt")&&(t=a.attr("alt")),s="http://pinterest.com/pin/create/bookmarklet/?media="+encodeURI(i)+"&url="+encodeURI(document.URL)+"&is_video=false&description="+encodeURIComponent(t),o=a.attr("class"),r=a.attr("style"),a.removeClass().attr("style","").wrap('<div class="sw-pinit" />'),a.after('<a href="'+s+'" class="sw-pinit-button sw-pinit-'+swpPinIt.vLocation+" sw-pinit-"+swpPinIt.hLocation+'">Save</a>'),a.parent(".sw-pinit").addClass(o).attr("style",r))}},socialWarfare.findPinterestBrowserSaveButtons=function(){var e,i,t,o,r;return e="rgb(189, 8, 28)",i="8675309",t="14px 14px",o=null,document.querySelectorAll("span").forEach(function(s,n){r=a.getComputedStyle(s),r.backgroundColor==e&&r.backgroundSize==t&&r.zIndex==i&&(o=s)}),o},socialWarfare.removePinterestBrowserSaveButtons=function(e){var i,t,o;i=e.nextSibling,void 0!==i&&"SPAN"==i.nodeName&&(t=a.getComputedStyle(i),o="24px",0===t.width.indexOf(o)&&0===t.height.indexOf(o)&&i.remove()),e.remove()},socialWarfare.fetchFacebookShares=function(){var a="https://graph.facebook.com/?fields=og_object{likes.summary(true).limit(0)},share&id="+swp_post_url,i=swp_post_recovery_url?"https://graph.facebook.com/?fields=og_object{likes.summary(true).limit(0)},share&id="+swp_post_recovery_url:"";e.when(e.get(a),e.get(i)).then(function(a,i){var t,o;t=socialWarfare.parseFacebookShares(a[0]),swp_post_recovery_url&&(t+=socialWarfare.parseFacebookShares(i[0]));var o={action:"swp_facebook_shares_update",post_id:swp_post_id,share_counts:t};e.post(swp_admin_ajax,o)})},socialWarfare.parseFacebookShares=function(a){var e=0;return void 0!==a.share&&(e+=parseInt(a.share.share_count),e+=parseInt(a.share.comment_count)),void 0!==a.og_object&&(e+=parseInt(a.og_object.likes.summary.total_count)),e},socialWarfare.throttle=function(a,e){function i(){function i(){o=+new Date,e.apply(r,n)}var r=this,s=+new Date-o,n=arguments;t&&clearTimeout(t),s>a?i():t=setTimeout(i,a-s)}var t=0,o=0;return socialWarfare.guid&&(i.guid=e.guid=e.guid||socialWarfareguid++),i},socialWarfare.trigger=function(i){e(a).trigger(e.Event(i))},socialWarfare.trackClick=function(a){!0===swpClickTracking&&("function"==typeof ga&&ga("send","event","social_media","swp_"+a+"_share"),"object"==typeof dataLayer&&dataLayer.push({event:"swp_"+a+"_share"}))},socialWarfare.checkListeners=function(a,i){if(!(a>i)){var t=e(".swp_social_panel");if(t.length>0&&t.find(".swp_pinterest"))return void socialWarfare.handleButtonClicks();setTimeout(function(){socialWarfare.checkListeners(++a,i)},2e3)}},socialWarfare.establishBreakpoint=function(){var a=e(".swp_social_panel");socialWarfare.breakpoint=1100,(a.length&&a.data("min-width")||0==a.data("min-width"))&&(socialWarfare.breakpoint=parseInt(a.data("min-width")))},socialWarfare.isMobile=function(){return e(a).width()<socialWarfare.breakpoint}}(this,jQuery);
1
+ window.socialWarfare=window.socialWarfare||{},function(a,e){"use strict";if("function"!=typeof e){if("function"!=typeof jQuery)return void console.log("Social Warfare requires jQuery, or $ as an alias of jQuery. Please make sure your theme provides access to jQuery before activating Social Warfare.");var e=jQuery}var i;socialWarfare.onWindowResize=function(){clearTimeout(i),i=setTimeout(socialWarfare.initPlugin,100)},socialWarfare.paddingTop=parseInt(e("body").css("padding-top")),socialWarfare.paddingBottom=parseInt(e("body").css("padding-bottom")),socialWarfare.initPlugin=function(){if(e("body").css({paddingTop:socialWarfare.paddingTop,paddingBottom:socialWarfare.paddingBottom}),socialWarfare.establishPanels(),socialWarfare.establishBreakpoint(),socialWarfare.panels.staticHorizontal||socialWarfare.panels.floatingSide||socialWarfare.panels.floatingHorizontal){socialWarfare.createFloatHorizontalPanel(),socialWarfare.positionFloatSidePanel(),socialWarfare.activateHoverStates(),socialWarfare.handleButtonClicks(),socialWarfare.updateFloatingButtons(),setTimeout(function(){socialWarfare.checkListeners(0,5)},2e3);var i=Date.now();e(a).scroll(function(){i+50-Date.now()<0&&(socialWarfare.updateFloatingButtons(),i=Date.now())})}},socialWarfare.establishPanels=function(){return socialWarfare.panels={staticHorizontal:null,floatingSide:null,floatingHorizontal:null},socialWarfare.panels.staticHorizontal=e(".swp_social_panel").not(".swp_social_panelSide"),socialWarfare.panels.floatingSide=e(".swp_social_panelSide"),socialWarfare.panels},socialWarfare.activateHoverStates=function(){socialWarfare.trigger("pre_activate_buttons"),e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer").on("mouseenter",function(){if(!e(this).hasClass("swp_nohover")){socialWarfare.resetStaticPanel();var a=e(this).find(".swp_share").outerWidth(),i=e(this).find("i.sw").outerWidth(),t=e(this).width(),o=1+(a+35)/t;e(this).find(".iconFiller").width(a+i+25+"px"),e(this).css("flex",o+" 1 0%")}}),e(".swp_social_panel:not(.swp_social_panelSide)").on("mouseleave",socialWarfare.resetStaticPanel)},socialWarfare.resetStaticPanel=function(){e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:not(.swp_nohover) .iconFiller").removeAttr("style"),e(".swp_social_panel:not(.swp_social_panelSide) .nc_tweetContainer:not(.swp_nohover)").removeAttr("style")},socialWarfare.handleButtonClicks=function(){e(".nc_tweet, a.swp_CTT").off("click"),e(".nc_tweet, a.swp_CTT").on("click",function(i){if(e(this).hasClass("noPop"))return i;if(void 0===e(this).data("link"))return i;i.preventDefault();var t,o,r,s,n,l,c=e(this).data("link").replace("’","'");t=270,o=500,e(this).is(".pinterest, .buffer_link, .flipboard")&&(t=550,o=775),e(this).hasClass("nc_tweet")?l=e(this).parents(".nc_tweetContainer").data("network"):e(this).hasClass("swp_CTT")&&(l="ctt"),r=a.screenY+(a.innerHeight-t)/2,s=a.screenX+(a.innerWidth-o)/2,n="height="+t+",width="+o+",top="+r+",left="+s,a.open(c,l,n),socialWarfare.trackClick(l)})},socialWarfare.createFloatHorizontalPanel=function(){if(socialWarfare.panels.staticHorizontal.length){var a=socialWarfare.panels.staticHorizontal.data("float"),i=socialWarfare.panels.staticHorizontal.data("float-mobile"),t=socialWarfare.panels.staticHorizontal.data("float-color"),o=e('<div class="nc_wrapper swp_floating_horizontal_wrapper" style="background-color:'+t+'"></div>'),r="";e(".nc_wrapper").length&&e(".nc_wrapper").remove(),e(".swp_floating_horizontal_wrapper").length&&e(".swp_floating_horizontal_wrapper").remove(),"top"!=a&&"bottom"!=a&&"top"!=i&&"bottom"!=i||(r=socialWarfare.isMobile()?i:a,o.addClass(r).hide().appendTo("body"),socialWarfare.panels.floatingHorizontal=socialWarfare.panels.staticHorizontal.first().clone(),socialWarfare.panels.floatingHorizontal.addClass("nc_floater").appendTo(o),socialWarfare.updateFloatingHorizontalDimensions(),e(".swp_social_panel .swp_count").css({transition:"padding .1s linear"}))}},socialWarfare.updateFloatingHorizontalDimensions=function(){if(socialWarfare.panels.staticHorizontal.length&&socialWarfare.panels.floatingHorizontal){var a="100%",e=0,i=socialWarfare.panels.staticHorizontal,t=i.parent();t.hasClass("swp-hidden-panel-wrap")&&(t=t.parent()),void 0!==i.offset().left&&(e=i.offset().left),void 0!==i.width()&&(a=i.width()),0==e&&(e=t.offset().left),100!=a&&0!=a||(a=t.width()),socialWarfare.panels.floatingHorizontal.css({width:a,left:e})}},socialWarfare.staticPanelIsVisible=function(){var i=!1,t=e(a).scrollTop();return e(".swp_social_panel").not(".swp_social_panelSide, .nc_floater").each(function(o){var r=e(this).offset();if(void 0!==socialWarfare.floatBeforeContent&&"1"!=socialWarfare.floatBeforeContent){var s=e(".swp-content-locator").parent();0===o&&s.length&&s.offset().top>t+e(a).height()&&(i=!0)}e(this).is(":visible")&&r.top+e(this).height()>t&&r.top<t+e(a).height()&&(i=!0)}),i},socialWarfare.updateFloatingButtons=function(){if(socialWarfare.panels.staticHorizontal.length)var a=socialWarfare.panels.staticHorizontal;else{if(!socialWarfare.panels.floatingSide.length)return;var a=socialWarfare.panels.floatingSide}var i=a.data("float");if(1==socialWarfare.isMobile())var i=a.data("float-mobile");return"none"==i?e(".nc_wrapper, .swp_floating_horizontal_wrapper, .swp_social_panelSide").hide():socialWarfare.isMobile()?(socialWarfare.toggleMobileButtons(),void socialWarfare.toggleFloatingHorizontalPanel()):("right"!=i&&"left"!=i||socialWarfare.toggleFloatingVerticalPanel(),void("bottom"!=i&&"top"!=i||socialWarfare.toggleFloatingHorizontalPanel()))},socialWarfare.toggleMobileButtons=function(){socialWarfare.panels.floatingSide.hide();var a=socialWarfare.staticPanelIsVisible()?"collapse":"visible";e(".nc_wrapper, .swp_floating_horizontal_wrapper").css("visibility",a)},socialWarfare.toggleFloatingVerticalPanel=function(){var a="",e=socialWarfare.panels.floatingSide.data("float"),i=socialWarfare.staticPanelIsVisible(),t="";if(socialWarfare.isMobile())return socialWarfare.panels.floatingSide.hide();socialWarfare.panels.floatingSide&&socialWarfare.panels.floatingSide.length||(i=!0),"slide"==socialWarfare.panels.floatingSide.data("transition")?(a=e,t=i?"-150px":"5px",socialWarfare.panels.floatingSide.css(a,t).show()):i?socialWarfare.panels.floatingSide.css("opacity",1).fadeOut(300).css("opacity",0):socialWarfare.panels.floatingSide.css("opacity",0).fadeIn(300).css("display","flex").css("opacity",1)},socialWarfare.hasReferencePanel=function(){return void 0!==socialWarfare.panels.staticHorizontal&&socialWarfare.panels.staticHorizontal.length>0},socialWarfare.toggleFloatingHorizontalPanel=function(){if(socialWarfare.hasReferencePanel()&&socialWarfare.panels.floatingHorizontal){var a=socialWarfare.panels.floatingHorizontal.first(),i=socialWarfare.isMobile()?e(a).data("float-mobile"):e(a).data("float"),t="bottom"==i?socialWarfare.paddingBottom:socialWarfare.paddingTop,o="padding-"+i;"off"!=i&&(socialWarfare.staticPanelIsVisible()?(e(".nc_wrapper, .swp_floating_horizontal_wrapper").hide(),socialWarfare.isMobile()&&e("#wpadminbar").length&&e("#wpadminbar").css("top",0)):(t+=50,e(".nc_wrapper, .swp_floating_horizontal_wrapper").show(),socialWarfare.isMobile()&&"top"==i&&e("#wpadminbar").length&&e("#wpadminbar").css("top",a.parent().height())),e("body").css(o,t))}},socialWarfare.positionFloatSidePanel=function(){var e,i,t,o=socialWarfare.panels.floatingSide;if(o&&o.length&&!o.hasClass("swp_side_top")&&!o.hasClass("swp_side_bottom")){if(e=o.outerHeight(),i=a.innerHeight,e>i)return o.css("top",0);t=(i-e)/2,o.css("top",t)}},e(a).on("load",function(){"undefined"!=typeof swpPinIt&&swpPinIt.enabled&&socialWarfare.enablePinterestSaveButtons(),a.clearCheckID=0}),socialWarfare.enablePinterestSaveButtons=function(){jQuery("img").on("mouseenter",function(){var a=socialWarfare.findPinterestBrowserSaveButtons();void 0!==a&&a&&socialWarfare.removePinterestBrowserSaveButtons(a)}),e(".swp-content-locator").parent().find("img").each(socialWarfare.renderPinterestSaveButton),e(".sw-pinit .sw-pinit-button").on("click",function(i){i.preventDefault(),a.open(e(this).attr("href"),"Pinterest","width=632,height=253,status=0,toolbar=0,menubar=0,location=1,scrollbars=1"),socialWarfare.trackClick("pin_image")})},socialWarfare.renderPinterestSaveButton=function(){var a,i,t,o,r,s;if(a=e(this),!(void 0!=typeof swpPinIt.disableOnAnchors&&swpPinIt.disableOnAnchors&&e(a).parents().filter("a").length||a.outerHeight()<swpPinIt.minHeight||a.outerWidth()<swpPinIt.minWidth||a.hasClass("no_pin")||a.hasClass("no-pin"))){if(void 0!==swpPinIt.image_source){var n=new Image;n.src=swpPinIt.image_source,i=e(n).prop("src")}else a.data("media")?i=a.data("media"):e(this).data("lazy-src")?i=e(this).data("lazy-src"):a[0].src&&(i=a[0].src);i&&void 0!==i&&(void 0!==a.data("pin-description")?t=a.data("pin-description"):void 0!==swpPinIt.image_description?t=swpPinIt.image_description:a.attr("title")?t=a.attr("title"):a.attr("alt")&&(t=a.attr("alt")),s="http://pinterest.com/pin/create/bookmarklet/?media="+encodeURI(i)+"&url="+encodeURI(document.URL)+"&is_video=false&description="+encodeURIComponent(t),o=a.attr("class"),r=a.attr("style"),a.removeClass().attr("style","").wrap('<div class="sw-pinit" />'),a.after('<a href="'+s+'" class="sw-pinit-button sw-pinit-'+swpPinIt.vLocation+" sw-pinit-"+swpPinIt.hLocation+'">Save</a>'),a.parent(".sw-pinit").addClass(o).attr("style",r))}},socialWarfare.findPinterestBrowserSaveButtons=function(){var e,i,t,o,r,s;return e="rgb(189, 8, 28)",i="rgb(230, 0, 35)",t="8675309",o="14px 14px",r=null,document.querySelectorAll("span").forEach(function(n,l){s=a.getComputedStyle(n),s.backgroundColor!=e&&s.backgroundColor!=i||s.backgroundSize==o&&s.zIndex==t&&(r=n)}),r},socialWarfare.removePinterestBrowserSaveButtons=function(e){var i,t,o;i=e.nextSibling,void 0!==i&&"SPAN"==i.nodeName&&(t=a.getComputedStyle(i),o="24px",0===t.width.indexOf(o)&&0===t.height.indexOf(o)&&i.remove()),e.remove()},socialWarfare.fetchFacebookShares=function(){var a="https://graph.facebook.com/?fields=og_object{likes.summary(true).limit(0)},share&id="+swp_post_url,i=swp_post_recovery_url?"https://graph.facebook.com/?fields=og_object{likes.summary(true).limit(0)},share&id="+swp_post_recovery_url:"";e.when(e.get(a),e.get(i)).then(function(a,i){var t,o;t=socialWarfare.parseFacebookShares(a[0]),swp_post_recovery_url&&(t+=socialWarfare.parseFacebookShares(i[0]));var o={action:"swp_facebook_shares_update",post_id:swp_post_id,share_counts:t};e.post(swp_admin_ajax,o)})},socialWarfare.parseFacebookShares=function(a){var e=0;return void 0!==a.share&&(e+=parseInt(a.share.share_count),e+=parseInt(a.share.comment_count)),void 0!==a.og_object&&(e+=parseInt(a.og_object.likes.summary.total_count)),e},socialWarfare.trigger=function(i){e(a).trigger(e.Event(i))},socialWarfare.trackClick=function(a){!0===swpClickTracking&&("function"==typeof ga&&ga("send","event","social_media","swp_"+a+"_share"),"object"==typeof dataLayer&&dataLayer.push({event:"swp_"+a+"_share"}))},socialWarfare.checkListeners=function(a,i){if(!(a>i)){var t=e(".swp_social_panel");if(t.length>0&&t.find(".swp_pinterest"))return void socialWarfare.handleButtonClicks();setTimeout(function(){socialWarfare.checkListeners(++a,i)},2e3)}},socialWarfare.establishBreakpoint=function(){var a=e(".swp_social_panel");socialWarfare.breakpoint=1100,(a.length&&a.data("min-width")||0==a.data("min-width"))&&(socialWarfare.breakpoint=parseInt(a.data("min-width")))},socialWarfare.isMobile=function(){return e(a).width()<socialWarfare.breakpoint},e(document).ready(function(){socialWarfare.initPlugin(),socialWarfare.panels.floatingSide.hide(),e(a).resize(socialWarfare.onWindowResize)})}(this,jQuery);
lib/Social_Warfare.php CHANGED
@@ -33,27 +33,27 @@ class Social_Warfare {
33
  *
34
  */
35
  public function __construct() {
36
- $this->core_version = SWP_VERSION;
37
- require_once SWP_PLUGIN_DIR . '/lib/utilities/functions.php';
38
- add_action('plugins_loaded', array($this, 'init'));
39
  }
40
 
41
- public function init() {
42
  // Loads the files for each class.
43
- $this->load_classes();
44
 
45
  // Instantiate all the core classes
46
- $this->instantiate_classes();
47
 
48
  // Instantiate the admin-only classes.
49
- if( true === is_admin() ) {
50
- $this->instantiate_admin_classes();
51
- }
52
 
53
  // Instatiate classes that need to be defered.
54
  add_action('plugins_loaded' , array( $this, 'instantiate_deferred_classes' ) , 100 );
55
  require_once SWP_PLUGIN_DIR . '/assets/js/post-editor/blocks.php';
56
- }
57
 
58
 
59
  /**
@@ -77,7 +77,7 @@ class Social_Warfare {
77
  * This creates and filters and manages the user options array.
78
  *
79
  */
80
- new SWP_User_Options();
81
 
82
 
83
  /**
@@ -86,7 +86,7 @@ class Social_Warfare {
86
  * This is created as a global so that all addons can modify it.
87
  *
88
  */
89
- global $SWP_Options_Page;
90
 
91
 
92
  /**
@@ -105,7 +105,7 @@ class Social_Warfare {
105
  *
106
  */
107
  $Localization = new SWP_Localization();
108
- $Localization->init();
109
 
110
 
111
  /**
@@ -183,32 +183,32 @@ class Social_Warfare {
183
 
184
 
185
  /**
186
- * The Widget Class
187
  *
188
  * Instantiate the class that registers and output the "Popular Posts"
189
  * widget. If other widgets are added later, this class will fire those
190
  * up as well.
191
  *
192
  */
193
- new SWP_Widget();
194
 
195
 
196
- /**
197
- * Database Migration
198
- *
199
- * Converts camelCased variable names to the new snake_case option names.
200
- *
201
- */
202
- new SWP_Database_Migration();
203
 
204
 
205
- /**
206
- * The Options Page Class
207
- *
208
- * Instantiates the class that will load the plugin options page.
209
- *
210
- */
211
- $SWP_Options_Page = new SWP_Options_Page();
212
 
213
 
214
  /**
@@ -223,16 +223,16 @@ class Social_Warfare {
223
  $SWP_Post_Caches = new SWP_Post_Cache_Loader();
224
 
225
 
226
- /**
227
- * The Utility Class
228
- *
229
- * While the methods are all static functions that do not require
230
- * a class instance to use, there are hooks that need to be set up
231
- * in the class __construct() method.
232
- *
233
- */
234
 
235
- new SWP_Utility();
236
 
237
  }
238
 
@@ -316,7 +316,7 @@ class Social_Warfare {
316
  * dashboard notices or updating the sidebar in the admin settings page.
317
  *
318
  */
319
- new SWP_JSON_Cache_Handler();
320
 
321
 
322
  /**
@@ -325,7 +325,7 @@ class Social_Warfare {
325
  * This class controls the sidebar on the settings page.
326
  *
327
  */
328
- new SWP_Sidebar_Loader();
329
 
330
  }
331
 
@@ -358,9 +358,11 @@ class Social_Warfare {
358
  */
359
  private function load_classes() {
360
 
361
- // Require WordPress' core plugin class.
362
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
363
 
 
 
364
 
365
  /**
366
  * Utility Classes
@@ -371,21 +373,23 @@ class Social_Warfare {
371
  */
372
  $utilities = array(
373
  'Debug_Trait',
374
- 'Compatibility',
375
- 'CURL',
376
- 'Localization',
377
- 'Permalink',
378
- 'Database_Migration',
379
  'URL_Management',
380
- 'Notice',
381
- 'Notice_Loader',
382
- 'Post_Cache_Loader',
383
- 'Post_Cache',
384
- 'JSON_Cache_Handler',
385
  'Plugin_Updater',
386
- 'Utility'
387
- );
388
- $this->load_files( '/lib/utilities/', $utilities);
 
 
389
 
390
 
391
  /**
@@ -403,9 +407,9 @@ class Social_Warfare {
403
  'Google_Plus',
404
  'Facebook',
405
  'Twitter',
406
- 'Linkedin',
407
- 'Pinterest',
408
- 'Mix'
409
  );
410
  $this->load_files( '/lib/social-networks/', $social_networks);
411
 
@@ -425,7 +429,7 @@ class Social_Warfare {
425
  'Buttons_Panel_Loader',
426
  'Buttons_Panel_Shortcode',
427
  );
428
- $this->load_files( '/lib/buttons-panel/', $buttons_panels );
429
 
430
 
431
  /**
@@ -437,28 +441,35 @@ class Social_Warfare {
437
  * and styles being enqueued for output, and other things like that.
438
  *
439
  */
440
- $frontends = array(
441
- 'Header_Output',
442
- 'Script',
443
- 'Shortcode',
444
- );
445
- $this->load_files( '/lib/frontend-output/', $frontends );
446
 
447
 
448
  /**
449
- * The Widget ClassesMa
450
  *
451
  * These are the classes that create the widgets available for output in
452
- * WordPress. Built in is the Popular Posts widget, but these also
453
- * provide the framework for extensibility so that more widgets can be
454
- * created later via addons.
 
 
 
 
 
 
455
  *
456
  */
457
  $widgets = array(
458
- 'Popular_Posts_Widget',
459
- 'Widget',
460
- );
461
- $this->load_files( '/lib/widgets/', $widgets );
 
462
 
463
 
464
  /**
@@ -473,15 +484,15 @@ class Social_Warfare {
473
  * for Social Warfare.
474
  *
475
  */
476
- $admins = array(
477
- 'Click_To_Tweet',
478
- 'Column',
479
- 'Settings_Link',
480
- 'Shortcode_Generator',
481
- 'User_Profile',
482
- 'Sidebar_Loader'
483
- );
484
- $this->load_files( '/lib/admin/', $admins );
485
 
486
 
487
  /**
@@ -492,22 +503,23 @@ class Social_Warfare {
492
  * with it to add their own options.
493
  *
494
  */
495
- $options = array(
496
- 'User_Options',
497
  'Option_Abstract',
498
- 'Option',
499
- 'Options_Page',
500
- 'Options_Page_Tab',
501
- 'Options_Page_Section',
502
- 'Option_Toggle',
503
- 'Option_Select',
504
- 'Option_Text',
505
- 'Option_Textarea',
506
- 'Section_HTML',
507
- 'Option_Icons',
508
  'Registration_Tab_Template',
509
- );
510
- $this->load_files( '/lib/options/', $options );
 
511
 
512
 
513
  /**
@@ -523,57 +535,57 @@ class Social_Warfare {
523
  }
524
 
525
 
526
- /**
527
- * Loads an array of related files.
528
- *
529
- * @param string $path The relative path to the files home.
530
- * @param array $files The name of the files (classes), no vendor prefix.
531
- * @return none The files are loaded into memory.
532
- *
533
- */
534
- private function load_files( $path, $files ) {
535
- foreach( $files as $file ) {
536
-
537
- //* Add our vendor prefix to the file name.
538
- $file = "SWP_" . $file;
539
- require_once SWP_PLUGIN_DIR . $path . $file . '.php';
540
- }
541
- }
542
-
543
-
544
- /**
545
- *
546
- * When we have known incompatability with other themes/plugins,
547
- * we can put those checks in here.
548
- *
549
- * Checks for known conflicts with other plugins and themes.
550
- *
551
- * If there is a fatal conflict, returns true and exits printing.
552
- * If there are other conflicts, they are silently handled and can still
553
- * print.
554
- *
555
- * @since 3.0.0 | 01 MAR 2018 | Created
556
- * @since 3.3.0 | 30 AUG 2018 | Moved from SWP_Buttons_Panel to Social_Warfare.
557
- * @param void
558
- *
559
- * @return bool True iff the conflict is fatal, else false.
560
- *
561
- */
562
- public static function has_plugin_conflict() {
563
-
564
- // Disable subtitles plugin to prevent it from injecting subtitles
565
- // into our share titles.
566
- if ( function_exists( 'is_plugin_active' ) && is_plugin_active( 'subtitles/subtitles.php' ) && class_exists( 'Subtitles' ) ) :
567
- remove_filter( 'the_title', array( Subtitles::getinstance(), 'the_subtitle' ), 10, 2 );
568
- endif;
569
-
570
- //* Disable on BuddyPress pages.
571
- if ( function_exists( 'is_buddypress' ) && is_buddypress() ) :
572
- return true;
573
- endif;
574
-
575
- return false;
576
- }
577
  }
578
 
579
  /**
33
  *
34
  */
35
  public function __construct() {
36
+ $this->core_version = SWP_VERSION;
37
+ require_once SWP_PLUGIN_DIR . '/lib/utilities/functions.php';
38
+ add_action('plugins_loaded', array($this, 'init'));
39
  }
40
 
41
+ public function init() {
42
  // Loads the files for each class.
43
+ $this->load_classes();
44
 
45
  // Instantiate all the core classes
46
+ $this->instantiate_classes();
47
 
48
  // Instantiate the admin-only classes.
49
+ if( true === is_admin() ) {
50
+ $this->instantiate_admin_classes();
51
+ }
52
 
53
  // Instatiate classes that need to be defered.
54
  add_action('plugins_loaded' , array( $this, 'instantiate_deferred_classes' ) , 100 );
55
  require_once SWP_PLUGIN_DIR . '/assets/js/post-editor/blocks.php';
56
+ }
57
 
58
 
59
  /**
77
  * This creates and filters and manages the user options array.
78
  *
79
  */
80
+ new SWP_User_Options();
81
 
82
 
83
  /**
86
  * This is created as a global so that all addons can modify it.
87
  *
88
  */
89
+ global $SWP_Options_Page;
90
 
91
 
92
  /**
105
  *
106
  */
107
  $Localization = new SWP_Localization();
108
+ $Localization->init();
109
 
110
 
111
  /**
183
 
184
 
185
  /**
186
+ * The Widget Loader Class
187
  *
188
  * Instantiate the class that registers and output the "Popular Posts"
189
  * widget. If other widgets are added later, this class will fire those
190
  * up as well.
191
  *
192
  */
193
+ new SWP_Widget_Loader();
194
 
195
 
196
+ /**
197
+ * Database Migration
198
+ *
199
+ * Converts camelCased variable names to the new snake_case option names.
200
+ *
201
+ */
202
+ new SWP_Database_Migration();
203
 
204
 
205
+ /**
206
+ * The Options Page Class
207
+ *
208
+ * Instantiates the class that will load the plugin options page.
209
+ *
210
+ */
211
+ $SWP_Options_Page = new SWP_Options_Page();
212
 
213
 
214
  /**
223
  $SWP_Post_Caches = new SWP_Post_Cache_Loader();
224
 
225
 
226
+ /**
227
+ * The Utility Class
228
+ *
229
+ * While the methods are all static functions that do not require
230
+ * a class instance to use, there are hooks that need to be set up
231
+ * in the class __construct() method.
232
+ *
233
+ */
234
 
235
+ new SWP_Utility();
236
 
237
  }
238
 
316
  * dashboard notices or updating the sidebar in the admin settings page.
317
  *
318
  */
319
+ new SWP_JSON_Cache_Handler();
320
 
321
 
322
  /**
325
  * This class controls the sidebar on the settings page.
326
  *
327
  */
328
+ new SWP_Sidebar_Loader();
329
 
330
  }
331
 
358
  */
359
  private function load_classes() {
360
 
361
+ // The Social Warfare core Addon class.
362
+ require_once SWP_PLUGIN_DIR . '/lib/Social_Warfare_Addon.php';
363
 
364
+ // WordPress functions for plugin operations.
365
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
366
 
367
  /**
368
  * Utility Classes
373
  */
374
  $utilities = array(
375
  'Debug_Trait',
376
+ 'Compatibility',
377
+ 'CURL',
378
+ 'Localization',
379
+ 'Permalink',
380
+ 'Database_Migration',
381
  'URL_Management',
382
+ 'Notice',
383
+ 'Notice_Loader',
384
+ 'Post_Cache_Loader',
385
+ 'Post_Cache',
386
+ 'JSON_Cache_Handler',
387
  'Plugin_Updater',
388
+ 'Utility',
389
+ 'Auth_Helper',
390
+ 'Credential_Helper'
391
+ );
392
+ $this->load_files( '/lib/utilities/', $utilities);
393
 
394
 
395
  /**
407
  'Google_Plus',
408
  'Facebook',
409
  'Twitter',
410
+ 'Linkedin',
411
+ 'Pinterest',
412
+ 'Mix'
413
  );
414
  $this->load_files( '/lib/social-networks/', $social_networks);
415
 
429
  'Buttons_Panel_Loader',
430
  'Buttons_Panel_Shortcode',
431
  );
432
+ $this->load_files( '/lib/buttons-panel/', $buttons_panels );
433
 
434
 
435
  /**
441
  * and styles being enqueued for output, and other things like that.
442
  *
443
  */
444
+ $frontends = array(
445
+ 'Header_Output',
446
+ 'Script',
447
+ 'Shortcode',
448
+ );
449
+ $this->load_files( '/lib/frontend-output/', $frontends );
450
 
451
 
452
  /**
453
+ * The Widget Classes
454
  *
455
  * These are the classes that create the widgets available for output in
456
+ * WordPress.
457
+ * We include our SWP_Widget, which extends the WP_Widget as required,
458
+ * but also provides other utility methods specific to our plugin.
459
+ *
460
+ * The Popular Posts widget provides users options for displaying posts
461
+ * by share counts.
462
+ *
463
+ * The Widget Loader creates a filter hook for adding more widgets
464
+ * as addons.
465
  *
466
  */
467
  $widgets = array(
468
+ 'Popular_Posts_Widget',
469
+ 'Widget',
470
+ 'Widget_Loader'
471
+ );
472
+ $this->load_files( '/lib/widgets/', $widgets );
473
 
474
 
475
  /**
484
  * for Social Warfare.
485
  *
486
  */
487
+ $admins = array(
488
+ 'Click_To_Tweet',
489
+ 'Column',
490
+ 'Settings_Link',
491
+ 'Shortcode_Generator',
492
+ 'User_Profile',
493
+ 'Sidebar_Loader'
494
+ );
495
+ $this->load_files( '/lib/admin/', $admins );
496
 
497
 
498
  /**
503
  * with it to add their own options.
504
  *
505
  */
506
+ $options = array(
507
+ 'User_Options',
508
  'Option_Abstract',
509
+ 'Option',
510
+ 'Options_Page',
511
+ 'Options_Page_Tab',
512
+ 'Options_Page_Section',
513
+ 'Option_Toggle',
514
+ 'Option_Select',
515
+ 'Option_Text',
516
+ 'Option_Textarea',
517
+ 'Section_HTML',
518
+ 'Option_Icons',
519
  'Registration_Tab_Template',
520
+ 'Option_Button'
521
+ );
522
+ $this->load_files( '/lib/options/', $options );
523
 
524
 
525
  /**
535
  }
536
 
537
 
538
+ /**
539
+ * Loads an array of related files.
540
+ *
541
+ * @param string $path The relative path to the files home.
542
+ * @param array $files The name of the files (classes), no vendor prefix.
543
+ * @return none The files are loaded into memory.
544
+ *
545
+ */
546
+ private function load_files( $path, $files ) {
547
+ foreach( $files as $file ) {
548
+
549
+ //* Add our vendor prefix to the file name.
550
+ $file = "SWP_" . $file;
551
+ require_once SWP_PLUGIN_DIR . $path . $file . '.php';
552
+ }
553
+ }
554
+
555
+
556
+ /**
557
+ *
558
+ * When we have known incompatability with other themes/plugins,
559
+ * we can put those checks in here.
560
+ *
561
+ * Checks for known conflicts with other plugins and themes.
562
+ *
563
+ * If there is a fatal conflict, returns true and exits printing.
564
+ * If there are other conflicts, they are silently handled and can still
565
+ * print.
566
+ *
567
+ * @since 3.0.0 | 01 MAR 2018 | Created
568
+ * @since 3.3.0 | 30 AUG 2018 | Moved from SWP_Buttons_Panel to Social_Warfare.
569
+ * @param void
570
+ *
571
+ * @return bool True iff the conflict is fatal, else false.
572
+ *
573
+ */
574
+ public static function has_plugin_conflict() {
575
+
576
+ // Disable subtitles plugin to prevent it from injecting subtitles
577
+ // into our share titles.
578
+ if ( function_exists( 'is_plugin_active' ) && is_plugin_active( 'subtitles/subtitles.php' ) && class_exists( 'Subtitles' ) ) :
579
+ remove_filter( 'the_title', array( Subtitles::getinstance(), 'the_subtitle' ), 10, 2 );
580
+ endif;
581
+
582
+ //* Disable on BuddyPress pages.
583
+ if ( function_exists( 'is_buddypress' ) && is_buddypress() ) :
584
+ return true;
585
+ endif;
586
+
587
+ return false;
588
+ }
589
  }
590
 
591
  /**
lib/Social_Warfare_Addon.php CHANGED
@@ -1,299 +1,300 @@
1
- <?php
2
-
3
- class Social_Warfare_Addon {
4
- public function __construct( $args = array() ) {
5
- $this->establish_class_properties( $args );
6
- $this->establish_license_key();
7
- $this->is_registered = $this->establish_resgistration();
8
-
9
- add_action( 'wp_ajax_swp_register_plugin', [$this, 'register_plugin'] );
10
- add_action( 'wp_ajax_swp_unregister_plugin', [$this, 'unregister_plugin'] );
11
- add_action( 'wp_ajax_swp_ajax_passthrough', [$this, 'ajax_passthrough'] );
12
-
13
- add_filter( 'swp_registrations', array( $this, 'add_self' ) );
14
- }
15
-
16
- private function establish_class_properties( $args = array () ) {
17
- $required= ['name', 'key', 'product_id', 'version', 'core_required'];
18
-
19
- foreach($args as $key => $value) {
20
- $this->$key = $value;
21
- }
22
-
23
- foreach($required as $key) {
24
- if ( !isset( $this->$key ) ) :
25
- $message = "Hey developer, you must provide us this information for your class: $key => \$value";
26
- throw new Exception($message);
27
- endif;
28
-
29
- }
30
-
31
- $this->store_url = 'https://warfareplugins.com';
32
- $this->site_url = SWP_Utility::get_site_url();
33
- }
34
-
35
-
36
- /**
37
- * The callback function used to add a new instance of this
38
- * to our swp_registrations filter.
39
- *
40
- * This should be the last item called in an addon's main file.
41
- *
42
- * @param array $addons The array of addons currently activated.
43
- */
44
- public function add_self( $addons ) {
45
- if ( $this->key == 'affiliatewp') return;
46
-
47
- $addons[] = $this;
48
-
49
- return $addons;
50
- }
51
-
52
-
53
- public function establish_license_key() {
54
- $key = SWP_Utility::get_option( $this->key . '_license_key' );
55
-
56
- if ( !$key ) :
57
- $old_options = get_option( 'socialWarfareOptions', false );
58
-
59
- if ( isset( $old_options[$this->key . '_license_key']) ) :
60
- $key = isset( $old_options[$this->key . '_license_key']);
61
- endif;
62
-
63
- endif;
64
-
65
- $this->license_key = $key ? $key : '';
66
- }
67
-
68
- public function establish_resgistration() {
69
- // Get the timestamps setup for comparison to see if a week has passed since our last check
70
- $current_time = time();
71
-
72
- if ( !( $timestamp = SWP_Utility::get_option( $this->key . '_license_key_timestamp' ) ) ) {
73
- $timestamp = 0;
74
- }
75
-
76
- $time_to_recheck = $timestamp + 604800;
77
-
78
- // If they have a key and a week hasn't passed since the last check, just return true...the plugin is registered.
79
- if( !empty( $this->license_key) && $current_time < $time_to_recheck ) :
80
- return true;
81
- endif;
82
-
83
- // If a week has passed since the last check, ping our API to check the validity of the license key
84
- if ( !empty( $this->license_key) ) :
85
- global $swp_user_options;
86
-
87
- $data = array(
88
- 'edd_action' => 'check_license',
89
- 'item_id' => $this->product_id,
90
- 'license' => $this->license_key,
91
- 'url' => $this->site_url,
92
- );
93
-
94
-
95
- $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url , array('body' => $data, 'timeout' => 10 ) ) );
96
-
97
- if( false !== $response ) :
98
- $license_data = json_decode( $response );
99
-
100
- $swp_user_options[$this->key . '_license_key_timestamp'] = $current_time;
101
-
102
- // If the license was invalid
103
- if ( isset( $license_data->license ) && 'invalid' === $license_data->license ) :
104
- $this->license_key = '';
105
-
106
- $swp_user_options[$this->key . '_license_key'] = '';
107
-
108
- update_option( 'social_warfare_settings' , $swp_user_options );
109
-
110
- return false;
111
-
112
- // If the property is some other status, just go with it.
113
- else :
114
- update_option( 'social_warfare_settings' , $swp_user_options );
115
-
116
- return true;
117
- endif;
118
-
119
- // If we recieved no response from the server, we'll just check again next week
120
- else :
121
- $swp_user_options[$key.'_license_key_timestamp'] = $current_time;
122
- update_option( 'social_warfare_settings' , $swp_user_options );
123
-
124
- return true;
125
- endif;
126
- endif;
127
-
128
- return false;
129
- }
130
-
131
- public function check_for_updates() {
132
- if ( version_compare(SWP_VERSION, $this->core_required) >= 0 ) :
133
-
134
- endif;
135
- }
136
-
137
- /**
138
- * Request to EDD to activate the licence.
139
- *
140
- * @since 2.1.0
141
- * @since 2.3.0 Hooked registration into the new EDD Software Licensing API
142
- * @param none
143
- * @return JSON Encoded Array (Echoed) - The Response from the EDD API
144
- *
145
- */
146
- public function register_plugin() {
147
- // Check to ensure that license key was passed into the function
148
- if ( !empty( $_POST['license_key'] ) ) :
149
-
150
- // Grab the license key so we can use it below
151
- $key = $_POST['name_key'];
152
- $license = $_POST['license_key'];
153
- $item_id = $_POST['item_id'];
154
- $this->store_url = 'https://warfareplugins.com';
155
-
156
- $api_params = array(
157
- 'edd_action' => 'activate_license',
158
- 'item_id' => $item_id,
159
- 'license' => $license,
160
- 'url' => $this->site_url
161
- );
162
-
163
- $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url, array( 'body' => $api_params, 'timeout' => 10 ) ) );
164
-
165
- if ( false != $response ) :
166
-
167
- // Parse the response into an object
168
- $license_data = json_decode( $response );
169
-
170
- // If the license is valid store it in the database
171
- if( isset($license_data->license) && 'valid' == $license_data->license ) :
172
-
173
- $current_time = time();
174
- $options = get_option( 'social_warfare_settings' );
175
- $options[$key.'_license_key'] = $license;
176
- $options[$key.'_license_key_timestamp'] = $current_time;
177
- update_option( 'social_warfare_settings' , $options );
178
-
179
- echo json_encode($license_data);
180
- wp_die();
181
-
182
- // If the license is not valid
183
- elseif( isset($license_data->license) && 'invalid' == $license_data->license ) :
184
- echo json_encode($license_data);
185
- wp_die();
186
-
187
- // If some other status was returned
188
- else :
189
- $license_data['success'] = false;
190
- $license_data['data'] = 'Invaid response from the registration server.';
191
- echo json_encode($license_data);
192
- wp_die();
193
- endif;
194
-
195
- // If we didn't get a response from the registration server
196
- else :
197
- $license_data['success'] = false;
198
- $license_data['data'] = 'Failed to connect to registration server.';
199
- echo json_encode($license_data);
200
- wp_die();
201
- endif;
202
- endif;
203
-
204
- $license_data['success'] = false;
205
- $license_data['data'] = 'Admin Ajax did not receive valid POST data.';
206
- echo json_encode($license_data);
207
- wp_die();
208
-
209
- }
210
-
211
-
212
- /**
213
- * Request to EDD to deactivate the licence.
214
- *
215
- * @since 2.1.0
216
- * @since 2.3.0 Hooked into the EDD Software Licensing API
217
- * @param none
218
- * @return JSON Encoded Array (Echoed) - The Response from the EDD API
219
- *
220
- */
221
- public function unregister_plugin() {
222
- // Setup the variables needed for processing
223
- $options = get_option( 'social_warfare_settings' );
224
- $key = $_POST['name_key'];
225
- $item_id = $_POST['item_id'];
226
- $response = array();
227
-
228
- // Check to see if the license key is even in the options
229
- if ( !SWP_Utility::get_option( $key . '_license_key' ) ) :
230
-
231
- $response['success'] = true;
232
- echo json_encode($response);
233
- wp_die();
234
-
235
- endif;
236
-
237
- // Grab the license key so we can use it below
238
- $license = $options[$key.'_license_key'];
239
-
240
- // Setup the API request parameters
241
- $api_params = array(
242
- 'edd_action' => 'deactivate_license',
243
- 'item_id' => $item_id,
244
- 'license' => $license,
245
- 'url' => $this->site_url,
246
- );
247
-
248
- //* wp_remote_retrieve_body encodes to JSON for us.
249
- $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url, array( 'body' => $api_params, 'timeout' => 10 ) ) );
250
-
251
- $options = get_option( 'social_warfare_settings' );
252
- $options[$key.'_license_key'] = '';
253
- update_option( 'social_warfare_settings' , $options );
254
-
255
- echo $response;
256
-
257
- wp_die();
258
- }
259
-
260
- public function ajax_passthrough() {
261
- if ( ! check_ajax_referer( 'swp_plugin_registration', 'security', false ) ) {
262
- wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
263
- die;
264
- }
265
-
266
- $data = wp_unslash( $_POST ); // Input var okay.
267
-
268
- if ( ! isset( $data['activity'], $data['email'] ) ) {
269
- wp_send_json_error( esc_html__( 'Required fields missing.', 'social-warfare' ) );
270
- die;
271
- }
272
-
273
- if ( 'register' === $data['activity'] ) {
274
- $response = swp_register_plugin( $data['email'], SWP_Utility::get_site_url() );
275
-
276
- if ( ! $response ) {
277
- wp_send_json_error( esc_html__( 'Plugin could not be registered.', 'social-warfare' ) );
278
- die;
279
- }
280
-
281
- $response['message'] = esc_html__( 'Plugin successfully registered!', 'social-warfare' );
282
- }
283
-
284
- if ( 'unregister' === $data['activity'] && isset( $data['key'] ) ) {
285
- $response = swp_unregister_plugin( $data['email'], $data['key'] );
286
-
287
- if ( ! $response ) {
288
- wp_send_json_error( esc_html__( 'Plugin could not be unregistered.', 'social-warfare' ) );
289
- die;
290
- }
291
-
292
- $response['message'] = esc_html__( 'Plugin successfully unregistered!', 'social-warfare' );
293
- }
294
-
295
- wp_send_json_success( $response );
296
-
297
- die;
298
- }
299
- }
 
1
+ <?php
2
+
3
+ class Social_Warfare_Addon {
4
+ public function __construct( $args = array() ) {
5
+ $this->establish_class_properties( $args );
6
+ $this->establish_license_key();
7
+ $this->is_registered = $this->establish_resgistration();
8
+
9
+ add_action( 'wp_ajax_swp_register_plugin', [$this, 'register_plugin'] );
10
+ add_action( 'wp_ajax_swp_unregister_plugin', [$this, 'unregister_plugin'] );
11
+ add_action( 'wp_ajax_swp_ajax_passthrough', [$this, 'ajax_passthrough'] );
12
+
13
+ add_filter( 'swp_registrations', array( $this, 'add_self' ) );
14
+ }
15
+
16
+ private function establish_class_properties( $args = array () ) {
17
+ $required= ['name', 'key', 'version'];
18
+
19
+ foreach($args as $key => $value) {
20
+ $this->$key = $value;
21
+ }
22
+
23
+ foreach($required as $key) {
24
+ if ( !isset( $this->$key ) ) :
25
+ $message = "Hey developer, you must provide us this information for your class: $key => \$value";
26
+ throw new Exception($message);
27
+ endif;
28
+ }
29
+ if ( isset( $this->product_id ) && empty ( $this->store_url ) ) {
30
+ // $message = "You provided `product_id` without a `store_url`. Please provide `store_url` as a top level domain, such as 'https://warfareplugins.com'.";
31
+ // throw new Exception($message);
32
+ $this->store_url = 'https://warfareplugins.com';
33
+ }
34
+
35
+ if ( isset( $this->product_id ) && empty ( $this->site_url ) ) {
36
+ $this->store_url = SWP_Utility::get_site_url();
37
+ }
38
+ }
39
+
40
+
41
+ /**
42
+ * The callback function used to add a new instance of this
43
+ * to our swp_registrations filter.
44
+ *
45
+ * This should be the last item called in an addon's main class.
46
+ *
47
+ * @param array $addons The array of addons currently activated.
48
+ */
49
+ public function add_self( $addons ) {
50
+ $addons[] = $this;
51
+
52
+ return $addons;
53
+ }
54
+
55
+ public function establish_license_key() {
56
+ $key = SWP_Utility::get_option( $this->key . '_license_key' );
57
+
58
+ if ( !$key ) :
59
+ $old_options = get_option( 'socialWarfareOptions', false );
60
+
61
+ if ( isset( $old_options[$this->key . '_license_key']) ) :
62
+ $key = isset( $old_options[$this->key . '_license_key']);
63
+ endif;
64
+
65
+ endif;
66
+
67
+ $this->license_key = $key ? $key : '';
68
+ }
69
+
70
+ public function establish_resgistration() {
71
+ // Get the timestamps setup for comparison to see if a week has passed since our last check
72
+ $current_time = time();
73
+
74
+ if ( !( $timestamp = SWP_Utility::get_option( $this->key . '_license_key_timestamp' ) ) ) {
75
+ $timestamp = 0;
76
+ }
77
+
78
+ $time_to_recheck = $timestamp + 604800;
79
+
80
+ // If they have a key and a week hasn't passed since the last check, just return true...the plugin is registered.
81
+ if( !empty( $this->license_key) && $current_time < $time_to_recheck ) :
82
+ return true;
83
+ endif;
84
+
85
+ // If a week has passed since the last check, ping our API to check the validity of the license key
86
+ if ( !empty( $this->license_key) ) :
87
+ global $swp_user_options;
88
+
89
+ $data = array(
90
+ 'edd_action' => 'check_license',
91
+ 'item_id' => $this->product_id,
92
+ 'license' => $this->license_key,
93
+ 'url' => $this->site_url,
94
+ );
95
+
96
+ $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url , array('body' => $data, 'timeout' => 10 ) ) );
97
+
98
+ if( false !== $response ) :
99
+ $license_data = json_decode( $response );
100
+
101
+ $swp_user_options[$this->key . '_license_key_timestamp'] = $current_time;
102
+
103
+ // If the license was invalid
104
+ if ( isset( $license_data->license ) && 'invalid' === $license_data->license ) :
105
+ $this->license_key = '';
106
+
107
+ $swp_user_options[$this->key . '_license_key'] = '';
108
+
109
+ update_option( 'social_warfare_settings' , $swp_user_options );
110
+
111
+ return false;
112
+
113
+ // If the property is some other status, just go with it.
114
+ else :
115
+ update_option( 'social_warfare_settings' , $swp_user_options );
116
+
117
+ return true;
118
+ endif;
119
+
120
+ // If we recieved no response from the server, we'll just check again next week
121
+ else :
122
+ $swp_user_options[$key.'_license_key_timestamp'] = $current_time;
123
+ update_option( 'social_warfare_settings' , $swp_user_options );
124
+
125
+ return true;
126
+ endif;
127
+ endif;
128
+
129
+ return false;
130
+ }
131
+
132
+ public function check_for_updates() {
133
+ if ( version_compare(SWP_VERSION, $this->core_required) >= 0 ) :
134
+
135
+ endif;
136
+ }
137
+
138
+ /**
139
+ * Request to EDD to activate the licence.
140
+ *
141
+ * @since 2.1.0
142
+ * @since 2.3.0 Hooked registration into the new EDD Software Licensing API
143
+ * @param none
144
+ * @return JSON Encoded Array (Echoed) - The Response from the EDD API
145
+ *
146
+ */
147
+ public function register_plugin() {
148
+ // Check to ensure that license key was passed into the function
149
+ if ( !empty( $_POST['license_key'] ) ) :
150
+
151
+ // Grab the license key so we can use it below
152
+ $key = $_POST['name_key'];
153
+ $license = $_POST['license_key'];
154
+ $item_id = $_POST['item_id'];
155
+ $this->store_url = 'https://warfareplugins.com';
156
+
157
+ $api_params = array(
158
+ 'edd_action' => 'activate_license',
159
+ 'item_id' => $item_id,
160
+ 'license' => $license,
161
+ 'url' => $this->site_url
162
+ );
163
+
164
+ $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url, array( 'body' => $api_params, 'timeout' => 10 ) ) );
165
+
166
+ if ( false != $response ) :
167
+
168
+ // Parse the response into an object
169
+ $license_data = json_decode( $response );
170
+
171
+ // If the license is valid store it in the database
172
+ if( isset($license_data->license) && 'valid' == $license_data->license ) :
173
+
174
+ $current_time = time();
175
+ $options = get_option( 'social_warfare_settings' );
176
+ $options[$key.'_license_key'] = $license;
177
+ $options[$key.'_license_key_timestamp'] = $current_time;
178
+ update_option( 'social_warfare_settings' , $options );
179
+
180
+ echo json_encode($license_data);
181
+ wp_die();
182
+
183
+ // If the license is not valid
184
+ elseif( isset($license_data->license) && 'invalid' == $license_data->license ) :
185
+ echo json_encode($license_data);
186
+ wp_die();
187
+
188
+ // If some other status was returned
189
+ else :
190
+ $license_data['success'] = false;
191
+ $license_data['data'] = 'Invaid response from the registration server.';
192
+ echo json_encode($license_data);
193
+ wp_die();
194
+ endif;
195
+
196
+ // If we didn't get a response from the registration server
197
+ else :
198
+ $license_data['success'] = false;
199
+ $license_data['data'] = 'Failed to connect to registration server.';
200
+ echo json_encode($license_data);
201
+ wp_die();
202
+ endif;
203
+ endif;
204
+
205
+ $license_data['success'] = false;
206
+ $license_data['data'] = 'Admin Ajax did not receive valid POST data.';
207
+ echo json_encode($license_data);
208
+ wp_die();
209
+
210
+ }
211
+
212
+
213
+ /**
214
+ * Request to EDD to deactivate the licence.
215
+ *
216
+ * @since 2.1.0
217
+ * @since 2.3.0 Hooked into the EDD Software Licensing API
218
+ * @param none
219
+ * @return JSON Encoded Array (Echoed) - The Response from the EDD API
220
+ *
221
+ */
222
+ public function unregister_plugin() {
223
+ // Setup the variables needed for processing
224
+ $options = get_option( 'social_warfare_settings' );
225
+ $key = $_POST['name_key'];
226
+ $item_id = $_POST['item_id'];
227
+ $response = array();
228
+
229
+ // Check to see if the license key is even in the options
230
+ if ( !SWP_Utility::get_option( $key . '_license_key' ) ) :
231
+
232
+ $response['success'] = true;
233
+ echo json_encode($response);
234
+ wp_die();
235
+
236
+ endif;
237
+
238
+ // Grab the license key so we can use it below
239
+ $license = $options[$key.'_license_key'];
240
+
241
+ // Setup the API request parameters
242
+ $api_params = array(
243
+ 'edd_action' => 'deactivate_license',
244
+ 'item_id' => $item_id,
245
+ 'license' => $license,
246
+ 'url' => $this->site_url,
247
+ );
248
+
249
+ //* wp_remote_retrieve_body encodes to JSON for us.
250
+ $response = wp_remote_retrieve_body( wp_remote_post( $this->store_url, array( 'body' => $api_params, 'timeout' => 10 ) ) );
251
+
252
+ $options = get_option( 'social_warfare_settings' );
253
+ $options[$key.'_license_key'] = '';
254
+ update_option( 'social_warfare_settings' , $options );
255
+
256
+ echo $response;
257
+
258
+ wp_die();
259
+ }
260
+
261
+ public function ajax_passthrough() {
262
+ if ( ! check_ajax_referer( 'swp_plugin_registration', 'security', false ) ) {
263
+ wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
264
+ die;
265
+ }
266
+
267
+ $data = wp_unslash( $_POST ); // Input var okay.
268
+
269
+ if ( ! isset( $data['activity'], $data['email'] ) ) {
270
+ wp_send_json_error( esc_html__( 'Required fields missing.', 'social-warfare' ) );
271
+ die;
272
+ }
273
+
274
+ if ( 'register' === $data['activity'] ) {
275
+ $response = swp_register_plugin( $data['email'], SWP_Utility::get_site_url() );
276
+
277
+ if ( ! $response ) {
278
+ wp_send_json_error( esc_html__( 'Plugin could not be registered.', 'social-warfare' ) );
279
+ die;
280
+ }
281
+
282
+ $response['message'] = esc_html__( 'Plugin successfully registered!', 'social-warfare' );
283
+ }
284
+
285
+ if ( 'unregister' === $data['activity'] && isset( $data['key'] ) ) {
286
+ $response = swp_unregister_plugin( $data['email'], $data['key'] );
287
+
288
+ if ( ! $response ) {
289
+ wp_send_json_error( esc_html__( 'Plugin could not be unregistered.', 'social-warfare' ) );
290
+ die;
291
+ }
292
+
293
+ $response['message'] = esc_html__( 'Plugin successfully unregistered!', 'social-warfare' );
294
+ }
295
+
296
+ wp_send_json_success( $response );
297
+
298
+ die;
299
+ }
300
+ }
lib/buttons-panel/SWP_Buttons_Panel.php CHANGED
@@ -43,7 +43,6 @@
43
  * get_min_width();
44
  * get_float_background();
45
  * get_option();
46
- * get_float_location();
47
  * get_mobile_float_location();
48
  * get_order_of_icons();
49
  * get_ordered_network_objects();
@@ -85,7 +84,7 @@ class SWP_Buttons_Panel {
85
  * @var array
86
  *
87
  */
88
- public $options = array();
89
 
90
 
91
  /**
@@ -131,30 +130,30 @@ class SWP_Buttons_Panel {
131
 
132
 
133
  /**
134
- * The fully qualified HTML for the Buttons Panel.
135
- *
136
- * @var string $html;
137
- *
138
- */
139
- public $html = '';
140
 
141
 
142
  /**
143
- * The array of active buttons for $this Social Panel.
144
- *
145
- * @var array $active_buttons;
146
- *
147
- */
148
- public $active_buttons = array();
149
 
150
 
151
  /**
152
- * The sum of share counts across active networks.
153
- *
154
- * @var integer $total_shares;
155
- *
156
- */
157
- public $total_shares = 0;
158
 
159
 
160
  /**
@@ -179,26 +178,26 @@ class SWP_Buttons_Panel {
179
  */
180
 
181
 
182
- /**
183
- * The Construct Method
184
- *
185
- * This method creates the Buttons_Panel object. It gathers all of the
186
- * necessary data, the user options, the share counts, and stores it all in
187
- * local properties. Later we will call the public method render_html()
188
- * (e.g. $Buttons_Panel->render_html(); ) to actually render out the panel to
189
- * the screen.
190
- *
191
- * @since 3.0.0 | 01 MAR 2018 | Created
192
  * @since 3.1.0 | 05 JUL 2018 | Created debug() & establish_post_data() methods.
193
  * @since 3.4.0 | 20 SEP 2018 | Moved establish_post_id() into a conditional.
194
  * @param array optional $args The arguments passed in via shortcode.
195
  * @param boolean optional $shortcode If a shortcode/direct function
196
  * is calling this class.
197
  * @return void
198
- *
199
- */
200
- public function __construct( $args = array(), $shortcode = false ) {
201
- global $swp_social_networks;
202
 
203
 
204
  /**
@@ -206,10 +205,10 @@ class SWP_Buttons_Panel {
206
  * the Buttons_panel object properly.
207
  *
208
  */
209
- $this->networks = $swp_social_networks;
210
  $this->args = $args;
211
- $this->content = isset( $args['content'] ) ? $args['content'] : '';
212
- $this->is_shortcode = $shortcode;
213
 
214
 
215
  /**
@@ -220,9 +219,9 @@ class SWP_Buttons_Panel {
220
  * without one present.
221
  *
222
  */
223
- if ( false === $this->establish_post_id() ) {
224
- return;
225
- }
226
 
227
 
228
  /**
@@ -231,14 +230,14 @@ class SWP_Buttons_Panel {
231
  * according to the user options, the per post options, share counts, etc.
232
  *
233
  */
234
- $this->establish_post_data();
235
- $this->establish_local_options();
236
  $this->establish_share_data();
237
- $this->establish_location();
238
  $this->establish_permalink();
239
- $this->establish_active_buttons();
240
- $this->debug();
241
- }
242
 
243
 
244
  /**
@@ -253,21 +252,21 @@ class SWP_Buttons_Panel {
253
  * @return boolean True on success; False on failure.
254
  *
255
  */
256
- public function establish_post_id() {
257
 
258
 
259
  /**
260
- * Cycle through the available post_id labels, find which one was passed
261
- * in and use it as the post_id for this panel of buttons.
262
- *
263
- */
264
- $id_labels = array( 'id', 'post_id', 'postid' );
265
- foreach( $id_labels as $label ) {
266
- if ( isset( $this->args[$label] ) && is_numeric( $this->args[$label] ) ) {
267
- $this->post_id = $this->args[$label];
268
- return true;
269
- }
270
- }
271
 
272
 
273
  /**
@@ -275,7 +274,7 @@ class SWP_Buttons_Panel {
275
  * convert it into a valid WordPress ID for a post.
276
  *
277
  */
278
- if ( isset( $this->args['url'] ) && $post_id_from_url = url_to_postid( $this->args['url'] ) ) {
279
  $this->post_id = $post_id_from_url;
280
  return true;
281
  }
@@ -287,10 +286,10 @@ class SWP_Buttons_Panel {
287
  *
288
  */
289
  global $post;
290
- if ( is_object( $post ) ) :
291
- $this->post_id = $post->ID;
292
  return true;
293
- endif;
294
 
295
 
296
  /**
@@ -300,7 +299,7 @@ class SWP_Buttons_Panel {
300
  */
301
  return false;
302
 
303
- }
304
 
305
 
306
  /**
@@ -348,25 +347,25 @@ class SWP_Buttons_Panel {
348
  *
349
  */
350
  protected function establish_local_options() {
351
- global $swp_user_options;
352
  $this->options = array_merge( $swp_user_options, $this->args);
353
  }
354
 
355
 
356
  /**
357
- * Establishes the share data from a given post ID.
358
- *
359
- * @since 3.1.0 | 25 JUN 2018 | Created the method.
360
- * @param void
361
- * @return $this Allows for method chaining.
362
- *
363
- */
364
- public function establish_share_data() {
365
- global $SWP_Post_Caches;
366
- $this->shares = $SWP_Post_Caches->get_post_cache( $this->post_id )->get_shares();
367
 
368
- return $this;
369
- }
370
 
371
 
372
  /**
@@ -393,7 +392,7 @@ class SWP_Buttons_Panel {
393
  * return with the location set to 'none'.
394
  *
395
  */
396
- $this->location = 'none';
397
 
398
 
399
  /**
@@ -443,9 +442,9 @@ class SWP_Buttons_Panel {
443
  * first item from the array and use that instead.
444
  *
445
  */
446
- if( is_array($post_setting) ) {
447
- $post_setting = $post_setting[0];
448
- }
449
 
450
 
451
  /**
@@ -456,7 +455,7 @@ class SWP_Buttons_Panel {
456
  */
457
  if ( !empty( $post_setting ) && 'default' != $post_setting ) {
458
  $this->location = $post_setting;
459
- return;
460
  }
461
 
462
 
@@ -477,11 +476,11 @@ class SWP_Buttons_Panel {
477
  * one to trump that one so this comes first.
478
  *
479
  */
480
- $home_location = $this->get_option( 'location_home' );
481
  if( is_front_page() && !empty( $home_location ) ) {
482
  $this->location = $home_location;
483
- return;
484
- }
485
 
486
 
487
  /**
@@ -493,17 +492,17 @@ class SWP_Buttons_Panel {
493
  * strings. As such, we'll leave the location setting to 'none'.
494
  *
495
  */
496
- $post_type_location = $this->get_option( 'location_' . $this->post_data['post_type'] );
497
  if ( is_singular() && !empty( $post_type_location ) ) {
498
- $this->location = $post_type_location;
499
  return;
500
- }
501
 
502
  // If we are on the blogroll or an archive listing.
503
- if ( is_archive() || is_home() ) {
504
- $this->location = $this->get_option( 'location_archive_categories' );
505
  return;
506
- }
507
  }
508
 
509
 
@@ -620,13 +619,13 @@ class SWP_Buttons_Panel {
620
  *
621
  */
622
  public function set_option( $option = '', $value = null ) {
623
- if ( empty( $option ) ) :
624
- $message = "Hey developer, " . __CLASS__ . __METHOD__ . " a first paramter $option (string) and \$value (mixed). You provided " . gettype($value) . ".";
625
- throw new Exception($message);
626
- elseif ( null == $value ) :
627
- $message = "Hey developer, " . __CLASS__ . __METHOD__ . " a second paramter: \$value (mixed type). You provided " . gettype($value) . ".";
628
- throw new Exception($message);
629
- endif;
630
 
631
  $this->options[$this->options] = $value;
632
  return $this;
@@ -645,10 +644,10 @@ class SWP_Buttons_Panel {
645
  *
646
  */
647
  public function set_options( $options = array() ) {
648
- if ( !is_array( $options) ) :
649
- $message = "Hey developer, " . __CLASS__ . __METHOD__ . " requires an arry of options. You provided " . gettype($options) . ".";
650
- throw new Exception($message);
651
- endif;
652
 
653
  array_merge( $this->options , $options );
654
  return $this;
@@ -668,26 +667,26 @@ class SWP_Buttons_Panel {
668
 
669
 
670
  /**
671
- * Runs checks before ordering a set of buttons.
672
- *
673
- * @since 3.0.6 | 14 MAY 2018 | Removed the swp-content-locator div.
674
- * @since 3.3.3 | 18 SEP 2018 | Added return value for
675
- * should_panel_display() condition.
676
- * @since 3.4.0 | 21 SEP 2018 | Removed $content parameter.
677
- * @since 3.4.0 | 24 OCT 2018 | Simplified, combined with method from the
678
- * side panel child class.
679
- * @param string $content The WordPress content, if passed in.
680
- *
681
- */
682
- public function render_html() {
683
-
684
-
685
- /**
686
- * We have a standalone method designed to let us know if all the proper
687
- * desired conditions are met in order to allow us to print the buttons.
688
- *
689
- */
690
- if ( false == $this->should_panel_display() ) {
691
  return $this->content;
692
  }
693
 
@@ -702,8 +701,8 @@ class SWP_Buttons_Panel {
702
  $this->generate_attributes();
703
  $this->generate_buttons_and_totals_html();
704
  $this->combine_html_assets();
705
- $this->append_panel_to_content();
706
 
707
- return $this->content;
708
- }
709
  }
43
  * get_min_width();
44
  * get_float_background();
45
  * get_option();
 
46
  * get_mobile_float_location();
47
  * get_order_of_icons();
48
  * get_ordered_network_objects();
84
  * @var array
85
  *
86
  */
87
+ public $options = array();
88
 
89
 
90
  /**
130
 
131
 
132
  /**
133
+ * The fully qualified HTML for the Buttons Panel.
134
+ *
135
+ * @var string $html;
136
+ *
137
+ */
138
+ public $html = '';
139
 
140
 
141
  /**
142
+ * The array of active buttons for $this Social Panel.
143
+ *
144
+ * @var array $active_buttons;
145
+ *
146
+ */
147
+ public $active_buttons = array();
148
 
149
 
150
  /**
151
+ * The sum of share counts across active networks.
152
+ *
153
+ * @var integer $total_shares;
154
+ *
155
+ */
156
+ public $total_shares = 0;
157
 
158
 
159
  /**
178
  */
179
 
180
 
181
+ /**
182
+ * The Construct Method
183
+ *
184
+ * This method creates the Buttons_Panel object. It gathers all of the
185
+ * necessary data, the user options, the share counts, and stores it all in
186
+ * local properties. Later we will call the public method render_html()
187
+ * (e.g. $Buttons_Panel->render_html(); ) to actually render out the panel to
188
+ * the screen.
189
+ *
190
+ * @since 3.0.0 | 01 MAR 2018 | Created
191
  * @since 3.1.0 | 05 JUL 2018 | Created debug() & establish_post_data() methods.
192
  * @since 3.4.0 | 20 SEP 2018 | Moved establish_post_id() into a conditional.
193
  * @param array optional $args The arguments passed in via shortcode.
194
  * @param boolean optional $shortcode If a shortcode/direct function
195
  * is calling this class.
196
  * @return void
197
+ *
198
+ */
199
+ public function __construct( $args = array(), $shortcode = false ) {
200
+ global $swp_social_networks;
201
 
202
 
203
  /**
205
  * the Buttons_panel object properly.
206
  *
207
  */
208
+ $this->networks = $swp_social_networks;
209
  $this->args = $args;
210
+ $this->content = isset( $args['content'] ) ? $args['content'] : '';
211
+ $this->is_shortcode = $shortcode;
212
 
213
 
214
  /**
219
  * without one present.
220
  *
221
  */
222
+ if ( false === $this->establish_post_id() ) {
223
+ return;
224
+ }
225
 
226
 
227
  /**
230
  * according to the user options, the per post options, share counts, etc.
231
  *
232
  */
233
+ $this->establish_post_data();
234
+ $this->establish_local_options();
235
  $this->establish_share_data();
236
+ $this->establish_location();
237
  $this->establish_permalink();
238
+ $this->establish_active_buttons();
239
+ $this->debug();
240
+ }
241
 
242
 
243
  /**
252
  * @return boolean True on success; False on failure.
253
  *
254
  */
255
+ public function establish_post_id() {
256
 
257
 
258
  /**
259
+ * Cycle through the available post_id labels, find which one was passed
260
+ * in and use it as the post_id for this panel of buttons.
261
+ *
262
+ */
263
+ $id_labels = array( 'id', 'post_id', 'postid' );
264
+ foreach( $id_labels as $label ) {
265
+ if ( isset( $this->args[$label] ) && is_numeric( $this->args[$label] ) ) {
266
+ $this->post_id = $this->args[$label];
267
+ return true;
268
+ }
269
+ }
270
 
271
 
272
  /**
274
  * convert it into a valid WordPress ID for a post.
275
  *
276
  */
277
+ if ( isset( $this->args['url'] ) && $post_id_from_url = url_to_postid( $this->args['url'] ) ) {
278
  $this->post_id = $post_id_from_url;
279
  return true;
280
  }
286
  *
287
  */
288
  global $post;
289
+ if ( is_object( $post ) ) :
290
+ $this->post_id = $post->ID;
291
  return true;
292
+ endif;
293
 
294
 
295
  /**
299
  */
300
  return false;
301
 
302
+ }
303
 
304
 
305
  /**
347
  *
348
  */
349
  protected function establish_local_options() {
350
+ global $swp_user_options;
351
  $this->options = array_merge( $swp_user_options, $this->args);
352
  }
353
 
354
 
355
  /**
356
+ * Establishes the share data from a given post ID.
357
+ *
358
+ * @since 3.1.0 | 25 JUN 2018 | Created the method.
359
+ * @param void
360
+ * @return $this Allows for method chaining.
361
+ *
362
+ */
363
+ public function establish_share_data() {
364
+ global $SWP_Post_Caches;
365
+ $this->shares = $SWP_Post_Caches->get_post_cache( $this->post_id )->get_shares();
366
 
367
+ return $this;
368
+ }
369
 
370
 
371
  /**
392
  * return with the location set to 'none'.
393
  *
394
  */
395
+ $this->location = 'none';
396
 
397
 
398
  /**
442
  * first item from the array and use that instead.
443
  *
444
  */
445
+ if( is_array($post_setting) ) {
446
+ $post_setting = $post_setting[0];
447
+ }
448
 
449
 
450
  /**
455
  */
456
  if ( !empty( $post_setting ) && 'default' != $post_setting ) {
457
  $this->location = $post_setting;
458
+ return;
459
  }
460
 
461
 
476
  * one to trump that one so this comes first.
477
  *
478
  */
479
+ $home_location = $this->get_option( 'location_home' );
480
  if( is_front_page() && !empty( $home_location ) ) {
481
  $this->location = $home_location;
482
+ return;
483
+ }
484
 
485
 
486
  /**
492
  * strings. As such, we'll leave the location setting to 'none'.
493
  *
494
  */
495
+ $post_type_location = $this->get_option( 'location_' . $this->post_data['post_type'] );
496
  if ( is_singular() && !empty( $post_type_location ) ) {
497
+ $this->location = $post_type_location;
498
  return;
499
+ }
500
 
501
  // If we are on the blogroll or an archive listing.
502
+ if ( is_archive() || is_home() ) {
503
+ $this->location = $this->get_option( 'location_archive_categories' );
504
  return;
505
+ }
506
  }
507
 
508
 
619
  *
620
  */
621
  public function set_option( $option = '', $value = null ) {
622
+ if ( empty( $option ) ) :
623
+ $message = "Hey developer, " . __CLASS__ . __METHOD__ . " a first paramter $option (string) and \$value (mixed). You provided " . gettype($value) . ".";
624
+ throw new Exception($message);
625
+ elseif ( null == $value ) :
626
+ $message = "Hey developer, " . __CLASS__ . __METHOD__ . " a second paramter: \$value (mixed type). You provided " . gettype($value) . ".";
627
+ throw new Exception($message);
628
+ endif;
629
 
630
  $this->options[$this->options] = $value;
631
  return $this;
644
  *
645
  */
646
  public function set_options( $options = array() ) {
647
+ if ( !is_array( $options) ) :
648
+ $message = "Hey developer, " . __CLASS__ . __METHOD__ . " requires an arry of options. You provided " . gettype($options) . ".";
649
+ throw new Exception($message);
650
+ endif;
651
 
652
  array_merge( $this->options , $options );
653
  return $this;
667
 
668
 
669
  /**
670
+ * Runs checks before ordering a set of buttons.
671
+ *
672
+ * @since 3.0.6 | 14 MAY 2018 | Removed the swp-content-locator div.
673
+ * @since 3.3.3 | 18 SEP 2018 | Added return value for
674
+ * should_panel_display() condition.
675
+ * @since 3.4.0 | 21 SEP 2018 | Removed $content parameter.
676
+ * @since 3.4.0 | 24 OCT 2018 | Simplified, combined with method from the
677
+ * side panel child class.
678
+ * @param string $content The WordPress content, if passed in.
679
+ *
680
+ */
681
+ public function render_html() {
682
+
683
+
684
+ /**
685
+ * We have a standalone method designed to let us know if all the proper
686
+ * desired conditions are met in order to allow us to print the buttons.
687
+ *
688
+ */
689
+ if ( false == $this->should_panel_display() ) {
690
  return $this->content;
691
  }
692
 
701
  $this->generate_attributes();
702
  $this->generate_buttons_and_totals_html();
703
  $this->combine_html_assets();
704
+ $this->append_panel_to_content();
705
 
706
+ return $this->content;
707
+ }
708
  }
lib/buttons-panel/SWP_Buttons_Panel_Loader.php CHANGED
@@ -26,7 +26,7 @@ class SWP_Buttons_panel_Loader {
26
  * @var array
27
  *
28
  */
29
- public $already_printed;
30
 
31
 
32
  /**
@@ -51,16 +51,16 @@ class SWP_Buttons_panel_Loader {
51
  public $content_loaded = false;
52
 
53
 
54
- /**
55
- * The class constructor.
56
- *
57
- * @since 3.1.0 | Changed priority for wp_footer. Makes the buttons loads
58
- * This post data instead of data in the loop.
59
- * @param void
60
- * @return void
61
- *
62
- */
63
- public function __construct() {
64
 
65
 
66
  /**
@@ -69,114 +69,114 @@ class SWP_Buttons_panel_Loader {
69
  * the_content filter on the same post more than once.
70
  *
71
  */
72
- global $swp_already_print;
73
 
74
  // The global array of the user-selected options.
75
- global $swp_user_options;
76
 
77
  // Declare variable as array if not already done so.
78
- if ( !is_array( $swp_already_print ) ) {
79
- $swp_already_print = array();
80
- }
81
 
82
  // Move these two globals into local properties.
83
- $this->already_printed = $swp_already_print;
84
- $this->options = $swp_user_options;
85
 
86
- // Hook into the template_redirect so that is_singular() conditionals will be ready
87
- add_action( 'template_redirect', array( $this, 'activate_buttons' ) );
88
- add_action( 'wp_footer', array( $this, 'floating_buttons' ) , 20 );
89
  add_filter( 'the_content', array( $this, 'add_static_panel_fallback_content' ) , 20 );
90
  add_action( 'wp_footer', array( $this, 'add_static_panel_fallback_footer' ) , 20 );
91
- }
92
 
93
 
94
- /**
95
- * A function to add the buttons
96
- *
97
- * @since 2.1.4 | 01 JAN 2017 | Created
98
- * @since 3.0.6 | 14 MAY 2018 | Added second filter for the_content.
99
- * @param void
100
- * @return void
101
- *
102
- */
103
- public function activate_buttons() {
104
 
105
  // Bail if we're in the presence of a known conflict without a fix.
106
- if ( Social_Warfare::has_plugin_conflict() ) {
107
- return;
108
- }
109
 
110
- // Only hook into the_content filter if is_singular() is true or
111
- // they don't use excerpts on the archive pages.
112
- if( is_singular() || true === SWP_Utility::get_option( 'full_content' ) ) {
113
- add_filter( 'the_content', array( $this, 'social_warfare_wrapper' ) , 20 );
114
- add_filter( 'the_content', array( $this, 'add_content_locator' ), 20);
115
- }
116
 
117
  // If we're not on is_singlular, we'll hook into the excerpt.
118
- if ( !is_singular() && false === SWP_Utility::get_option( 'full_content' ) ) {
119
- add_filter( 'the_excerpt', array( $this, 'social_warfare_wrapper' ) );
120
- }
121
- }
122
-
123
-
124
- /**
125
- * Add the content locator div.
126
- *
127
- * Inserts the empty div for locating Pin images (with javascript). We only
128
- * add this to the content if we need it.
129
- *
130
- * 1. If the Pinit Image Hover Buttons are active we'll use this locator div
131
- * to ensure that we are only adding the "save" button to images that are in
132
- * the content area.
133
- *
134
- * 2. If the "float_before_content" otpion is turned off, we'll use this
135
- * locator div to determine where the content is and then not display the
136
- * buttons panel unless we are past the top of the content area.
137
- *
138
- * @since 3.0.6 | 14 MAY 2018 | Created the method.
139
- * @since 3.4.0 | 19 SEP 2018 | Added check for pinit_toggle option.
140
- * @since 3.4.2 | 11 DEC 2018 | Added check for float_before_content option.
141
- * @param string $content The WordPress content passed via filter.
142
- * @return string $content The modified string of content.
143
- *
144
- */
145
- public function add_content_locator( $content ) {
146
  $pinit_toggle = SWP_Utility::get_option( 'pinit_toggle' );
147
  $float_before_content = SWP_Utility::get_option( 'float_before_content' );
148
 
149
  if( $pinit_toggle || !$float_before_content ) {
150
- $content .= '<div class="swp-content-locator"></div>';
151
  }
152
 
153
- return $content;
154
- }
155
 
156
 
157
- /**
158
- * A wrapper function for adding the buttons, content, or excerpt.
159
- *
160
- * @since 1.0.0
161
- * @param string $content The content.
162
- * @return string $content The modified content
163
- * @todo Why is the $content passed to both the instantator and the method?
164
- *
165
- */
166
- public function social_warfare_wrapper( $content ) {
167
 
168
  // The global WordPress post object.
169
- global $post;
170
 
171
- // Ensure it's not an embedded post
172
- if ( is_singular() && $post->ID !== get_queried_object_id() ) {
173
  return $content;
174
- }
175
 
176
- // Pass the content to the buttons constructor to place them inside.
177
- $buttons_panel = new SWP_Buttons_Panel( array( 'content' => $content ) );
178
- return $buttons_panel->render_html();
179
- }
180
 
181
 
182
  /**
@@ -187,26 +187,26 @@ class SWP_Buttons_panel_Loader {
187
  * @return void
188
  *
189
  */
190
- function floating_buttons() {
191
 
192
  // Bail if we're in the presence of a known conflict with no fix.
193
- if ( Social_Warfare::has_plugin_conflict() ) {
194
- return;
195
- }
196
 
197
  // Instantiate a new Buttons Panel.
198
- $side_panel = new SWP_Buttons_Panel_Side( array( 'content' => "" ) );
199
 
200
  // Determine if the floating buttons are not supposed to print.
201
- $location = $side_panel->get_float_location();
202
- if ( 'none' === $location || 'ignore' === $location ) {
203
- return;
204
- }
205
 
206
  // Render the html to output to the screen.
207
- echo $side_panel->render_html();
208
 
209
- }
210
 
211
 
212
  /**
@@ -261,26 +261,26 @@ class SWP_Buttons_panel_Loader {
261
  }
262
 
263
 
264
- /**
265
- * When floatingHorizontal buttons are desired, but not staticHorizontal
266
- * exists, we need to create a staticHorizontal so the floaters have
267
- * a target to clone.
268
- *
269
- * @since 3.4.0 | 25 OCT 2018 | Created.
270
- * @param void
271
- * @return void The rendered HTML is echoed to the screen.
272
- *
273
- */
274
  public function generate_static_panel_fallback( $content = '' ) {
275
  global $post;
276
 
277
 
278
- /**
279
- * If all the checks above get passed, then we'll go ahead and create a
280
- * static horizontal buttons panel, wrap it in a wrapper to make it
281
- * invisible, and echo it to the screen.
282
- *
283
- */
284
  $staticHorizontal = new SWP_Buttons_Panel();
285
  $html = '<div class="swp-hidden-panel-wrap" style="display: none; visibility: collapse; opacity: 0">';
286
  $html .= $staticHorizontal->render_html();
@@ -301,6 +301,10 @@ class SWP_Buttons_panel_Loader {
301
  public function should_float_fallback_display() {
302
  global $post;
303
 
 
 
 
 
304
 
305
  /**
306
  * We'll gather up all of our data into some variables so that we can
@@ -379,18 +383,18 @@ class SWP_Buttons_panel_Loader {
379
  }
380
 
381
 
382
- /**
383
- * The main social_warfare function used to create the buttons.
384
- *
385
- * @since 3.0.0 | 01 MAR 2018 | A class based method created which clones
386
- * the public facing function.
387
- * @param array $array An array of options and information to pass into the
388
- * buttons function.
389
- * @return string The html for a panel of buttons.
390
- *
391
- */
392
- public static function social_warfare( $args = array() ) {
393
- $Buttons_Panel = new SWP_Buttons_Panel( $args );
394
- echo $Buttons_Panel->render_html();
395
- }
396
  }
26
  * @var array
27
  *
28
  */
29
+ public $already_printed;
30
 
31
 
32
  /**
51
  public $content_loaded = false;
52
 
53
 
54
+ /**
55
+ * The class constructor.
56
+ *
57
+ * @since 3.1.0 | Changed priority for wp_footer. Makes the buttons loads
58
+ * This post data instead of data in the loop.
59
+ * @param void
60
+ * @return void
61
+ *
62
+ */
63
+ public function __construct() {
64
 
65
 
66
  /**
69
  * the_content filter on the same post more than once.
70
  *
71
  */
72
+ global $swp_already_print;
73
 
74
  // The global array of the user-selected options.
75
+ global $swp_user_options;
76
 
77
  // Declare variable as array if not already done so.
78
+ if ( !is_array( $swp_already_print ) ) {
79
+ $swp_already_print = array();
80
+ }
81
 
82
  // Move these two globals into local properties.
83
+ $this->already_printed = $swp_already_print;
84
+ $this->options = $swp_user_options;
85
 
86
+ // Hook into the template_redirect so that is_singular() conditionals will be ready
87
+ add_action( 'template_redirect', array( $this, 'activate_buttons' ) );
88
+ add_action( 'wp_footer', array( $this, 'floating_buttons' ) , 20 );
89
  add_filter( 'the_content', array( $this, 'add_static_panel_fallback_content' ) , 20 );
90
  add_action( 'wp_footer', array( $this, 'add_static_panel_fallback_footer' ) , 20 );
91
+ }
92
 
93
 
94
+ /**
95
+ * A function to add the buttons
96
+ *
97
+ * @since 2.1.4 | 01 JAN 2017 | Created
98
+ * @since 3.0.6 | 14 MAY 2018 | Added second filter for the_content.
99
+ * @param void
100
+ * @return void
101
+ *
102
+ */
103
+ public function activate_buttons() {
104
 
105
  // Bail if we're in the presence of a known conflict without a fix.
106
+ if ( Social_Warfare::has_plugin_conflict() ) {
107
+ return;
108
+ }
109
 
110
+ // Only hook into the_content filter if is_singular() is true or
111
+ // they don't use excerpts on the archive pages.
112
+ if( is_singular() || true === SWP_Utility::get_option( 'full_content' ) ) {
113
+ add_filter( 'the_content', array( $this, 'social_warfare_wrapper' ) , 20 );
114
+ add_filter( 'the_content', array( $this, 'add_content_locator' ), 20);
115
+ }
116
 
117
  // If we're not on is_singlular, we'll hook into the excerpt.
118
+ if ( !is_singular() && false === SWP_Utility::get_option( 'full_content' ) ) {
119
+ add_filter( 'the_excerpt', array( $this, 'social_warfare_wrapper' ) );
120
+ }
121
+ }
122
+
123
+
124
+ /**
125
+ * Add the content locator div.
126
+ *
127
+ * Inserts the empty div for locating Pin images (with javascript). We only
128
+ * add this to the content if we need it.
129
+ *
130
+ * 1. If the Pinit Image Hover Buttons are active we'll use this locator div
131
+ * to ensure that we are only adding the "save" button to images that are in
132
+ * the content area.
133
+ *
134
+ * 2. If the "float_before_content" otpion is turned off, we'll use this
135
+ * locator div to determine where the content is and then not display the
136
+ * buttons panel unless we are past the top of the content area.
137
+ *
138
+ * @since 3.0.6 | 14 MAY 2018 | Created the method.
139
+ * @since 3.4.0 | 19 SEP 2018 | Added check for pinit_toggle option.
140
+ * @since 3.4.2 | 11 DEC 2018 | Added check for float_before_content option.
141
+ * @param string $content The WordPress content passed via filter.
142
+ * @return string $content The modified string of content.
143
+ *
144
+ */
145
+ public function add_content_locator( $content ) {
146
  $pinit_toggle = SWP_Utility::get_option( 'pinit_toggle' );
147
  $float_before_content = SWP_Utility::get_option( 'float_before_content' );
148
 
149
  if( $pinit_toggle || !$float_before_content ) {
150
+ $content .= '<div class="swp-content-locator"></div>';
151
  }
152
 
153
+ return $content;
154
+ }
155
 
156
 
157
+ /**
158
+ * A wrapper function for adding the buttons, content, or excerpt.
159
+ *
160
+ * @since 1.0.0
161
+ * @param string $content The content.
162
+ * @return string $content The modified content
163
+ * @todo Why is the $content passed to both the instantator and the method?
164
+ *
165
+ */
166
+ public function social_warfare_wrapper( $content ) {
167
 
168
  // The global WordPress post object.
169
+ global $post;
170
 
171
+ // Ensure it's not an embedded post
172
+ if ( is_singular() && $post->ID !== get_queried_object_id() ) {
173
  return $content;
174
+ }
175
 
176
+ // Pass the content to the buttons constructor to place them inside.
177
+ $buttons_panel = new SWP_Buttons_Panel( array( 'content' => $content ) );
178
+ return $buttons_panel->render_html();
179
+ }
180
 
181
 
182
  /**
187
  * @return void
188
  *
189
  */
190
+ function floating_buttons() {
191
 
192
  // Bail if we're in the presence of a known conflict with no fix.
193
+ if ( Social_Warfare::has_plugin_conflict() ) {
194
+ return;
195
+ }
196
 
197
  // Instantiate a new Buttons Panel.
198
+ $side_panel = new SWP_Buttons_Panel_Side( array( 'content' => "" ) );
199
 
200
  // Determine if the floating buttons are not supposed to print.
201
+ $location = $side_panel->get_float_location();
202
+ if ( 'none' === $location || 'ignore' === $location ) {
203
+ return;
204
+ }
205
 
206
  // Render the html to output to the screen.
207
+ echo $side_panel->render_html();
208
 
209
+ }
210
 
211
 
212
  /**
261
  }
262
 
263
 
264
+ /**
265
+ * When floatingHorizontal buttons are desired, but not staticHorizontal
266
+ * exists, we need to create a staticHorizontal so the floaters have
267
+ * a target to clone.
268
+ *
269
+ * @since 3.4.0 | 25 OCT 2018 | Created.
270
+ * @param void
271
+ * @return void The rendered HTML is echoed to the screen.
272
+ *
273
+ */
274
  public function generate_static_panel_fallback( $content = '' ) {
275
  global $post;
276
 
277
 
278
+ /**
279
+ * If all the checks above get passed, then we'll go ahead and create a
280
+ * static horizontal buttons panel, wrap it in a wrapper to make it
281
+ * invisible, and echo it to the screen.
282
+ *
283
+ */
284
  $staticHorizontal = new SWP_Buttons_Panel();
285
  $html = '<div class="swp-hidden-panel-wrap" style="display: none; visibility: collapse; opacity: 0">';
286
  $html .= $staticHorizontal->render_html();
301
  public function should_float_fallback_display() {
302
  global $post;
303
 
304
+ if ( !is_object( $post ) ) {
305
+ return false;
306
+ }
307
+
308
 
309
  /**
310
  * We'll gather up all of our data into some variables so that we can
383
  }
384
 
385
 
386
+ /**
387
+ * The main social_warfare function used to create the buttons.
388
+ *
389
+ * @since 3.0.0 | 01 MAR 2018 | A class based method created which clones
390
+ * the public facing function.
391
+ * @param array $array An array of options and information to pass into the
392
+ * buttons function.
393
+ * @return string The html for a panel of buttons.
394
+ *
395
+ */
396
+ public static function social_warfare( $args = array() ) {
397
+ $Buttons_Panel = new SWP_Buttons_Panel( $args );
398
+ echo $Buttons_Panel->render_html();
399
+ }
400
  }
lib/buttons-panel/SWP_Buttons_Panel_Trait.php CHANGED
@@ -705,7 +705,7 @@ trait SWP_Buttons_Panel_Trait {
705
  }
706
 
707
  // Render the html for the total shares.
708
- $html = '<div class="nc_tweetContainer total_shares total_sharesalt" >';
709
  $html .= '<span class="swp_count ">' . SWP_Utility::kilomega( $this->shares['total_shares'] ) . ' <span class="swp_label">' . __( 'Shares','social-warfare' ) . '</span></span>';
710
  $html .= '</div>';
711
 
@@ -805,14 +805,15 @@ trait SWP_Buttons_Panel_Trait {
805
  return;
806
  }
807
 
808
-
809
  /**
810
  * If it's not a set of floating buttons and it's not set to the left,
811
  * then we attach the total shares on the right.
812
  *
813
  */
814
- $this->inner_html = $buttons_html . $total_shares_html;
815
 
 
 
 
816
  }
817
 
818
 
705
  }
706
 
707
  // Render the html for the total shares.
708
+ $html = '<div class="nc_tweetContainer swp_share_button total_shares total_sharesalt" >';
709
  $html .= '<span class="swp_count ">' . SWP_Utility::kilomega( $this->shares['total_shares'] ) . ' <span class="swp_label">' . __( 'Shares','social-warfare' ) . '</span></span>';
710
  $html .= '</div>';
711
 
805
  return;
806
  }
807
 
 
808
  /**
809
  * If it's not a set of floating buttons and it's not set to the left,
810
  * then we attach the total shares on the right.
811
  *
812
  */
 
813
 
814
+ else {
815
+ $this->inner_html = $buttons_html . $total_shares_html;
816
+ }
817
  }
818
 
819
 
lib/frontend-output/SWP_Header_Output.php CHANGED
@@ -14,139 +14,138 @@ class SWP_Header_Output {
14
 
15
 
16
  /**
17
- * The global user options array.
18
- *
19
- * @since 3.0.0
20
- * @var array $swp_user_options An array of options as set by the WordPress admin.
21
- *
22
- */
23
 
24
 
25
  /**
26
- * The local user options array.
27
- *
28
- * @since 3.0.0
29
- * @var array $swp_user_options An array of options as set by the WordPress admin.
30
- *
31
- */
32
- public $options;
33
-
34
-
35
- /**
36
- * This is the magic method that instatiates this class.
37
- *
38
- * We pull the global user options into a local property so that we don't have to keep
39
- * pulling in the global in each method in which it is needed.
40
- *
41
- * @since 3.0.0 | 21 FEB 2018 | Created
42
- *
43
- */
44
- public function __construct() {
45
- global $swp_user_options;
46
- $this->options = $swp_user_options;
47
- $this->init();
48
- }
49
-
50
- private function init() {
51
- add_action( 'wp_head' , array( $this, 'add_header_output' ), 1 );
52
- add_filter( 'swp_header_html' , array( $this, 'output_font_css' ), 20 );
53
- add_action( 'admin_head' , array( $this, 'output_font_css' ), 20 );
54
- }
55
-
56
-
57
- /**
58
- * The function that we're hooking into the header
59
- *
60
- * All other items being added to the header will be hooked into
61
- * swp_meta_tags which we will call and print via this function.
62
- *
63
- * @since 1.4.0
64
- * @access public
65
- * @param none
66
- * @return none
67
- *
68
- */
69
- function add_header_output() {
70
-
71
- // Get the global options and the post ID
72
- $info['postID'] = get_the_ID();
73
- $info['html_output'] = '';
74
-
75
-
76
- /**
77
- * Create and return the values to be used in the header meta tags
78
- *
79
- * We use our own proprietary header filter so that anything being added to the head
80
- * across our plugin or across any of our addons will all be output at the same time.
81
- * Once the filter has been run and the string is fully compiled, then we will use
82
- * the WordPress head hook to output the compiled string.
83
- *
84
- * @since 2.1.4
85
- * @access public
86
- * @var array $info An array of information
87
- * @return array $info The modified array with the 'meta_tag_values' index populated
88
- *
89
- */
90
- $info = apply_filters( 'swp_header_values' , $info );
91
-
92
-
93
- /**
94
- * A filter to take the values from above and compile them into their html format
95
- *
96
- * This filter will take the values from $info['meta_tag_values'] and compile
97
- * them into html stored at $info['html_output']. $info['html_output'] is
98
- * a string that gets added (.=) to by each hook.
99
- *
100
- * Note: Each meta tag should begin with PHP_EOL for clean structured HTML output
101
- *
102
- * @since 2.1.4
103
- * @access public
104
- * @var array $info An array of information
105
- * @return array $info The modified array with the 'html_output' index populated.
106
- *
107
- */
108
- $info = apply_filters( 'swp_header_html' , $info );
109
-
110
- if ( $info['html_output'] ) :
111
- echo PHP_EOL . '<!-- Social Warfare v' . SWP_VERSION . ' https://warfareplugins.com -->';
112
- echo $info['html_output'];
113
- echo PHP_EOL . '<!-- Social Warfare v' . SWP_VERSION . ' https://warfareplugins.com -->' . PHP_EOL . PHP_EOL;
114
- endif;
115
- }
116
-
117
-
118
- /**
119
- * Output the CSS to include the icon font.
120
- *
121
- * Note: This is done in the header rather than in a CSS file to
122
- * avoid having the fonts called from a CDN, 95% of which do not
123
- * support the necessary mime & cross-origin access types to deliver them.
124
- *
125
- * @since 1.0.0
126
- * @access public
127
- * @param array $info An array of information about the post
128
- * @return array $info The modified array
129
- *
130
- */
131
- function output_font_css( $info = array() ) {
132
- //* Make sure we only output the style once.
133
- if ( !empty( $info['html_output'] ) && strpos( $info['html_output'], 'font-family: "sw-icon-font"' ) ) :
134
- return $info;
135
- endif;
136
-
137
- $style = '<style>@font-face {font-family: "sw-icon-font";src:url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.eot?ver=' . SWP_VERSION . '");src:url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.eot?ver=' . SWP_VERSION . '#iefix") format("embedded-opentype"),url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.woff?ver=' . SWP_VERSION . '") format("woff"),
138
  url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.ttf?ver=' . SWP_VERSION . '") format("truetype"),url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.svg?ver=' . SWP_VERSION . '#1445203416") format("svg");font-weight: normal;font-style: normal;}</style>';
139
 
140
  if ( true === is_admin() ) {
141
  echo $style;
142
  } else {
143
- if ( empty( $info['html_output'] ) ) :
144
- $info['html_output'] = '';
145
- endif;
146
 
147
- $info['html_output'] .= $style;
148
  }
149
 
150
- return $info;
151
- }
152
  }
14
 
15
 
16
  /**
17
+ * The global user options array.
18
+ *
19
+ * @since 3.0.0
20
+ * @var array $swp_user_options An array of options as set by the WordPress admin.
21
+ *
22
+ */
23
 
24
 
25
  /**
26
+ * The local user options array.
27
+ *
28
+ * @since 3.0.0
29
+ * @var array $swp_user_options An array of options as set by the WordPress admin.
30
+ *
31
+ */
32
+ public $options;
33
+
34
+
35
+ /**
36
+ * This is the magic method that instatiates this class.
37
+ *
38
+ * We pull the global user options into a local property so that we don't have to keep
39
+ * pulling in the global in each method in which it is needed.
40
+ *
41
+ * @since 3.0.0 | 21 FEB 2018 | Created
42
+ *
43
+ */
44
+ public function __construct() {
45
+ global $swp_user_options;
46
+ $this->options = $swp_user_options;
47
+ $this->init();
48
+ }
49
+
50
+ private function init() {
51
+ add_action( 'wp_head' , array( $this, 'add_header_output' ), 1 );
52
+ add_filter( 'swp_header_html' , array( $this, 'output_font_css' ), 20 );
53
+ add_action( 'admin_head' , array( $this, 'output_font_css' ), 20 );
54
+ }
55
+
56
+
57
+ /**
58
+ * The function that we're hooking into the header
59
+ *
60
+ * All other items being added to the header will be hooked into
61
+ * swp_meta_tags which we will call and print via this function.
62
+ *
63
+ * @since 1.4.0
64
+ * @access public
65
+ * @param none
66
+ * @return none
67
+ *
68
+ */
69
+ function add_header_output() {
70
+
71
+ // Get the global options and the post ID
72
+ $info['postID'] = get_the_ID();
73
+
74
+
75
+ /**
76
+ * Create and return the values to be used in the header meta tags
77
+ *
78
+ * We use our own proprietary header filter so that anything being added to the head
79
+ * across our plugin or across any of our addons will all be output at the same time.
80
+ * Once the filter has been run and the string is fully compiled, then we will use
81
+ * the WordPress head hook to output the compiled string.
82
+ *
83
+ * @since 2.1.4
84
+ * @access public
85
+ * @var array $info An array of information
86
+ * @return array $info The modified array with the 'meta_tag_values' index populated
87
+ *
88
+ */
89
+ $info = apply_filters( 'swp_header_values' , $info );
90
+
91
+
92
+ /**
93
+ * Assembles the meta tags, CSS, icon font, and other items that go in <head>
94
+ *
95
+ * Note: Each meta tag should begin with PHP_EOL for clean structured HTML output
96
+ *
97
+ * @since 2.1.4
98
+ * @access public
99
+ * @var array $info An array of information
100
+ * @return array $info The modified array with the 'html_output' index populated.
101
+ *
102
+ */
103
+ $meta_html = apply_filters( 'swp_header_html', '' );
104
+
105
+ if ( $meta_html ) :
106
+ echo PHP_EOL . '<!-- Social Warfare v' . SWP_VERSION . ' https://warfareplugins.com -->';
107
+ echo $meta_html;
108
+ echo PHP_EOL . '<!-- Social Warfare v' . SWP_VERSION . ' https://warfareplugins.com -->' . PHP_EOL . PHP_EOL;
109
+ endif;
110
+ }
111
+
112
+
113
+ /**
114
+ * Output the CSS to include the icon font.
115
+ *
116
+ * Note: This is done in the header rather than in a CSS file to
117
+ * avoid having the fonts called from a CDN, 95% of which do not
118
+ * support the necessary mime & cross-origin access types to deliver them.
119
+ *
120
+ * @since 1.0.0
121
+ * @access public
122
+ * @param array $info An array of information about the post
123
+ * @return array $info The modified array
124
+ *
125
+ */
126
+ function output_font_css( $meta_html ) {
127
+ //* Make sure we only output the style once.
128
+ if ( !empty( $meta_html ) && strpos( $meta_html, 'font-family: "sw-icon-font"' ) ) :
129
+ return $meta_html;
130
+ endif;
131
+
132
+ if ( false == is_string( $meta_html ) ) {
133
+ $meta_html = '';
134
+ }
135
+
136
+ $style = '<style>@font-face {font-family: "sw-icon-font";src:url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.eot?ver=' . SWP_VERSION . '");src:url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.eot?ver=' . SWP_VERSION . '#iefix") format("embedded-opentype"),url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.woff?ver=' . SWP_VERSION . '") format("woff"),
 
137
  url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.ttf?ver=' . SWP_VERSION . '") format("truetype"),url("' . SWP_PLUGIN_URL . '/assets/fonts/sw-icon-font.svg?ver=' . SWP_VERSION . '#1445203416") format("svg");font-weight: normal;font-style: normal;}</style>';
138
 
139
  if ( true === is_admin() ) {
140
  echo $style;
141
  } else {
142
+ if ( empty( $meta_html ) ) :
143
+ $meta_html = '';
144
+ endif;
145
 
146
+ $meta_html .= $style;
147
  }
148
 
149
+ return $meta_html;
150
+ }
151
  }
lib/frontend-output/SWP_Script.php CHANGED
@@ -22,10 +22,10 @@ class SWP_Script {
22
  * @return none
23
  *
24
  */
25
- public function __construct() {
26
  $this->add_hooks();
27
  $this->fix_litespeed_compatibility();
28
- }
29
 
30
 
31
  /**
@@ -39,180 +39,180 @@ class SWP_Script {
39
  public function add_hooks() {
40
 
41
  // Queue up our footer hook function
42
- add_filter( 'swp_footer_scripts', array( $this, 'nonce' ) );
43
- add_filter( 'swp_footer_scripts', array( $this, 'frame_buster' ) );
44
- add_filter( 'swp_footer_scripts', array( $this, 'float_before_content' ) );
45
 
46
- // Queue up our footer hook function
47
- add_filter( 'swp_footer_scripts', array( $this, 'click_tracking' ) );
48
 
49
  // Queue up the Social Warfare scripts and styles
50
- add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
51
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
52
 
53
- // Queue up our hook function
54
  add_action( 'wp_footer' , array( $this, 'footer_functions' ) , 99 );
55
 
56
  }
57
 
58
 
59
- /**
60
- * Helper function for getting the script/style `.min` suffix for minified files.
61
- *
62
- * @since 1.0.0
63
- * @access public
64
- * @return string
65
- *
66
- */
67
- public static function get_suffix() {
68
- $debug = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
69
-
70
- if ( SWP_Utility::debug( 'script' ) ) {
71
- $debug = true;
72
- }
73
-
74
- $enabled = (bool) apply_filters( 'swp_enable_suffix', ! $debug );
75
-
76
- return $enabled ? '.min' : '';
77
- }
78
-
79
-
80
- /**
81
- * Load front end scripts and styles.
82
- *
83
- * @since 1.0.0
84
- * @access public
85
- * @param void
86
- * @return void
87
- */
88
- public function enqueue_scripts() {
89
- $suffix = SWP_Script::get_suffix();
90
-
91
- wp_enqueue_style(
92
- 'social_warfare',
93
- SWP_PLUGIN_URL . "/assets/css/style{$suffix}.css",
94
- array(),
95
- SWP_VERSION
96
- );
97
-
98
- wp_enqueue_script(
99
- 'social_warfare_script',
100
- SWP_PLUGIN_URL . "/assets/js/script{$suffix}.js",
101
- array( 'jquery' ),
102
- SWP_VERSION,
103
- true
104
- );
105
 
106
  $this->localize_variables();
107
 
108
- }
109
-
110
-
111
- /**
112
- * Load admin scripts and styles.
113
- *
114
- * @since 1.0.0
115
- * @access public
116
- * @param string $screen The ID of the current admin screen.
117
- * @return void
118
- *
119
- */
120
- public function enqueue_admin_scripts( $screen ) {
121
- $this->enqueue_scripts();
122
-
123
- $suffix = SWP_Script::get_suffix();
124
-
125
- wp_enqueue_style(
126
- 'social_warfare_admin',
127
- SWP_PLUGIN_URL . "/assets/css/admin{$suffix}.css",
128
- array(),
129
- SWP_VERSION
130
- );
131
-
132
- wp_enqueue_script(
133
- 'social_warfare_admin_script',
134
- SWP_PLUGIN_URL . "/assets/js/admin{$suffix}.js",
135
- array( 'jquery' ),
136
- SWP_VERSION
137
- );
138
-
139
- wp_localize_script( 'social_warfare_admin_script', 'swp_localize_admin',
140
- array(
141
  // 'swp_characters_remaining' => __( 'Characters Remaining', 'social-warfare' ),
142
- 'swp_characters_remaining' => '',
143
- )
144
- );
145
 
146
  $this->localize_variables();
147
- }
148
-
149
-
150
- /**
151
- * Queue up our javscript for options and whatnot
152
- *
153
- * @since 1.4.0
154
- * @param Void
155
- * @return Void. Echo results directly to the screen.
156
- *
157
- */
158
- public function footer_functions() {
159
- // Fetch a few variables.
160
- $info['postID'] = get_the_ID();
161
- $info['footer_output'] = '';
162
-
163
- // Pass the array through our custom filters.
164
- $info = apply_filters( 'swp_footer_scripts' , $info );
165
-
166
- // If we have output, output it.
167
- if ( $info['footer_output'] ) {
168
- echo '<script type="text/javascript">';
169
- echo $info['footer_output'];
170
- echo '</script>';
171
- }
172
- }
173
-
174
-
175
- /**
176
- * Enable click tracking in Google Analytics.
177
- *
178
- * @since 1.4
179
- * @access public
180
- * @param array $info An array of footer script information.
181
- * @return array $info A modified array of footer script information.
182
- *
183
- */
184
- public function click_tracking( $info ) {
185
 
186
  // Output the JS variable for click tracking if it is turned on.
187
- if ( true === SWP_Utility::get_option( 'click_tracking' ) ) {
188
- $info['footer_output'] .= 'var swpClickTracking = true;';
189
- } else {
190
- $info['footer_output'] .= 'var swpClickTracking = false;';
191
- }
192
 
193
- return $info;
194
- }
195
 
196
 
197
  /**
198
- * The Frame Buster Option
199
- *
200
- * @since 1.4.0
201
- * @access public
202
- * @param array $info An array of footer script information.
203
- * @return array $info A modified array of footer script information.
204
- *
205
- */
206
- public function frame_buster( $info ) {
207
- global $swp_user_options;
208
- $options = $swp_user_options;
209
-
210
- if ( true === $options['frame_buster'] ) :
211
- $info['footer_output'] .= PHP_EOL . 'function parentIsEvil() { var html = null; try { var doc = top.location.pathname; } catch(err){ }; if(typeof doc === "undefined") { return true } else { return false }; }; if (parentIsEvil()) { top.location = self.location.href; };var url = "' . get_permalink() . '";if(url.indexOf("stfi.re") != -1) { var canonical = ""; var links = document.getElementsByTagName("link"); for (var i = 0; i < links.length; i ++) { if (links[i].getAttribute("rel") === "canonical") { canonical = links[i].getAttribute("href")}}; canonical = canonical.replace("?sfr=1", "");top.location = canonical; console.log(canonical);};';
212
- endif;
213
-
214
- return $info;
215
- }
216
 
217
 
218
  /**
@@ -225,77 +225,85 @@ class SWP_Script {
225
  */
226
  public function fix_litespeed_compatibility() {
227
  if ( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) :
228
- LiteSpeed_Cache_API::hook_tpl_esi( 'swp_esi', array( $this, 'hook_esi' ) );
229
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
230
  }
231
 
232
 
233
- /**
234
- * Create a nonce for added security
235
- *
236
- * @since 2.1.4
237
- * @access public
238
- * @param array $info An array of footer script information.
239
- * @return array $info A modified array of footer script information.
240
- *
241
- */
242
- public function nonce( $info ) {
243
-
244
- // To make sure LSCWP ESI is on
245
- if( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) {
246
- // To make sure is using the compatible API version
247
- if ( method_exists( 'LiteSpeed_Cache_API', 'v' ) && LiteSpeed_Cache_API::v( '1.3' ) ) {
248
- // Let's turn this block to ESI and return
249
- $info['footer_output'] .= LiteSpeed_Cache_API::esi_url( 'swp_esi', 'Social Warfare', array(), 'default', true );
250
- return $info;
251
- }
252
- }
253
-
254
- // Create a nonce
255
- $info['footer_output'] .= ' var swp_nonce = "'.wp_create_nonce().'";';
256
- return $info;
257
- }
258
-
259
-
260
- /**
261
- * Echoes selected admin settings from the database to javascript.
262
- *
263
- * @since 3.1.0 | 27 JUN 2018 | Created the method.
264
- * @access public
265
- * @return void
266
- *
267
- */
268
- public function float_before_content( $vars ) {
269
- global $swp_user_options;
270
- $options = $swp_user_options;
271
-
272
-
273
- $float_before_content = $options['float_before_content'];
274
-
275
- $vars['footer_output'] = "var swpFloatBeforeContent = " . json_encode($float_before_content) . ";";
276
-
277
- return $vars;
278
- }
279
-
280
- /**
281
- * Creates the `socialWarfare` object and initializes it with server-side data.
282
- *
283
- * @since 3.4.0 | 20 NOV 2018 | Created
284
- * @return void
285
- *
286
- */
287
  function localize_variables() {
288
- $addons = array();
 
 
 
289
 
290
- foreach( apply_filters( 'swp_registrations', array() ) as $addon ) {
291
- $addons[] = $addon->key;
292
  }
293
 
294
  $data = array(
295
- 'addons' => $addons,
 
296
  'floatBeforeContent' => SWP_Utility::get_option( 'float_before_content' )
297
  );
298
 
 
 
 
 
299
  wp_localize_script( 'social_warfare_script', 'socialWarfare', $data );
300
  }
301
 
22
  * @return none
23
  *
24
  */
25
+ public function __construct() {
26
  $this->add_hooks();
27
  $this->fix_litespeed_compatibility();
28
+ }
29
 
30
 
31
  /**
39
  public function add_hooks() {
40
 
41
  // Queue up our footer hook function
42
+ add_filter( 'swp_footer_scripts', array( $this, 'nonce' ) );
43
+ add_filter( 'swp_footer_scripts', array( $this, 'frame_buster' ) );
44
+ add_filter( 'swp_footer_scripts', array( $this, 'float_before_content' ) );
45
 
46
+ // Queue up our footer hook function
47
+ add_filter( 'swp_footer_scripts', array( $this, 'click_tracking' ) );
48
 
49
  // Queue up the Social Warfare scripts and styles
50
+ add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
51
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
52
 
53
+ // Queue up our hook function
54
  add_action( 'wp_footer' , array( $this, 'footer_functions' ) , 99 );
55
 
56
  }
57
 
58
 
59
+ /**
60
+ * Helper function for getting the script/style `.min` suffix for minified files.
61
+ *
62
+ * @since 1.0.0
63
+ * @access public
64
+ * @return string
65
+ *
66
+ */
67
+ public static function get_suffix() {
68
+ $debug = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
69
+
70
+ if ( SWP_Utility::debug( 'script' ) ) {
71
+ $debug = true;
72
+ }
73
+
74
+ $enabled = (bool) apply_filters( 'swp_enable_suffix', ! $debug );
75
+
76
+ return $enabled ? '.min' : '';
77
+ }
78
+
79
+
80
+ /**
81
+ * Load front end scripts and styles.
82
+ *
83
+ * @since 1.0.0
84
+ * @access public
85
+ * @param void
86
+ * @return void
87
+ */
88
+ public function enqueue_scripts() {
89
+ $suffix = SWP_Script::get_suffix();
90
+
91
+ wp_enqueue_style(
92
+ 'social_warfare',
93
+ SWP_PLUGIN_URL . "/assets/css/style{$suffix}.css",
94
+ array(),
95
+ SWP_VERSION
96
+ );
97
+
98
+ wp_enqueue_script(
99
+ 'social_warfare_script',
100
+ SWP_PLUGIN_URL . "/assets/js/script{$suffix}.js",
101
+ array( 'jquery' ),
102
+ SWP_VERSION,
103
+ true
104
+ );
105
 
106
  $this->localize_variables();
107
 
108
+ }
109
+
110
+
111
+ /**
112
+ * Load admin scripts and styles.
113
+ *
114
+ * @since 1.0.0
115
+ * @access public
116
+ * @param string $screen The ID of the current admin screen.
117
+ * @return void
118
+ *
119
+ */
120
+ public function enqueue_admin_scripts( $screen ) {
121
+ $this->enqueue_scripts();
122
+
123
+ $suffix = SWP_Script::get_suffix();
124
+
125
+ wp_enqueue_style(
126
+ 'social_warfare_admin',
127
+ SWP_PLUGIN_URL . "/assets/css/admin{$suffix}.css",
128
+ array(),
129
+ SWP_VERSION
130
+ );
131
+
132
+ wp_enqueue_script(
133
+ 'social_warfare_admin_script',
134
+ SWP_PLUGIN_URL . "/assets/js/admin{$suffix}.js",
135
+ array( 'jquery' ),
136
+ SWP_VERSION
137
+ );
138
+
139
+ wp_localize_script( 'social_warfare_admin_script', 'swp_localize_admin',
140
+ array(
141
  // 'swp_characters_remaining' => __( 'Characters Remaining', 'social-warfare' ),
142
+ 'swp_characters_remaining' => '',
143
+ )
144
+ );
145
 
146
  $this->localize_variables();
147
+ }
148
+
149
+
150
+ /**
151
+ * Queue up our javscript for options and whatnot
152
+ *
153
+ * @since 1.4.0
154
+ * @param Void
155
+ * @return Void. Echo results directly to the screen.
156
+ *
157
+ */
158
+ public function footer_functions() {
159
+ // Fetch a few variables.
160
+ $info['postID'] = get_the_ID();
161
+ $info['footer_output'] = '';
162
+
163
+ // Pass the array through our custom filters.
164
+ $info = apply_filters( 'swp_footer_scripts' , $info );
165
+
166
+ // If we have output, output it.
167
+ if ( $info['footer_output'] ) {
168
+ echo '<script type="text/javascript">';
169
+ echo $info['footer_output'];
170
+ echo '</script>';
171
+ }
172
+ }
173
+
174
+
175
+ /**
176
+ * Enable click tracking in Google Analytics.
177
+ *
178
+ * @since 1.4
179
+ * @access public
180
+ * @param array $info An array of footer script information.
181
+ * @return array $info A modified array of footer script information.
182
+ *
183
+ */
184
+ public function click_tracking( $info ) {
185
 
186
  // Output the JS variable for click tracking if it is turned on.
187
+ if ( true === SWP_Utility::get_option( 'click_tracking' ) ) {
188
+ $info['footer_output'] .= 'var swpClickTracking = true;';
189
+ } else {
190
+ $info['footer_output'] .= 'var swpClickTracking = false;';
191
+ }
192
 
193
+ return $info;
194
+ }
195
 
196
 
197
  /**
198
+ * The Frame Buster Option
199
+ *
200
+ * @since 1.4.0
201
+ * @access public
202
+ * @param array $info An array of footer script information.
203
+ * @return array $info A modified array of footer script information.
204
+ *
205
+ */
206
+ public function frame_buster( $info ) {
207
+ global $swp_user_options;
208
+ $options = $swp_user_options;
209
+
210
+ if ( true === $options['frame_buster'] ) :
211
+ $info['footer_output'] .= PHP_EOL . 'function parentIsEvil() { var html = null; try { var doc = top.location.pathname; } catch(err){ }; if(typeof doc === "undefined") { return true } else { return false }; }; if (parentIsEvil()) { top.location = self.location.href; };var url = "' . get_permalink() . '";if(url.indexOf("stfi.re") != -1) { var canonical = ""; var links = document.getElementsByTagName("link"); for (var i = 0; i < links.length; i ++) { if (links[i].getAttribute("rel") === "canonical") { canonical = links[i].getAttribute("href")}}; canonical = canonical.replace("?sfr=1", "");top.location = canonical; console.log(canonical);};';
212
+ endif;
213
+
214
+ return $info;
215
+ }
216
 
217
 
218
  /**
225
  */
226
  public function fix_litespeed_compatibility() {
227
  if ( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) :
228
+ LiteSpeed_Cache_API::hook_tpl_esi( 'swp_esi', array( $this, 'hook_esi' ) );
229
+ endif;
230
+ }
231
+
232
+
233
+ /**
234
+ * Create a nonce for added security
235
+ *
236
+ * @since 2.1.4
237
+ * @access public
238
+ * @param array $info An array of footer script information.
239
+ * @return array $info A modified array of footer script information.
240
+ *
241
+ */
242
+ public function nonce( $info ) {
243
+
244
+ // To make sure LSCWP ESI is on
245
+ if( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) {
246
+ // To make sure is using the compatible API version
247
+ if ( method_exists( 'LiteSpeed_Cache_API', 'v' ) && LiteSpeed_Cache_API::v( '1.3' ) ) {
248
+ // Let's turn this block to ESI and return
249
+ $info['footer_output'] .= LiteSpeed_Cache_API::esi_url( 'swp_esi', 'Social Warfare', array(), 'default', true );
250
+ return $info;
251
+ }
252
+ }
253
+
254
+ // Create a nonce
255
+ $info['footer_output'] .= ' var swp_nonce = "'.wp_create_nonce().'";';
256
+ return $info;
257
  }
258
 
259
 
260
+ /**
261
+ * Echoes selected admin settings from the database to javascript.
262
+ *
263
+ * @since 3.1.0 | 27 JUN 2018 | Created the method.
264
+ * @access public
265
+ * @return void
266
+ *
267
+ */
268
+ public function float_before_content( $vars ) {
269
+ global $swp_user_options;
270
+ $options = $swp_user_options;
271
+
272
+
273
+ $float_before_content = $options['float_before_content'];
274
+
275
+ $vars['footer_output'] .= "var swpFloatBeforeContent = " . json_encode($float_before_content) . ";";
276
+
277
+ return $vars;
278
+ }
279
+
280
+ /**
281
+ * Creates the `socialWarfare` object and initializes it with server-side data.
282
+ *
283
+ * @since 3.4.0 | 20 NOV 2018 | Created
284
+ * @return void
285
+ *
286
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  function localize_variables() {
288
+ global $post;
289
+ $id = isset( $post ) ? $post->ID : 0; // No ID on SW settings page.
290
+ $addons = apply_filters( 'swp_registrations', array() );
291
+ $addon_vars = apply_filters( 'swp_addon_javascript_variables', array() );
292
 
293
+ foreach( $addons as $addon ) {
294
+ $addons[] = $addon->key;
295
  }
296
 
297
  $data = array(
298
+ 'addons' => $addons,
299
+ 'post_id' => $id,
300
  'floatBeforeContent' => SWP_Utility::get_option( 'float_before_content' )
301
  );
302
 
303
+ foreach( $addon_vars as $addon_key => $data_array ) {
304
+ $data[$addon_key] = $data_array;
305
+ }
306
+
307
  wp_localize_script( 'social_warfare_script', 'socialWarfare', $data );
308
  }
309
 
lib/frontend-output/SWP_Shortcode.php CHANGED
@@ -27,10 +27,10 @@ class SWP_Shortcode {
27
  * @return none
28
  *
29
  */
30
- public function __construct() {
31
  add_shortcode( 'total_shares', array ( $this, 'post_total_shares' ) );
32
  add_shortcode( 'sitewide_shares', array ( $this, 'sitewide_total_shares' ) );
33
- add_shortcode( 'click_to_tweet', array( $this, 'click_to_tweet' ) );
34
 
35
 
36
  /**
@@ -39,7 +39,7 @@ class SWP_Shortcode {
39
  * ones in the past. The ones above adhere to our code style guide.
40
  *
41
  */
42
- add_shortcode( 'clickToTweet', array($this, 'click_to_tweet' ) );
43
  }
44
 
45
 
@@ -58,9 +58,9 @@ class SWP_Shortcode {
58
  *
59
  */
60
  public function post_total_shares( $settings ) {
61
- $total_shares = get_post_meta( get_the_ID() , '_total_shares', true );
62
- $total_shares = SWP_Utility::kilomega( $total_shares );
63
- return $total_shares;
64
  }
65
 
66
 
@@ -79,90 +79,159 @@ class SWP_Shortcode {
79
  *
80
  */
81
  public function sitewide_total_shares( $settings ) {
82
- global $wpdb;
83
- $sum = $wpdb->get_results( "SELECT SUM(meta_value) AS total FROM $wpdb->postmeta WHERE meta_key = '_total_shares'" );
84
- return SWP_Utility::kilomega( $sum[0]->total );
85
  }
86
 
87
- /**
88
- * The function to build the click to tweets
89
- *
90
- * @param array $atts The shortcode key/value attributes.
91
- * @return string The html of a click to tweet
92
- */
93
- function click_to_tweet( $atts ) {
94
- global $post;
95
-
96
- if ( strpos( $atts['tweet'], 'http' ) > -1 ) :
97
- /**
98
- * They included a link in the tweet text. Do not pass a &url paramter.
99
- *
100
- * Twitter will diregard value if it is: empty, a whitespace, or %20.
101
- * Instead, give it an invalid URL! It achieves the targeted effect.
102
- *
103
- */
104
- $url = '&url=x';
105
- else :
106
- $url = '&url=' . SWP_URL_Management::process_url( get_permalink() , 'twitter' , get_the_ID() );
107
- endif;
108
-
109
- $user_twitter_handle = get_post_meta( get_the_ID() , 'swp_twitter_username' , true );
110
-
111
- if ( ! $user_twitter_handle ) :
112
- $user_twitter_handle = SWP_Utility::get_option( 'twitter_id' );
113
- endif;
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  $theme = SWP_Utility::get_option( 'ctt_theme' );
116
- if ( !empty( $atts['theme'] ) && $atts['theme'] != 'default' ) {
117
- $theme = $atts['theme'];
118
- }
119
-
120
- $tweet = $this->get_tweet( $atts );
121
-
122
- $via = ($user_twitter_handle ? '&via=' . str_replace( '@','',$user_twitter_handle ) : '');
123
-
124
- $html = '<div class="sw-tweet-clear"></div>';
125
- $html .= '<a class="swp_CTT ' . $theme;
126
- $html .= '" href="https://twitter.com/share?text=' . $tweet . $via . $url;
127
- $html .= '" data-link="https://twitter.com/share?text=' . $tweet . $via . $url;
128
- $html .= '" rel="nofollow noreferrer noopener" target="_blank">';
129
- $html .= '<span class="sw-click-to-tweet">';
130
- $html .= '<span class="sw-ctt-text">';
131
- $html .= $atts['quote'];
132
- $html .= '</span>';
133
- $html .= '<span class="sw-ctt-btn">';
134
- $html .= __( 'Click To Tweet','social-warfare' );
135
- $html .= '<i class="sw swp_twitter_icon"></i>';
136
- $html .= '</span>';
137
- $html .= '</span>';
138
- $html .= '</a>';
139
-
140
- return $html;
141
- }
142
-
143
- /**
144
- *
145
- * Retrieves tweet from database and converts to UTF-8 for Twitter.
146
- *
147
- * @since 3.3.0 | 16 AUG 2018 | Created. Ported code from $this->generate_share_link.
148
- * @param array $atts Shortcode attributes.
149
- *
150
- * @return string $tweet The encoded tweet text.
151
- *
152
- */
153
- protected function get_tweet( $atts ) {
154
- $max_tweet_length = 240;
155
-
156
- // Check for a custom tweet from the shortcode attributes. .
157
- $tweet = $atts['tweet'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
  if ( function_exists( 'mb_convert_encoding' ) ) :
160
- $tweet = mb_convert_encoding( $tweet, 'UTF-8', get_bloginfo( "charset" ) );
161
  endif;
162
 
163
- $html_safe_tweet = htmlentities( $tweet, ENT_COMPAT, 'UTF-8' );
164
  $tweet = urlencode( $tweet );
165
 
166
- return $tweet;
167
- }
168
  }
27
  * @return none
28
  *
29
  */
30
+ public function __construct() {
31
  add_shortcode( 'total_shares', array ( $this, 'post_total_shares' ) );
32
  add_shortcode( 'sitewide_shares', array ( $this, 'sitewide_total_shares' ) );
33
+ add_shortcode( 'click_to_tweet', array( $this, 'click_to_tweet' ) );
34
 
35
 
36
  /**
39
  * ones in the past. The ones above adhere to our code style guide.
40
  *
41
  */
42
+ add_shortcode( 'clickToTweet', array( $this, 'click_to_tweet' ) );
43
  }
44
 
45
 
58
  *
59
  */
60
  public function post_total_shares( $settings ) {
61
+ $unformatted_total_shares = get_post_meta( get_the_ID(), '_total_shares', true );
62
+ $formatted_total_shares = SWP_Utility::kilomega( $unformatted_total_shares );
63
+ return $formatted_total_shares;
64
  }
65
 
66
 
79
  *
80
  */
81
  public function sitewide_total_shares( $settings ) {
82
+ global $wpdb;
83
+ $sum = $wpdb->get_results( "SELECT SUM(meta_value) AS total FROM $wpdb->postmeta WHERE meta_key = '_total_shares'" );
84
+ return SWP_Utility::kilomega( $sum[0]->total );
85
  }
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
+ /**
89
+ * The function to build the click to tweets
90
+ *
91
+ * @param array $atts The shortcode key/value attributes.
92
+ * @return string The html of a click to tweet
93
+ *
94
+ */
95
+ function click_to_tweet( $atts ) {
96
+ global $post;
97
+
98
+ // This is the Add Post editor for a new post, so no $post.
99
+ if ( !is_object( $post ) ) {
100
+ return $atts;
101
+ }
102
+
103
+
104
+ /**
105
+ * If they included a link in the tweet text, we need to not pass a URL
106
+ * parameter over to Twitter.
107
+ *
108
+ * Twitter will diregard value if it is: empty, a whitespace, or %20.
109
+ * Instead, give it an invalid URL! It achieves the targeted effect.
110
+ *
111
+ * This means that Twitter will not add a URL to the end of the tweet
112
+ * which is the desired effect since the author added a link within the
113
+ * tweet itself.
114
+ *
115
+ */
116
+ $url = '&url=' . SWP_URL_Management::process_url( get_permalink() , 'twitter' , get_the_ID() );
117
+ if ( strpos( $atts['tweet'], 'http' ) > -1 ) {
118
+ $url = '&url=x';
119
+ }
120
+
121
+
122
+ /**
123
+ * Fetch a Twitter Username for the Via parameter.
124
+ *
125
+ * We'll fetch the Twitter username at the global level, the author
126
+ * level and the post level and then use the lowest level available.
127
+ *
128
+ */
129
+ $twitter_handle = SWP_Utility::get_option( 'twitter_id' );
130
+ $author_twitter_handle = get_the_author_meta( 'swp_twitter', $post->post_author );
131
+
132
+
133
+ /**
134
+ * If the author of thist post has an assigned Twitter username, we will
135
+ * override the global Twitter username with the author level username.
136
+ *
137
+ */
138
+ if ( false !== $author_twitter_handle && !empty( $author_twitter_handle ) ) {
139
+ $twitter_handle = $author_twitter_handle;
140
+ }
141
+
142
+
143
+ /**
144
+ * If after all three checks, we were able to find a Twitter username,
145
+ * then we'll create the via parameter of the link. If not, it will be
146
+ * an empty string.
147
+ *
148
+ */
149
+ $via = '';
150
+ if( false !== $twitter_handle ) {
151
+ $via = '&via=' . $twitter_handle;
152
+ }
153
+
154
+
155
+ /**
156
+ * If a theme was passed into the shortcode via a parameter, we'll use
157
+ * that theme. If a theme was not passed in, or if the theme is set to
158
+ * 'default', or if an empty string was passed in, then we'll use the
159
+ * global theme which is set on the plugin's options page.
160
+ *
161
+ */
162
  $theme = SWP_Utility::get_option( 'ctt_theme' );
163
+ if ( !empty( $atts['theme'] ) && $atts['theme'] != 'default' ) {
164
+ $theme = $atts['theme'];
165
+ }
166
+
167
+
168
+ /**
169
+ * If the Theme is set to false, it means that the user is on the free
170
+ * version of the plugin and as such, the only available theme is the
171
+ * first/default theme.
172
+ *
173
+ */
174
+ if( false === $theme ) {
175
+ $theme = 'style1';
176
+ }
177
+
178
+
179
+ /**
180
+ * This will generate the user's custom Tweet that will be used to
181
+ * prepopulate the share dialogue box when an end user clicks on the
182
+ * actual Click to Tweet.
183
+ *
184
+ */
185
+ $tweet = $this->get_tweet( $atts );
186
+
187
+
188
+ /**
189
+ * Now that all the information has been processed, we generate the
190
+ * actual string of html that will be returned and output to the screen.
191
+ *
192
+ */
193
+ $html = '<div class="sw-tweet-clear"></div>';
194
+ $html .= '<a class="swp_CTT ' . $theme;
195
+ $html .= '" href="https://twitter.com/share?text=' . $tweet . $via . $url;
196
+ $html .= '" data-link="https://twitter.com/share?text=' . $tweet . $via . $url;
197
+ $html .= '" rel="nofollow noreferrer noopener" target="_blank">';
198
+ $html .= '<span class="sw-click-to-tweet">';
199
+ $html .= '<span class="sw-ctt-text">';
200
+ $html .= $atts['quote'];
201
+ $html .= '</span>';
202
+ $html .= '<span class="sw-ctt-btn">';
203
+ $html .= __( 'Click To Tweet','social-warfare' );
204
+ $html .= '<i class="sw swp_twitter_icon"></i>';
205
+ $html .= '</span>';
206
+ $html .= '</span>';
207
+ $html .= '</a>';
208
+
209
+ return $html;
210
+ }
211
+
212
+ /**
213
+ *
214
+ * Retrieves tweet from database and converts to UTF-8 for Twitter.
215
+ *
216
+ * @since 3.3.0 | 16 AUG 2018 | Created. Ported code from $this->generate_share_link.
217
+ * @param array $atts Shortcode attributes.
218
+ *
219
+ * @return string $tweet The encoded tweet text.
220
+ *
221
+ */
222
+ protected function get_tweet( $atts ) {
223
+ $max_tweet_length = 240;
224
+
225
+ // Check for a custom tweet from the shortcode attributes. .
226
+ $tweet = $atts['tweet'];
227
 
228
  if ( function_exists( 'mb_convert_encoding' ) ) :
229
+ $tweet = mb_convert_encoding( $tweet, 'UTF-8', get_bloginfo( "charset" ) );
230
  endif;
231
 
232
+ $html_safe_tweet = htmlentities( $tweet, ENT_COMPAT, 'UTF-8' );
233
  $tweet = urlencode( $tweet );
234
 
235
+ return $tweet;
236
+ }
237
  }
lib/options/SWP_Option_Button.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * A button with a CTA. The immediate use case is for network authorizations.
5
+ *
6
+ */
7
+ class SWP_Option_Button extends SWP_Option {
8
+
9
+
10
+ /**
11
+ * Default
12
+ *
13
+ * The default value for this input type="checkbox".
14
+ *
15
+ * @var bool $default
16
+ *
17
+ */
18
+ public $default = true;
19
+
20
+
21
+ /**
22
+ * The required constructor for PHP classes.
23
+ *
24
+ * @param string $name The display name for the toggle.
25
+ * @param string $key The database key for the user setting.
26
+ */
27
+ public function __construct( $name, $key, $class, $link, $new_tab = false ) {
28
+ parent::__construct( $name, $key );
29
+ $this->new_tab = $new_tab;
30
+ $this->link = isset( $link ) ? $link : '';
31
+ $this->class = isset( $class ) ? $class : '';
32
+
33
+ }
34
+
35
+
36
+ public function register_available_values( $values ) {
37
+ $values[$this->key] = array(
38
+ 'type' => 'boolean',
39
+ 'values' => array( true, false )
40
+ );
41
+
42
+ return $values;
43
+ }
44
+
45
+
46
+ /**
47
+ * Creates ready-to-print HTML for the checkbox/toggle module.
48
+ *
49
+ * @return SWP_Option_Toggle $this The calling object, for method chaining.
50
+ */
51
+ public function render_HTML() {
52
+ $target = $this->new_tab ? 'target="_blank"' : '';
53
+
54
+ $html = '<div class="sw-grid ' . $this->parent_size . ' sw-fit sw-option-container ' . $this->key . '_wrapper" ';
55
+ $html .= $this->render_dependency();
56
+ $html .= $this->render_premium();
57
+ $html .= '>';
58
+
59
+ $html .= '<div class="sw-grid ' . $this->size . '">';
60
+ $html .= '<p class="sw-input-label">' . ucfirst( $this->key ) . '</p>';
61
+ $html .= '</div>';
62
+
63
+ $html .= '<div class="sw-grid ' . $this->size . '">';
64
+ if ( !empty( $this->link ) ) {
65
+ // Apply a wrapper anchor tag.
66
+ $html .= '<a href="' . $this->link .'" class="' . $this->class . '" ' . $target .'>' ;
67
+ $html .= '<div id="' . strtolower($this->key) . '" field="#' . $this->key . '">' . $this->name . '</div>';
68
+ $html .= '</a>';
69
+ }
70
+ else {
71
+ // Just show a button. Use the id to target it with JS.
72
+ $html .= '<div id="' . strtolower($this->key) . '" class="' . $this->class . '" field="#' . $this->key . '">' . $this->name . '</div>';
73
+ }
74
+ $html .= '</div>';
75
+
76
+ $html .= '</div>';
77
+
78
+ $this->html = $html;
79
+
80
+ return $html;
81
+ }
82
+
83
+
84
+ /**
85
+ * Override parent method to make this boolean-specific.
86
+ *
87
+ * @param boolean $value The boolean value to set as default.
88
+ * @return SWP_Option_Toggle $this The calling object, for method chaining.
89
+ */
90
+ public function set_default( $value ) {
91
+ if ( !is_bool( $value ) || !isset( $value ) ) {
92
+ $this->_throw( 'Please provide a default value as a boolean.' );
93
+ }
94
+
95
+ return parent::set_default( $value );
96
+ }
97
+ }
lib/options/SWP_Option_Icons.php CHANGED
@@ -1,5 +1,4 @@
1
  <?PHP
2
-
3
  /**
4
  * SWP_Option_Icons: The class used to display available netowrks on the options
5
  * page.
@@ -39,51 +38,51 @@ class SWP_Option_Icons extends SWP_Option {
39
  * @return void
40
  *
41
  */
42
- public function __construct( $name, $key ) {
43
- global $swp_user_options;
44
 
45
- parent::__construct( $name, $key );
46
- add_filter( 'swp_options_page_defaults', array( $this , 'register_default' ) );
47
- add_filter( 'swp_options_page_values', array( $this, 'register_available_values' ) );
48
 
49
- $this->user_options = $swp_user_options;
50
- }
51
 
52
 
53
- public function register_default( $defaults = array() ) {
54
- if ( !array_key_exists( 'order_of_icons', $defaults ) ) :
55
- $defaults['order_of_icons'] = array(
56
- 'google_plus' => 'google_plus',
57
- 'twitter' => 'twitter',
58
- 'facebook' => 'facebook',
59
- 'linkedin' => 'linkedin',
60
- 'pinterest' => 'pinterest'
61
- );
62
- endif;
63
 
64
- return $defaults;
65
- }
66
 
67
 
68
- public function register_available_values( $values ) {
69
- global $swp_social_networks;
70
- $networks = array();
71
 
72
- /* order_of_icons is an array of $network_key => $network_key
73
- * So we need to create an array in that form.
74
- * Yes, it is redundant, but that's how it is.
75
- */
76
- foreach( $swp_social_networks as $key => $object ) {
77
- $networks[$key] = $key;
78
- }
79
 
80
- $values['order_of_icons'] = array(
81
- 'type' => 'none',
82
- 'values' => $networks
83
- );
84
 
85
- return $values;
86
- }
87
 
88
 
89
  /**
@@ -94,10 +93,10 @@ class SWP_Option_Icons extends SWP_Option {
94
  * @return object $this Allows for method chaining.
95
  *
96
  */
97
- public function do_active_icons() {
98
- $this->is_active_icons = true;
99
- return $this;
100
- }
101
 
102
 
103
  /**
@@ -108,125 +107,96 @@ class SWP_Option_Icons extends SWP_Option {
108
  * @return object $this Allows for method chaining.
109
  *
110
  */
111
- public function do_inactive_icons() {
112
- $this->is_active_icons = false;
113
- return $this;
114
- }
115
-
116
-
117
- /**
118
- * The Active buttons UI in the Display tab.
119
- *
120
- * @since 3.0.0 | 02 MAR 2018 | Created
121
- * @param array $icons The array of currently selected icons.
122
- * @return object $this The calling instance, for method chaining.
123
- *
124
- */
125
- public function render_active_icons() {
126
-
127
- $all_networks = $this->get_all_networks();
128
- $user_icons = SWP_Utility::get_option( 'order_of_icons' );
129
 
130
- $html = '<div class="sw-grid sw-col-300">';
131
- $html .= '<h3 class="sw-buttons-toggle">' . __( 'Active' , 'social-warfare' ) . '</h3>';
132
- $html .= '</div>';
133
 
134
- $html .= '<div class="sw-grid sw-col-620 sw-fit">';
135
- $html .= '<div class="sw-active sw-buttons-sort">';
 
 
 
 
 
 
 
 
 
136
 
137
- if ( count($user_icons) > 0 ):
138
- foreach( $user_icons as $network_key) {
 
139
 
140
- //* On updates, this is being passed as an object for some reason.
141
- if ( is_object( $network_key ) ) :
142
 
143
- $network_key = $network_key->key;
 
 
 
 
144
 
145
- //* This should not ever be reached. But if it does, fail gracefully.
146
- elseif ( !is_string( $network_key) ) :
147
- return;
148
- endif;
149
 
150
- if ( array_key_exists( $network_key, $all_networks ) && isset( $all_networks[$network_key]) ) :
151
- $network = $all_networks[$network_key];
 
152
 
153
- $html .= $this->render_icon_HTML( $network );
154
- endif;
155
- }
156
- endif;
157
 
158
- $html .= '</div>';
159
- $html .= '</div>';
160
- $html .= '<div class="sw-clearfix"></div>';
161
 
162
- $this->html = $html;
163
 
164
- return $this;
165
- }
166
 
167
 
168
- /**
169
- * The Inactive buttons UI in the Display tab.
170
- *
171
- * @since 3.0.0 | 02 MAR 2018 | Created
172
- * @param array $icons The array of currently selected icons.
173
- * @return object $this The calling instance, for method chaining.
174
- *
175
- */
176
- public function render_inactive_icons() {
177
- $all_networks = $this->get_all_networks();
178
  $user_icons = SWP_Utility::get_option( 'order_of_icons' );
 
179
 
180
- $first_all = reset( $all_networks );
181
-
182
- if ( gettype( $first_all ) === 'object' ) :
183
-
184
- //* Get the keys first, then diff the array.
185
- $keys = array_keys( $all_networks );
186
-
187
- $first_user = reset( $user_icons );
188
-
189
- if ( gettype( $first_user ) === 'object' ) :
190
- $temp = array();
191
 
192
- foreach( $user_icons as $object ) {
193
- $temp[] = $object->key;
194
- }
195
 
196
- $user_icons = $temp;
 
 
197
 
198
- endif;
 
199
 
200
- $inactive_icons = array_diff( $keys, $user_icons );
 
201
 
202
- elseif ( array_key_exists( 0, $all_networks) ) :
203
 
204
- //* If $all_networks is numerically indexed, just diff the array.
205
- $inactive_icons = array_diff( $all_networks, $user_icons );
206
 
207
- endif;
 
208
 
209
- $html = '<div class="sw-grid sw-col-300">';
210
- $html .= '<h3 class="sw-buttons-toggle">' . __( 'Inactive' , 'social-warfare' ) . '</h3>';
211
- $html .= '</div>';
212
 
213
- $html .= '<div class="sw-grid sw-col-620 sw-fit">';
214
- $html .= '<div class="sw-inactive sw-buttons-sort">';
215
- if ( count( $inactive_icons) > 0 ) :
216
- foreach( $inactive_icons as $network_key) {
217
- $network = $all_networks[$network_key];
218
-
219
- $html .= $this->render_icon_HTML( $network );
220
- }
221
- endif;
222
-
223
- $html .= '</div>';
224
- $html .= '</div>';
225
-
226
- $this->html = $html;
227
-
228
- return $this;
229
- }
230
 
231
 
232
  /**
@@ -237,19 +207,18 @@ class SWP_Option_Icons extends SWP_Option {
237
  * @return string The string of html with the new icon added.
238
  *
239
  */
240
- protected function render_icon_HTML( $network ) {
241
- $html = '<i class="sw-s sw-' . $network->key . '-icon" ';
242
- $html .= ' data-network="' . $network->key . '"';
243
-
244
- if ( !empty($network->premium) ) :
245
- $html .= ' premium="'.$network->premium.'"';
246
- endif;
247
 
248
- $html .= '></i>';
 
 
249
 
 
250
 
251
- return $html;
252
- }
253
 
254
 
255
  /**
@@ -260,14 +229,14 @@ class SWP_Option_Icons extends SWP_Option {
260
  * @return void Rendered html will be stored in local html property.
261
  *
262
  */
263
- public function render_HTML() {
264
- if ($this->is_active_icons) {
265
- $this->render_active_icons();
266
- } else {
267
- $this->render_inactive_icons();
268
- }
269
-
270
- return $this->html;
271
- }
272
 
273
  }
1
  <?PHP
 
2
  /**
3
  * SWP_Option_Icons: The class used to display available netowrks on the options
4
  * page.
38
  * @return void
39
  *
40
  */
41
+ public function __construct( $name, $key ) {
42
+ global $swp_user_options;
43
 
44
+ parent::__construct( $name, $key );
45
+ add_filter( 'swp_options_page_defaults', array( $this , 'register_default' ) );
46
+ add_filter( 'swp_options_page_values', array( $this, 'register_available_values' ) );
47
 
48
+ $this->user_options = $swp_user_options;
49
+ }
50
 
51
 
52
+ public function register_default( $defaults = array() ) {
53
+ if ( !array_key_exists( 'order_of_icons', $defaults ) ) :
54
+ $defaults['order_of_icons'] = array(
55
+ 'google_plus' => 'google_plus',
56
+ 'twitter' => 'twitter',
57
+ 'facebook' => 'facebook',
58
+ 'linkedin' => 'linkedin',
59
+ 'pinterest' => 'pinterest'
60
+ );
61
+ endif;
62
 
63
+ return $defaults;
64
+ }
65
 
66
 
67
+ public function register_available_values( $values ) {
68
+ global $swp_social_networks;
69
+ $networks = array();
70
 
71
+ /* order_of_icons is an array of $network_key => $network_key
72
+ * So we need to create an array in that form.
73
+ * Yes, it is redundant, but that's how it is.
74
+ */
75
+ foreach( $swp_social_networks as $key => $object ) {
76
+ $networks[$key] = $key;
77
+ }
78
 
79
+ $values['order_of_icons'] = array(
80
+ 'type' => 'none',
81
+ 'values' => $networks
82
+ );
83
 
84
+ return $values;
85
+ }
86
 
87
 
88
  /**
93
  * @return object $this Allows for method chaining.
94
  *
95
  */
96
+ public function do_active_icons() {
97
+ $this->is_active_icons = true;
98
+ return $this;
99
+ }
100
 
101
 
102
  /**
107
  * @return object $this Allows for method chaining.
108
  *
109
  */
110
+ public function do_inactive_icons() {
111
+ $this->is_active_icons = false;
112
+ return $this;
113
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
 
 
 
115
 
116
+ /**
117
+ * The Active buttons UI in the Display tab.
118
+ *
119
+ * @since 3.0.0 | 02 MAR 2018 | Created
120
+ * @param array $icons The array of currently selected icons.
121
+ * @return object $this The calling instance, for method chaining.
122
+ *
123
+ */
124
+ public function render_active_icons() {
125
+ $all_networks = $this->get_all_networks();
126
+ $user_icons = SWP_Utility::get_option( 'order_of_icons' );
127
 
128
+ $html = '<div class="sw-grid sw-col-300">';
129
+ $html .= '<h3 class="sw-buttons-toggle">' . __( 'Active' , 'social-warfare' ) . '</h3>';
130
+ $html .= '</div>';
131
 
132
+ $html .= '<div class="sw-grid sw-col-620 sw-fit">';
133
+ $html .= '<div class="sw-active sw-buttons-sort">';
134
 
135
+ foreach( $user_icons as $network_key ) {
136
+ // The user no longer has the addon with this $network_key.
137
+ if ( !array_key_exists( $network_key, $all_networks ) ) {
138
+ continue;
139
+ }
140
 
141
+ $network = $all_networks[$network_key];
 
 
 
142
 
143
+ if ( false == $network->active ) {
144
+ continue;
145
+ }
146
 
147
+ $html .= $this->render_icon_HTML( $all_networks[$network_key] );
148
+ }
 
 
149
 
150
+ $html .= '</div>';
151
+ $html .= '</div>';
152
+ $html .= '<div class="sw-clearfix"></div>';
153
 
154
+ $this->html = $html;
155
 
156
+ return $this;
157
+ }
158
 
159
 
160
+ /**
161
+ * The Inactive buttons UI in the Display tab.
162
+ *
163
+ * @since 3.0.0 | 02 MAR 2018 | Created
164
+ * @param array $icons The array of currently selected icons.
165
+ * @return object $this The calling instance, for method chaining.
166
+ *
167
+ */
168
+ public function render_inactive_icons() {
169
+ $all_networks = $this->get_all_networks();
170
  $user_icons = SWP_Utility::get_option( 'order_of_icons' );
171
+ $network_keys = array();
172
 
173
+ foreach( $all_networks as $object ) {
174
+ $network_keys[] = $object->key;
175
+ }
 
 
 
 
 
 
 
 
176
 
177
+ $inactive_icons = array_diff( $network_keys, $user_icons );
 
 
178
 
179
+ $html = '<div class="sw-grid sw-col-300">';
180
+ $html .= '<h3 class="sw-buttons-toggle">' . __( 'Inactive' , 'social-warfare' ) . '</h3>';
181
+ $html .= '</div>';
182
 
183
+ $html .= '<div class="sw-grid sw-col-620 sw-fit">';
184
+ $html .= '<div class="sw-inactive sw-buttons-sort">';
185
 
186
+ foreach( $inactive_icons as $network_key) {
187
+ $network = $all_networks[$network_key];
188
 
 
189
 
190
+ $html .= $this->render_icon_HTML( $network );
191
+ }
192
 
193
+ $html .= '</div>';
194
+ $html .= '</div>';
195
 
196
+ $this->html = $html;
 
 
197
 
198
+ return $this;
199
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
 
201
 
202
  /**
207
  * @return string The string of html with the new icon added.
208
  *
209
  */
210
+ protected function render_icon_HTML( $network ) {
211
+ $html = '<i class="sw-s sw-' . $network->key . '-icon" ';
212
+ $html .= ' data-network="' . $network->key . '"';
 
 
 
 
213
 
214
+ if ( !empty($network->premium) ) :
215
+ $html .= ' premium="'.$network->premium.'"';
216
+ endif;
217
 
218
+ $html .= '></i>';
219
 
220
+ return $html;
221
+ }
222
 
223
 
224
  /**
229
  * @return void Rendered html will be stored in local html property.
230
  *
231
  */
232
+ public function render_HTML() {
233
+ if ($this->is_active_icons) {
234
+ $this->render_active_icons();
235
+ } else {
236
+ $this->render_inactive_icons();
237
+ }
238
+
239
+ return $this->html;
240
+ }
241
 
242
  }
lib/options/SWP_Option_Toggle.php CHANGED
@@ -3,91 +3,91 @@
3
  class SWP_Option_Toggle extends SWP_Option {
4
 
5
 
6
- /**
7
- * Default
8
- *
9
- * The default value for this input type="checkbox".
10
- *
11
- * @var bool $default
12
- *
13
- */
14
- public $default = true;
15
-
16
-
17
- /**
18
- * The required constructor for PHP classes.
19
- *
20
- * @param string $name The display name for the toggle.
21
- * @param string $key The database key for the user setting.
22
- */
23
  public function __construct( $name, $key ) {
24
  parent::__construct( $name, $key );
25
  $this->default = true;
26
  }
27
 
28
 
29
- public function register_available_values( $values ) {
30
- $values[$this->key] = array(
31
- 'type' => 'boolean',
32
- 'values' => array( true, false )
33
- );
34
 
35
- return $values;
36
- }
37
 
38
 
39
- /**
40
- * Creates the fully qulaified HTML for the checkbox/toggle module.
41
- *
42
- * @return SWP_Option_Toggle $this The calling object, for method chaining.
43
- */
44
  public function render_HTML() {
45
- //* Map the default boolean to on/off.
46
- $status = $this->default ? 'on' : 'off';
47
 
48
- if ( isset( $this->user_options[$this->key] ) ) :
49
- $status = $this->user_options[$this->key] === true ? 'on' : 'off';
50
- endif;
51
 
52
- $checked = $status === 'on' ? ' checked ' : '';
53
 
54
- $html = '<div class="sw-grid ' . $this->parent_size . ' sw-fit sw-option-container ' . $this->key . '_wrapper" ';
55
- $html .= $this->render_dependency();
56
- $html .= $this->render_premium();
57
- $html .= '>';
58
 
59
- $html .= '<div class="sw-grid ' . $this->size . '">';
60
- $html .= '<p class="sw-checkbox-label">' . $this->name . '</p>';
61
- $html .= '</div>';
62
 
63
- $html .= '<div class="sw-grid ' . $this->size . '">';
64
- $html .= '<div class="sw-checkbox-toggle" status="' . $status . '" field="#' . $this->key . '">';
65
- $html .= '<div class="sw-checkbox-on">' . __( 'ON', 'social-warfare' ) . '</div>';
66
- $html .= '<div class="sw-checkbox-off">' . __( 'OFF', 'social-warfare' ) . '</div>';
67
- $html .= '</div>';
68
 
69
- $html .= '<input type="checkbox" id="' . $this->key . '" class="sw-hidden" name="' . $this->key . '"' . $checked . '/>';
70
- $html .= '</div>';
71
 
72
- $html .= '</div>';
73
 
74
- $this->html = $html;
75
 
76
- return $html;
77
  }
78
 
79
 
80
- /**
81
- * Override parent method to make this boolean-specific.
82
- *
83
- * @param boolean $value The boolean value to set as default.
84
- * @return SWP_Option_Toggle $this The calling object, for method chaining.
85
- */
86
- public function set_default( $value ) {
87
- if ( !is_bool( $value ) || !isset( $value ) ) {
88
- $this->_throw( 'Please provide a default value as a boolean.' );
89
- }
90
 
91
- return parent::set_default( $value );
92
- }
93
  }
3
  class SWP_Option_Toggle extends SWP_Option {
4
 
5
 
6
+ /**
7
+ * Default
8
+ *
9
+ * The default value for this input type="checkbox".
10
+ *
11
+ * @var bool $default
12
+ *
13
+ */
14
+ public $default = true;
15
+
16
+
17
+ /**
18
+ * The required constructor for PHP classes.
19
+ *
20
+ * @param string $name The display name for the toggle.
21
+ * @param string $key The database key for the user setting.
22
+ */
23
  public function __construct( $name, $key ) {
24
  parent::__construct( $name, $key );
25
  $this->default = true;
26
  }
27
 
28
 
29
+ public function register_available_values( $values ) {
30
+ $values[$this->key] = array(
31
+ 'type' => 'boolean',
32
+ 'values' => array( true, false )
33
+ );
34
 
35
+ return $values;
36
+ }
37
 
38
 
39
+ /**
40
+ * Creates ready-to-print HTML for the checkbox/toggle module.
41
+ *
42
+ * @return SWP_Option_Toggle $this The calling object, for method chaining.
43
+ */
44
  public function render_HTML() {
45
+ //* Map the default boolean to on/off.
46
+ $status = $this->default ? 'on' : 'off';
47
 
48
+ if ( isset( $this->user_options[$this->key] ) ) :
49
+ $status = $this->user_options[$this->key] === true ? 'on' : 'off';
50
+ endif;
51
 
52
+ $checked = $status === 'on' ? ' checked ' : '';
53
 
54
+ $html = '<div class="sw-grid ' . $this->parent_size . ' sw-fit sw-option-container ' . $this->key . '_wrapper" ';
55
+ $html .= $this->render_dependency();
56
+ $html .= $this->render_premium();
57
+ $html .= '>';
58
 
59
+ $html .= '<div class="sw-grid ' . $this->size . '">';
60
+ $html .= '<p class="sw-checkbox-label">' . $this->name . '</p>';
61
+ $html .= '</div>';
62
 
63
+ $html .= '<div class="sw-grid ' . $this->size . '">';
64
+ $html .= '<div class="sw-checkbox-toggle" status="' . $status . '" field="#' . $this->key . '">';
65
+ $html .= '<div class="sw-checkbox-on">' . __( 'ON', 'social-warfare' ) . '</div>';
66
+ $html .= '<div class="sw-checkbox-off">' . __( 'OFF', 'social-warfare' ) . '</div>';
67
+ $html .= '</div>';
68
 
69
+ $html .= '<input type="checkbox" id="' . $this->key . '" class="sw-hidden" name="' . $this->key . '"' . $checked . '/>';
70
+ $html .= '</div>';
71
 
72
+ $html .= '</div>';
73
 
74
+ $this->html = $html;
75
 
76
+ return $html;
77
  }
78
 
79
 
80
+ /**
81
+ * Override parent method to make this boolean-specific.
82
+ *
83
+ * @param boolean $value The boolean value to set as default.
84
+ * @return SWP_Option_Toggle $this The calling object, for method chaining.
85
+ */
86
+ public function set_default( $value ) {
87
+ if ( !is_bool( $value ) || !isset( $value ) ) {
88
+ $this->_throw( 'Please provide a default value as a boolean.' );
89
+ }
90
 
91
+ return parent::set_default( $value );
92
+ }
93
  }
lib/options/SWP_Options_Page.php CHANGED
@@ -1,8 +1,4 @@
1
  <?php
2
- //* For options whose database name has changed, it is notated as follows:
3
- //* prevOption => new_option
4
- //* @see SWP_Database_Migration
5
-
6
  /**
7
  * The core Social Warfare admin settings page.
8
  *
@@ -28,29 +24,29 @@ class SWP_Options_Page extends SWP_Option_Abstract {
28
  * The Options Page Tabs
29
  *
30
  * An object holding each of the tabs by index name.
31
- * The tab is required to be either an SWP_Options_Page_Tab
32
- * object, or a class which extends this object.
33
  *
34
  */
35
  public $tabs;
36
 
37
 
38
- /**
39
- * Boolean indicating whether the plugin is registered or not.
40
- *
41
- * @var bool $swp_registration
42
- *
43
- */
44
- public $swp_registration;
45
 
46
 
47
- /**
48
- * The user's selected icons to display.
49
- *
50
- * As defined in the Display tab on the settings page.
51
- *
52
- */
53
- public $icons = array();
54
 
55
 
56
  /**
@@ -68,7 +64,7 @@ class SWP_Options_Page extends SWP_Option_Abstract {
68
  */
69
  public function __construct() {
70
  // Create a 'tabs' object to which we can begin adding tabs.
71
- $this->tabs = new stdClass();
72
 
73
 
74
  /**
@@ -82,7 +78,7 @@ class SWP_Options_Page extends SWP_Option_Abstract {
82
  ->init_social_tab()
83
  ->init_advanced_tab();
84
 
85
- add_action('wp_loaded', [$this, 'load_deferred_options']);
86
 
87
 
88
  /**
@@ -101,8 +97,14 @@ class SWP_Options_Page extends SWP_Option_Abstract {
101
  * have had an opportunity to modify the options object as needed.
102
  *
103
  */
104
- add_action( 'admin_menu', array( $this, 'options_page') );
105
- }
 
 
 
 
 
 
106
 
107
 
108
  /**
@@ -115,9 +117,22 @@ class SWP_Options_Page extends SWP_Option_Abstract {
115
  * @param void
116
  * @return void
117
  */
118
- public function load_deferred_options() {
119
- $this->tabs->display->sections->button_position->options->button_position_table->do_button_position_table();
120
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
121
 
122
 
123
  /**
@@ -146,688 +161,765 @@ class SWP_Options_Page extends SWP_Option_Abstract {
146
  }
147
 
148
 
149
- /**
150
- * Add a tab to the Options Page object.
151
- *
152
- * @since 3.0.0 | 01 MAR 2018 | Created
153
- * @param object $tab The SWP_Options_Page_Tab object to add.
154
- * @return object $this The calling instance, for method chaining.
155
- *
156
- */
157
- public function add_tab( $tab ) {
158
- $class = get_class( $tab );
159
- if ( !( $class === 'SWP_Options_Page_Tab' || is_subclass_of( $class, 'SWP_Options_Page_Tab' ) ) ) :
160
- $this->_throw( 'Requires an instance of SWP_Options_Page_Tab or a class which inherits this class.' );
161
- endif;
162
-
163
- if ( empty( $tab->name ) ):
164
- $this->_throw( 'Tab name can not be empty.' );
165
- endif;
166
-
167
- $this->tabs[$tab->name] = $tab;
168
-
169
- return $this;
170
- }
171
-
172
-
173
- /**
174
- * Enqueue the Settings Page CSS & Javascript
175
- *
176
- * @since 3.0.0 | 01 MAR 2018 | Created
177
- * @see $this->options_page()
178
- * @param void
179
- * @return void
180
- *
181
- */
182
- public function admin_css() {
183
- $suffix = SWP_Script::get_suffix();
184
  $wp_scripts = wp_scripts();
185
 
186
  wp_enqueue_style(
187
  'swp-admin-ui-css',
188
- '//code.jquery.com/ui/' . $wp_scripts->registered['jquery-ui-core']->ver . '/themes/smoothness/jquery-ui.min.css',
189
- false,
190
- SWP_VERSION,
191
- false
 
 
 
 
 
 
 
192
  );
193
 
194
- wp_enqueue_style(
195
- 'swp_admin_options_css',
196
- SWP_PLUGIN_URL . "/assets/css/admin-options-page{$suffix}.css",
197
- array(),
198
- SWP_VERSION
199
- );
200
-
201
- wp_enqueue_style(
202
- 'social_warfare_admin_mobile',
203
- SWP_PLUGIN_URL . "/assets/css/admin-mobile{$suffix}.css",
204
- array(),
205
- SWP_VERSION
206
- );
207
- }
208
-
209
-
210
- /**
211
- * Enqueue the admin javascript
212
- *
213
- * @since 3.0.0 | 01 MAR 2018 | Created
214
- * @see $this->options_page()
215
- * @param void
216
- * @return void
217
- * @todo: Are we still using the tooltip for anything?
218
- *
219
- */
220
- public function admin_js() {
221
- $suffix = SWP_Script::get_suffix();
222
-
223
- wp_enqueue_script( 'jquery' );
224
- wp_enqueue_script( 'jquery-effects-core' );
225
- wp_enqueue_script( 'jquery-ui-core' );
226
- wp_enqueue_script( 'jquery-ui-sortable' );
227
- wp_enqueue_script( 'jquery-ui-tooltip' );
228
  wp_enqueue_script( 'jquery-ui-widget' );
229
- wp_enqueue_script( 'jquery-ui-position' );
230
- wp_enqueue_media();
231
- wp_enqueue_script(
232
- 'swp_admin_options_js',
233
- SWP_PLUGIN_URL . "/assets/js/admin-options-page{$suffix}.js",
234
- array( 'jquery', 'social_warfare_script' ),
235
- SWP_VERSION
236
- );
237
-
238
- wp_localize_script( 'swp_admin_options_js', 'swpAdminOptionsData', array(
239
- 'registerNonce' => wp_create_nonce( 'swp_plugin_registration' ),
240
- 'optionsNonce' => wp_create_nonce( 'swp_plugin_options_save' ),
241
- ));
242
- }
243
-
244
-
245
- /**
246
- * Creates the commonly used color choides for choice settings.
247
- *
248
- * @since 3.0.0 | 01 MAR 2018 | Created
249
- * @param void
250
- * @return array The key/value pairs of color choides.
251
- *
252
- */
253
- public static function get_color_choices_array() {
254
- return [
255
- 'full_color' => __( 'Full Color', 'social-warfare' ),
256
- 'light_gray' => __( 'Light Gray', 'social-warfare' ),
257
- 'medium_gray' => __( 'Medium Gray', 'social-warfare' ),
258
- 'dark_gray' => __( 'Dark Gray', 'social-warfare' ),
259
- 'light_gray_outlines' => __( 'Light Gray Outlines', 'social-warfare' ),
260
- 'medium_gray_outlines' => __( 'Medium Gray Outlines', 'social-warfare' ),
261
- 'dark_gray_outlines' => __( 'Dark Gray Outlines', 'social-warfare' ),
262
- 'color_outlines' => __( 'Color Outlines', 'social-warfare' ),
263
- 'custom_color' => __( 'Custom Color', 'social-warfare' ),
264
- 'custom_color_outlines' => __( 'Custom Color Outlines', 'social-warfare' )
265
- ];
266
- }
267
-
268
-
269
- /**
270
- * Calls rendering methods to assemble HTML for the Admin Settings page.
271
- *
272
- * @since 3.0.0 | 01 MAR 2018 | Created
273
- * @param void
274
- * @return object $this The calling object for method chaining.
275
- *
276
- */
277
- public function render_HTML() {
278
- //* Fetch all the addons the user has installed,
279
- //* whether or not they are actively registered.
280
- $addons = apply_filters( 'swp_registrations', array() );
281
- $this->is_registered = 0;
282
- $addon_templates = array();
283
- $active_addons = '';
284
- $registered_addons = '';
285
-
286
- if ( !empty( $addons ) ) :
287
-
288
- foreach( $addons as $addon ) {
289
- if ( gettype($addon) !== 'object' ) :
290
- continue;
291
- endif;
292
-
293
-
294
- $addon_templates[] = new SWP_Registration_Tab_Template( $addon );
295
- $active_addons .= " $addon->key ";
296
-
297
- if ( true === $addon->is_registered ) :
298
- $registered_addons .= " $addon->key ";
299
- $this->is_registered = 1;
300
- endif;
301
- }
302
-
303
- endif;
304
-
305
- $this->init_registration_tab( $addon_templates );
306
- $menu = $this->create_menu( $addon_templates );
307
- $tabs = $this->create_tabs( $active_addons, $registered_addons );
308
-
309
- $html = $menu . $tabs;
310
- $this->html = $html;
311
-
312
- echo $html;
313
-
314
- return $this;
315
- }
316
-
317
-
318
- /**
319
- * Handwritten list of OG Meta types.
320
- *
321
- * @since 3.0.0 | 01 MAR 2018 | Created
322
- * @since 3.1.0 | 13 JUN 2018 | Replaced array bracket notation.
323
- * @param void
324
- * @return array Custom Post Types.
325
- *
326
- */
327
- protected function get_og_post_types() {
328
- return array(
329
- 'article',
330
- 'book',
331
- 'books.author',
332
- 'books.book',
333
- 'books.genre',
334
- 'business.business',
335
- 'fitness.course',
336
- 'game.achievement',
337
- 'music.album',
338
- 'music.playlist',
339
- 'music.radio_station',
340
- 'music.song',
341
- 'place',
342
- 'product',
343
- 'product.group',
344
- 'product.item',
345
- 'profile',
346
- 'restaurant.menu',
347
- 'restaurant.menu_item',
348
- 'restaurant.menu_section',
349
- 'restaurant.restaurant',
350
- 'video.episode',
351
- 'video.movie',
352
- 'video.other',
353
- 'video.tv_show',
354
- );
355
- }
356
-
357
-
358
- /**
359
- * Provides the common placement choices for the buttons.
360
- *
361
- * @since 3.0.0 | 01 MAR 2018 | Created
362
- * @since 3.1.0 | 13 JUN 2018 | Replaced Array bracket notation.
363
- * @param void
364
- * @return array Key/Value pairs of button placement options.
365
- *
366
- */
367
- protected function get_static_options_array() {
368
- return array(
369
- 'above' => __( 'Above the Content', 'social-warfare' ),
370
- 'below' => __( 'Below the Content', 'social-warfare' ),
371
- 'both' => __( 'Both Above and Below the Content', 'social-warfare' ),
372
- 'none' => __( 'None/Manual Placement', 'social-warfare' )
373
- );
374
- }
375
-
376
-
377
- /**
378
- * Create the Advanced section of the display tab.
379
- *
380
- * This section offers miscellaneous advanced settings for finer control of the plugin.
381
- *
382
- * @since 3.0.0 | 01 MAR 2018 | Created
383
- * @param void
384
- * @return object $this The calling object for method chaining.
385
- *
386
- */
387
- protected function init_advanced_tab() {
388
-
389
- $advanced = new SWP_Options_Page_Tab( __( 'Advanced', 'social-warfare' ), 'advanced' );
390
- $advanced->set_priority( 40 );
391
 
392
  $gutenberg = new SWP_Options_Page_Section( __( 'Gutenberg Blocks<sup>beta</sup>', 'social-warfare' ), 'gutenberg' );
393
  $gutenberg->set_priority( 5 )
394
- ->set_description( 'If you want to try Social Warfare blocks with Gutenberg, turn this on. <b>Tested with: WP Core 4.8 & Gutenberg Plugin 4.6.1 and WP Core 5.0 (Gutenberg)</b>. <em><br/>We are keeping up the best we can, but Gutenberg development is very rapid and can break our blocks overnight. <br/>If this happens, please turn this setting OFF. Your shortcodes will stay in place.</em>' );
395
  // ->set_information_link( 'https://warfareplugins.com/support/using-shortcodes-and-php-snippets/' );
396
 
397
  $gutenberg_switch = new SWP_Option_Toggle( __( 'Enable Gutenberg Blocks'), 'gutenberg_switch' );
398
  $gutenberg_switch->set_default( true )
399
- ->set_size( 'sw-col-300' );
400
 
401
  $gutenberg->add_option( $gutenberg_switch );
402
 
403
- $frame_buster = new SWP_Options_Page_Section( __( 'Frame Buster', 'social-warfare' ), 'frame_buster' );
404
- $frame_buster->set_priority( 10 )
405
- ->set_description( __( 'If you want to stop content pirates from framing your content, turn this on.', 'social-warfare' ) )
406
- ->set_information_link( 'https://warfareplugins.com/support/options-page-advanced-tab-frame-buster/');
407
 
408
- //* sniplyBuster => frame_buster
409
- $frame_buster_toggle = new SWP_Option_Toggle( __( 'Frame Buster', 'social-warfare' ), 'frame_buster' );
410
- $frame_buster_toggle->set_default( true )
411
- ->set_size( 'sw-col-300' );
412
 
413
- $frame_buster->add_option( $frame_buster_toggle );
414
 
415
- $full_content = new SWP_Options_Page_Section( __( 'Full Content vs. Excerpts', 'social-warfare' ), 'full_content' );
416
- $full_content->set_priority( 70 )
417
- ->set_description( __( 'If your theme does not use excerpts, but instead displays the full post content on archive, category, and home pages, activate this toggle to allow the buttons to appear in those areas.', 'social-warfare' ) )
418
- ->set_information_link( 'https://warfareplugins.com/support/options-page-advanced-tab-full-content-vs-excerpts/' );
419
 
420
- $full_content_toggle = new SWP_Option_Toggle( __( 'Full Content?', 'social-warfare' ), 'full_content' );
421
- $full_content_toggle->set_default( false )
422
- ->set_size( 'sw-col-300' );
423
 
424
- $full_content->add_option( $full_content_toggle );
425
 
426
- $advanced->add_sections( [$gutenberg, $frame_buster, $full_content] );
427
 
428
- $this->tabs->advanced = $advanced;
429
 
430
- return $this;
431
- }
432
 
433
 
434
- /**
435
- * Create the Display section and its child options.
436
- *
437
- * This tab offers genereral layout setings for the front end of the site.
438
- *
439
- * @since 3.0.0 | 01 MAR 2018 | Created
440
- * @param void
441
- * @return object $this The calling object for method chaining.
442
- *
443
- */
444
- protected function init_display_tab() {
445
- $display = new SWP_Options_Page_Tab( __( 'Display', 'social-warfare' ), 'display' );
446
  $display->set_priority( 10 );
447
 
448
- $social_networks = new SWP_Options_Page_Section( __( 'Social Networks', 'social-warfare' ), 'social_networks' );
449
- $social_networks->set_priority( 10 )
450
- ->set_description( __( 'Drag & Drop to activate and order your share buttons.', 'social-warfare' ) )
451
- ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-social-networks/' );
452
 
453
- //* These two sections are unique and need special HTML.
454
- $active = new SWP_Option_Icons( __( 'Active', 'social-warfare' ), 'active' );
455
- $active->do_active_icons()->set_priority( 10 );
456
 
457
- $inactive = new SWP_Option_Icons( __( 'Inactive', 'social-warfare' ), 'inactive' );
458
- $inactive->do_inactive_icons()->set_priority( 20 );
459
 
460
- $social_networks->add_options( [$active, $inactive] );
461
 
462
- $share_counts = new SWP_Options_Page_Section( __( 'Share Counts', 'social-warfare' ), 'share_counts' );
463
- $share_counts->set_description( __( 'Use the toggles below to determine how to display your social proof.', 'social-warfare' ) )
464
- ->set_priority( 20 )
465
- ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-share-counts/' );
466
 
467
- //* toteseach => network_count
468
- $network_shares = new SWP_Option_Toggle( __( 'Button Counts', 'social-warfare' ), 'network_shares' );
469
- $network_shares->set_default( true )
470
- ->set_priority( 10 )
471
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' );
472
 
473
- //* totes => totals
474
- $total_shares = new SWP_Option_Toggle( __( 'Total Counts', 'social-warfare' ), 'total_shares' );
475
- $total_shares->set_default( true )
476
- ->set_priority( 20 )
477
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' );
478
 
479
  //* swDecimals => decimals
480
- $decimals = new SWP_Option_Select( __( 'Decimal Places', 'social-warfare' ), 'decimals' );
481
- $decimals->set_choices( [
482
- '0' => 'Zero',
483
- '1' => 'One',
484
- '2' => 'Two',
485
- ])
486
- ->set_default( '0' )
487
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
488
  ->set_priority( 30 );
489
 
490
- //* swp_decimal_separator => decimal_separator
491
- $decimal_separator = new SWP_Option_Select( __( 'Decimal Separator', 'social-warfare' ), 'decimal_separator' );
492
- $decimal_separator->set_choices( [
493
- 'period' => 'Period',
494
- 'comma' => 'Comma',
495
- ])
496
- ->set_default( 'period' )
497
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
498
  ->set_priority( 50 );
499
 
500
- //* swTotesFormat => totals_alignment
501
- $totals_alignment = new SWP_Option_Select( __( 'Alignment', 'social-warfare' ), 'totals_alignment' );
502
- $totals_alignment->set_choices( [
503
- 'totals_right' => 'Right',
504
- 'totals_left' => 'Left'
505
- ])
506
- ->set_default( 'totals_right' )
507
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
508
  ->set_priority( 60 );
509
 
510
- $share_counts->add_options( [$network_shares, $total_shares, $decimals, $decimal_separator, $totals_alignment] );
511
 
512
- $button_position = new SWP_Options_Page_Section( __( 'Position Share Buttons', 'social-warfare' ), 'button_position' );
513
- $button_position->set_description( __( 'These settings let you decide where the share buttons should go for each post type.', 'social-warfare' ) )
514
- ->set_priority( 40 )
515
- ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-position-share-buttons/' );
516
 
517
- $button_position_table = new SWP_Section_HTML( __( 'Position Table', 'social-warfare' ), 'button_position_table' );
518
- // $button_position_table->do_button_position_table();
519
 
520
- $button_position->add_option( $button_position_table );
521
 
522
 
523
 
524
- $display->add_sections( [$social_networks, $share_counts, $button_position] );
525
 
526
- $this->tabs->display = $display;
527
 
528
- return $this;
529
- }
530
 
531
 
532
- /**
533
- * Create the Registration section of the display tab.
534
- *
535
- * This section allows users to register activation keys for the premium plugin features.
536
- *
537
- * @since 3.0.0 | 01 MAR 2018 | Created
538
- * @param void
539
- * @return object $this The calling object for method chaining.
540
- *
541
- */
542
- protected function init_registration_tab( $addons ) {
543
- $registration = new SWP_Options_Page_Tab( __( 'Registration', 'social-warfare' ), 'registration' );
544
 
545
- $registration->set_priority( 50 );
546
 
547
- $wrap = new SWP_Options_Page_Section( __( 'Addon Registrations', 'social-warfare' ), 'addon_registrations' );
548
- $wrap->set_priority( 10 );
549
 
550
- foreach( $addons as $addon ) {
551
- $wrap->add_option( $addon );
552
- }
553
 
554
- $registration->add_section( $wrap );
 
 
555
 
556
- $this->tabs->registration = $registration;
557
 
558
- return $this;
559
- }
560
 
 
 
561
 
562
- /**
563
- * Create the Social Identity section of the display tab.
564
- *
565
- * This section allows the user to set social network handles and OG metadata.
566
- *
567
- * @since 3.0.0 | 01 MAR 2018 | Created
568
- * @param void
569
- * @return SWP_Options_Page $this The calling object for method chaining.
570
- *
571
- */
572
- protected function init_social_tab() {
573
- $social_identity = new SWP_Options_Page_Tab( __( 'Social Identity', 'social-warfare' ), 'social_identity' );
574
- $social_identity->set_priority( 30 );
575
 
576
- $sitewide_identity = new SWP_Options_Page_Section( 'Sitewide Identity', 'sitewide_identity' );
577
- $sitewide_identity->set_description( __( 'If you would like to set sitewide defaults for your social identity, add them below.', 'social-warfare' ) )
578
- ->set_information_link( 'https://warfareplugins.com/support/options-page-social-identity-tab-sitewide-identity/' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
 
580
- $twitter_id = new SWP_Option_Text( __( 'Twitter Username', 'social-warfare' ), 'twitter_id' );
581
- $twitter_id->set_size( 'sw-col-300' )
582
- ->set_priority( 10 )
583
- ->set_default( '' );
 
 
 
 
 
584
 
585
- //* pinterestID => pinterest_id
586
- $pinterest_id = new SWP_Option_Text( __( 'Pinterest Username', 'social-warfare' ), 'pinterest_id' );
587
- $pinterest_id->set_size( 'sw-col-300' )
588
- ->set_priority( 20 )
589
- ->set_default( '' );
590
 
591
- //* facebookPublisherUrl => facebook_publisher_url
592
- $facebook_publisher_url = new SWP_Option_Text( __( 'Facebook Page URL', 'social-warfare' ), 'facebook_publisher_url' );
593
- $facebook_publisher_url->set_size( 'sw-col-300' )
594
- ->set_priority( 30 )
595
- ->set_default( '' );
596
 
597
- //* facebookAppID => facebook_app_id
598
- $facebook_app_id = new SWP_Option_Text( __( 'Facebook App ID', 'social-warfare' ), 'facebook_app_id' );
599
- $facebook_app_id->set_size( 'sw-col-300' )
600
- ->set_priority( 40 )
601
- ->set_default( '' );
602
 
603
- $sitewide_identity->add_options( [$twitter_id, $pinterest_id, $facebook_publisher_url, $facebook_app_id] );
604
 
605
- $social_identity->add_section( $sitewide_identity );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
606
 
607
- $this->tabs->social_identity = $social_identity;
 
 
608
 
609
- return $this;
610
- }
611
 
 
 
612
 
613
- /**
614
- * Create the Styles section of the display tab.
615
- *
616
- * This section allows the user to refine the look, feel, and placement of buttons.
617
- *
618
- * @since 3.0.0 | 01 MAR 2018 | Created
619
- * @param void
620
- * @return SWP_Options_Page $this The calling object for method chaining.
621
- *
622
- */
623
- protected function init_styles_tab() {
624
- $styles = new SWP_Options_Page_Tab( __( 'Styles' , 'social-warfare' ) , 'styles' );
625
- $styles->set_priority( 20 );
626
-
627
- $buttons_preview = new SWP_Section_HTML( __( 'Buttons Preview', 'social-warfare' ) );
628
- $buttons_preview->set_priority( 1000 )
629
- ->do_buttons_preview();
630
-
631
-
632
- $buttons_preview_section = new SWP_Options_Page_Section( __( 'Buttons Preview', 'social-warfare' ), 'buttons_preview_section' );
633
- $buttons_preview_section->add_option( $buttons_preview );
634
-
635
- $styles->add_section( $buttons_preview_section );
636
  //
637
  //
638
- // $total_counts = new SWP_Options_Page_Section( __( 'Total Counts', 'social-warfare' ), 'total_counts' );
639
- // $total_counts->set_description( __( 'Customize how the "Total Shares" section of your share buttons look.', 'social-warfare' ) )
640
- // ->set_priority( 20 )
641
- // ->set_information_link( 'https://warfareplugins.com/support/options-page-styles-tab-total-counts/' );
642
-
643
-
644
-
645
- // $total_counts->add_options( [$decimals, $decimal_separator, $totals_alignment] );
646
-
647
- $floating_share_buttons = new SWP_Options_Page_Section( __( 'Floating Share Buttons', 'social-warfare' ), 'floating_share_buttons' );
648
- $floating_share_buttons->set_description( __( 'If you would like to activate floating share buttons, turn this on.', 'social-warfare' ) )
649
- ->set_priority( 30 )
650
- ->set_information_link( 'https://warfareplugins.com/support/options-page-styles-tab-floating-share-buttons/' );
651
-
652
- //* float => floating_panel
653
- $floating_panel = new SWP_Option_Toggle( __( 'Floating Share Buttons', 'social-warfare' ), 'floating_panel' );
654
- $floating_panel->set_default( false )
655
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
656
- ->set_priority( 10 );
657
-
658
- //* floatOption => float_location
659
- $float_location = new SWP_Option_Select( __( 'Float Position', 'social-warfare' ), 'float_location' );
660
- $float_location->set_choices( [
661
- 'top' => __( 'Top of the Page' , 'social-warfare' ),
662
- 'bottom' => __( 'Bottom of the Page' , 'social-warfare' ),
663
- 'left' => __( 'On the left side of the page' , 'social-warfare' ),
664
- 'right' => __( 'On the right side of the page' , 'social-warfare' )
665
- ] )
666
- ->set_default( 'bottom' )
667
- ->set_priority( 20 )
668
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
669
- ->set_dependency( 'floating_panel', [true] );
670
-
671
- //* floatBgColor => float_background_color
672
- $float_background_color = new SWP_Option_Text( __( 'Background Color', 'social-warfare' ), 'float_background_color' );
673
- $float_background_color->set_default( '#ffffff' )
674
- ->set_priority( 25 )
675
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
676
- ->set_dependency( 'float_location', ['top', 'bottom'] );
677
-
678
- //* swp_float_scr_sz => float_screen_width
679
- $float_screen_width = new SWP_Option_Text( __( 'Minimum Screen Width', 'social-warfare' ), 'float_screen_width' );
680
- $float_screen_width->set_default( '1100' )
681
- ->set_priority( 30 )
682
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
683
- ->set_dependency( 'float_location', ['left', 'right'] );
684
-
685
- //* sideReveal => transition
686
- $float_transition = new SWP_Option_Select( __( 'Transition', 'social-warfare' ), 'transition' );
687
- $float_transition->set_priority( 40 )
688
- ->set_choices( [
689
- 'slide' => __( 'Slide In / Slide Out' , 'social-warfare' ) ,
690
- 'fade' => __( 'Fade In / Fade Out' , 'social-warfare' )
691
- ] )
692
- ->set_default( 'slide' )
693
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
694
- ->set_dependency( 'float_location', ['left', 'right'] );
695
-
696
- $color_choices = $this::get_color_choices_array();
697
-
698
- $float_before_content = new SWP_Option_Toggle( __( 'Float Before Content', 'social-warfare' ), 'float_before_content');
699
- $float_before_content->set_default( false )
700
- ->set_priority( 140 )
701
- ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
702
- ->set_dependency( 'floating_panel', true );
703
-
704
- $floating_share_buttons->add_options( [$floating_panel, $float_location, $float_transition,
705
- $float_screen_width, $float_background_color, $float_before_content] );
706
-
707
-
708
-
709
- $styles->add_sections( [/*$total_counts,*/ $floating_share_buttons] );
710
-
711
- $this->tabs->styles = $styles;
712
-
713
- return $this;
714
- }
715
-
716
-
717
- /**
718
- * Creates the HTML for the admin top menu (Logo, tabs, and save button).
719
- *
720
- * @since 3.0.0 | 01 MAR 2018 | Created
721
- * @param void
722
- * @return string $html The fully qualified HTML for the menu.
723
- *
724
- */
725
- private function create_menu( $addons ) {
726
- //* Open the admin top menu wrapper.
727
- $html = '<div class="sw-header-wrapper">';
728
- $html .= '<div class="sw-grid sw-col-940 sw-top-menu" sw-registered="' . $this->is_registered . '">';
729
-
730
- //* Menu wrapper and tabs.
731
- $html .= '<div class="sw-grid sw-col-700">';
732
- $html .= '<img class="sw-header-logo" src="' . SWP_PLUGIN_URL . '/assets/images/admin-options-page/social-warfare-light.png" />';
733
- $html .= '<img class="sw-header-logo-pro" src="' . SWP_PLUGIN_URL . '/assets/images/admin-options-page/social-warfare-pro-light.png" />';
734
- $html .= '<ul class="sw-header-menu">';
735
-
736
- $tab_map = $this->sort_by_priority( $this->tabs );
737
-
738
- $activated = true;
739
-
740
- foreach( $tab_map as $prioritized_tab) {
741
- foreach( $this->tabs as $index => $tab ) {
742
-
743
- if ( $prioritized_tab['key'] === $tab->key ) :
744
-
745
- //* Skip the registration tab if there are no addons.
746
- if ( 'registration' == $tab->key && 0 === count( $addons ) ) :
747
- continue;
748
- endif;
749
-
750
- $active = $activated ? 'sw-active-tab' : '';
751
- $activated = false;
752
-
753
- $html .= '<li class="' . $active . '">';
754
- $html .= '<a class="sw-tab-selector" href="#" data-link="swp_' . $tab->link . '">';
755
- $html .= '<span>' . $tab->name . '</span>';
756
- $html .= '</a>';
757
- $html .= '</li>';
758
-
759
- endif;
760
- }
761
- }
762
-
763
- $html .= '</ul>';
764
- $html .= '</div>';
765
-
766
- //* "Save Changes" button.
767
- $html .= '<div class="sw-grid sw-col-220 sw-fit">';
768
- $html .= '<a href="#" class="button sw-navy-button sw-save-settings">'. __( 'Save Changes' , 'social-warfare' ) .'</a>';
769
- $html .= '</div>';
770
-
771
- $html .= '<div class="sw-clearfix"></div>';
772
-
773
- $html .= '</div>';
774
- $html .= '</div>';
775
-
776
- return $html;
777
- }
778
-
779
-
780
- /**
781
- * Renders HTML for each tab and assembles for outputting.
782
- *
783
- * Note: We have to utilize a $map varaible for this and each
784
- * other render() method. This is because the data are all
785
- * stored as objects, when can not be iterated by index,
786
- * only by key. Since they keys are arbitrary (for a plugin
787
- * or addon, for example), this is no good, hence the map.
788
- *
789
- * @since 3.0.0 | 01 MAR 2018 | Created
790
- * @param void
791
- * @return string $container The Admin tab HTML container.
792
- *
793
- */
794
- private function create_tabs( $active_addons, $registered_addons ) {
795
- $sidebar = new SWP_Section_HTML( 'Sidebar' );
796
- $tab_map = $this->sort_by_priority( $this->tabs );
797
- $registered = false;
798
- $notices = apply_filters( 'swp_admin_notices', '' );
799
 
800
- $container = '<div class="sw-admin-wrapper" sw-registered="'. $this->is_registered .'" swp-addons="' . $active_addons . '" swp-registrations="' . $registered_addons . '">';
801
- $container .= '<div class="swp-notice-wrapper">';
802
- $container .= $notices;
803
- $container .= '</div>';
804
 
805
- $container .= '<form class="sw-admin-settings-form">';
806
- $container .= '<div class="sw-tabs-container sw-grid sw-col-700">';
807
 
808
- foreach( $tab_map as $prioritized_tab ) {
809
- $key = $prioritized_tab['key'];
810
 
811
- foreach( $this->tabs as $tab ) {
812
- if ( $key === $tab->key ) :
813
-
814
- if ( 'registration' === $key ) :
815
- $container .= $tab->render_HTML( $registered_addons );
816
- continue;
817
- endif;
818
-
819
- $container .= $tab->render_HTML();
820
-
821
- endif;
822
- }
823
- }
824
-
825
- $container .= '</div>';
826
- $container .= '</form>';
827
- $container .= $sidebar->do_admin_sidebar();
828
 
829
- $container .= '</div>';
 
830
 
831
- return $container;
832
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
833
  }
1
  <?php
 
 
 
 
2
  /**
3
  * The core Social Warfare admin settings page.
4
  *
24
  * The Options Page Tabs
25
  *
26
  * An object holding each of the tabs by index name.
27
+ * The tab is required to be either an SWP_Options_Page_Tab
28
+ * object, or a class which extends this object.
29
  *
30
  */
31
  public $tabs;
32
 
33
 
34
+ /**
35
+ * Boolean indicating whether the plugin is registered or not.
36
+ *
37
+ * @var bool $swp_registration
38
+ *
39
+ */
40
+ public $swp_registration;
41
 
42
 
43
+ /**
44
+ * The user's selected icons to display.
45
+ *
46
+ * As defined in the Display tab on the settings page.
47
+ *
48
+ */
49
+ public $icons = array();
50
 
51
 
52
  /**
64
  */
65
  public function __construct() {
66
  // Create a 'tabs' object to which we can begin adding tabs.
67
+ $this->tabs = new stdClass();
68
 
69
 
70
  /**
78
  ->init_social_tab()
79
  ->init_advanced_tab();
80
 
81
+ add_action('wp_loaded', [$this, 'load_deferred_options']);
82
 
83
 
84
  /**
97
  * have had an opportunity to modify the options object as needed.
98
  *
99
  */
100
+ add_action( 'admin_menu', array( $this, 'options_page') );
101
+
102
+
103
+ // Checks the URL for a new access_token.
104
+ SWP_Credential_Helper::options_page_scan_url();
105
+
106
+ add_action( 'wp_ajax_swp_delete_network_tokens', array( $this, 'delete_network_tokens' ) );
107
+ }
108
 
109
 
110
  /**
117
  * @param void
118
  * @return void
119
  */
120
+ public function load_deferred_options() {
121
+ $this->tabs->display->sections->button_position->options->button_position_table->do_button_position_table();
122
+
123
+ $authorizations = $this->establish_authorizations();
124
+ if ( count( $authorizations ) > 0 ) {
125
+
126
+ $auths = new SWP_Options_Page_Section( __( 'Social Network Connections', 'social-warfare' ), 'addon_authorizations' );
127
+ $auths->set_priority( 20 );
128
+
129
+ foreach( $authorizations as $auth ) {
130
+ $auths->add_option( $auth );
131
+ }
132
+
133
+ $this->tabs->social_identity->add_section( $auths );
134
+ }
135
+ }
136
 
137
 
138
  /**
161
  }
162
 
163
 
164
+ /**
165
+ * Add a tab to the Options Page object.
166
+ *
167
+ * @since 3.0.0 | 01 MAR 2018 | Created
168
+ * @param object $tab The SWP_Options_Page_Tab object to add.
169
+ * @return object $this The calling instance, for method chaining.
170
+ *
171
+ */
172
+ public function add_tab( $tab ) {
173
+ $class = get_class( $tab );
174
+ if ( !( $class === 'SWP_Options_Page_Tab' || is_subclass_of( $class, 'SWP_Options_Page_Tab' ) ) ) :
175
+ $this->_throw( 'Requires an instance of SWP_Options_Page_Tab or a class which inherits this class.' );
176
+ endif;
177
+
178
+ if ( empty( $tab->name ) ):
179
+ $this->_throw( 'Tab name can not be empty.' );
180
+ endif;
181
+
182
+ $this->tabs[$tab->name] = $tab;
183
+
184
+ return $this;
185
+ }
186
+
187
+
188
+ /**
189
+ * Enqueue the Settings Page CSS & Javascript
190
+ *
191
+ * @since 3.0.0 | 01 MAR 2018 | Created
192
+ * @see $this->options_page()
193
+ * @param void
194
+ * @return void
195
+ *
196
+ */
197
+ public function admin_css() {
198
+ $suffix = SWP_Script::get_suffix();
199
  $wp_scripts = wp_scripts();
200
 
201
  wp_enqueue_style(
202
  'swp-admin-ui-css',
203
+ '//code.jquery.com/ui/' . $wp_scripts->registered['jquery-ui-core']->ver . '/themes/smoothness/jquery-ui.min.css',
204
+ false,
205
+ SWP_VERSION,
206
+ false
207
+ );
208
+
209
+ wp_enqueue_style(
210
+ 'swp_admin_options_css',
211
+ SWP_PLUGIN_URL . "/assets/css/admin-options-page{$suffix}.css",
212
+ array(),
213
+ SWP_VERSION
214
  );
215
 
216
+ wp_enqueue_style(
217
+ 'social_warfare_admin_mobile',
218
+ SWP_PLUGIN_URL . "/assets/css/admin-mobile{$suffix}.css",
219
+ array(),
220
+ SWP_VERSION
221
+ );
222
+ }
223
+
224
+
225
+ /**
226
+ * Enqueue the admin javascript
227
+ *
228
+ * @since 3.0.0 | 01 MAR 2018 | Created
229
+ * @see $this->options_page()
230
+ * @param void
231
+ * @return void
232
+ * @todo: Are we still using the tooltip for anything?
233
+ *
234
+ */
235
+ public function admin_js() {
236
+ $suffix = SWP_Script::get_suffix();
237
+
238
+ wp_enqueue_script( 'jquery' );
239
+ wp_enqueue_script( 'jquery-effects-core' );
240
+ wp_enqueue_script( 'jquery-ui-core' );
241
+ wp_enqueue_script( 'jquery-ui-sortable' );
242
+ wp_enqueue_script( 'jquery-ui-tooltip' );
 
 
 
 
 
 
 
243
  wp_enqueue_script( 'jquery-ui-widget' );
244
+ wp_enqueue_script( 'jquery-ui-position' );
245
+ wp_enqueue_media();
246
+ wp_enqueue_script(
247
+ 'swp_admin_options_js',
248
+ SWP_PLUGIN_URL . "/assets/js/admin-options-page{$suffix}.js",
249
+ array( 'jquery', 'social_warfare_script' ),
250
+ SWP_VERSION
251
+ );
252
+
253
+ wp_localize_script( 'swp_admin_options_js', 'swpAdminOptionsData', array(
254
+ 'registerNonce' => wp_create_nonce( 'swp_plugin_registration' ),
255
+ 'optionsNonce' => wp_create_nonce( 'swp_plugin_options_save' ),
256
+ ));
257
+ }
258
+
259
+
260
+ /**
261
+ * Creates the commonly used color choides for choice settings.
262
+ *
263
+ * @since 3.0.0 | 01 MAR 2018 | Created
264
+ * @param void
265
+ * @return array The key/value pairs of color choides.
266
+ *
267
+ */
268
+ public static function get_color_choices_array() {
269
+ return [
270
+ 'full_color' => __( 'Full Color', 'social-warfare' ),
271
+ 'light_gray' => __( 'Light Gray', 'social-warfare' ),
272
+ 'medium_gray' => __( 'Medium Gray', 'social-warfare' ),
273
+ 'dark_gray' => __( 'Dark Gray', 'social-warfare' ),
274
+ 'light_gray_outlines' => __( 'Light Gray Outlines', 'social-warfare' ),
275
+ 'medium_gray_outlines' => __( 'Medium Gray Outlines', 'social-warfare' ),
276
+ 'dark_gray_outlines' => __( 'Dark Gray Outlines', 'social-warfare' ),
277
+ 'color_outlines' => __( 'Color Outlines', 'social-warfare' ),
278
+ 'custom_color' => __( 'Custom Color', 'social-warfare' ),
279
+ 'custom_color_outlines' => __( 'Custom Color Outlines', 'social-warfare' )
280
+ ];
281
+ }
282
+
283
+
284
+ /**
285
+ * Calls rendering methods to assemble HTML for the Admin Settings page.
286
+ *
287
+ * @since 3.0.0 | 01 MAR 2018 | Created
288
+ * @param void
289
+ * @return object $this The calling object for method chaining.
290
+ *
291
+ */
292
+ public function render_HTML() {
293
+ //* Fetch all the addons the user has installed,
294
+ //* whether or not they are actively registered.
295
+ $addons = apply_filters( 'swp_registrations', array() );
296
+ $this->is_registered = 0;
297
+ $addon_templates = array();
298
+ $active_addons = '';
299
+ $registered_addons = '';
300
+
301
+ if ( !empty( $addons ) ) :
302
+
303
+ foreach( $addons as $addon ) {
304
+ if ( gettype($addon) !== 'object' ) :
305
+ continue;
306
+ endif;
307
+
308
+
309
+ $addon_templates[] = new SWP_Registration_Tab_Template( $addon );
310
+ $active_addons .= " $addon->key ";
311
+
312
+ if ( true === $addon->is_registered ) :
313
+ $registered_addons .= " $addon->key ";
314
+ $this->is_registered = 1;
315
+ endif;
316
+ }
317
+
318
+ endif;
319
+
320
+ $this->init_registration_tab( $addon_templates );
321
+ $menu = $this->create_menu( $addon_templates );
322
+ $tabs = $this->create_tabs( $active_addons, $registered_addons );
323
+
324
+ $html = $menu . $tabs;
325
+ $this->html = $html;
326
+
327
+ echo $html;
328
+
329
+ return $this;
330
+ }
331
+
332
+
333
+ /**
334
+ * Handwritten list of OG Meta types.
335
+ *
336
+ * @since 3.0.0 | 01 MAR 2018 | Created
337
+ * @since 3.1.0 | 13 JUN 2018 | Replaced array bracket notation.
338
+ * @param void
339
+ * @return array Custom Post Types.
340
+ *
341
+ */
342
+ protected function get_og_post_types() {
343
+ return array(
344
+ 'article',
345
+ 'book',
346
+ 'books.author',
347
+ 'books.book',
348
+ 'books.genre',
349
+ 'business.business',
350
+ 'fitness.course',
351
+ 'game.achievement',
352
+ 'music.album',
353
+ 'music.playlist',
354
+ 'music.radio_station',
355
+ 'music.song',
356
+ 'place',
357
+ 'product',
358
+ 'product.group',
359
+ 'product.item',
360
+ 'profile',
361
+ 'restaurant.menu',
362
+ 'restaurant.menu_item',
363
+ 'restaurant.menu_section',
364
+ 'restaurant.restaurant',
365
+ 'video.episode',
366
+ 'video.movie',
367
+ 'video.other',
368
+ 'video.tv_show',
369
+ );
370
+ }
371
+
372
+
373
+ /**
374
+ * Provides the common placement choices for the buttons.
375
+ *
376
+ * @since 3.0.0 | 01 MAR 2018 | Created
377
+ * @since 3.1.0 | 13 JUN 2018 | Replaced Array bracket notation.
378
+ * @param void
379
+ * @return array Key/Value pairs of button placement options.
380
+ *
381
+ */
382
+ protected function get_static_options_array() {
383
+ return array(
384
+ 'above' => __( 'Above the Content', 'social-warfare' ),
385
+ 'below' => __( 'Below the Content', 'social-warfare' ),
386
+ 'both' => __( 'Both Above and Below the Content', 'social-warfare' ),
387
+ 'none' => __( 'None/Manual Placement', 'social-warfare' )
388
+ );
389
+ }
390
+
391
+
392
+ /**
393
+ * Create the Advanced section of the display tab.
394
+ *
395
+ * This section offers miscellaneous advanced settings for finer control of the plugin.
396
+ *
397
+ * @since 3.0.0 | 01 MAR 2018 | Created
398
+ * @param void
399
+ * @return object $this The calling object for method chaining.
400
+ *
401
+ */
402
+ protected function init_advanced_tab() {
403
+
404
+ $advanced = new SWP_Options_Page_Tab( __( 'Advanced', 'social-warfare' ), 'advanced' );
405
+ $advanced->set_priority( 40 );
406
 
407
  $gutenberg = new SWP_Options_Page_Section( __( 'Gutenberg Blocks<sup>beta</sup>', 'social-warfare' ), 'gutenberg' );
408
  $gutenberg->set_priority( 5 )
409
+ ->set_description( 'If you want to try Social Warfare blocks with Gutenberg, turn this on. <b>Tested with: WP Core 4.9, WP Core 5.0.3</b>. <em><br/>We are keeping up the best we can, but Gutenberg development is very rapid and can break our blocks overnight. <br/>If this happens, please turn this setting OFF. Your shortcodes will stay in place.</em>' );
410
  // ->set_information_link( 'https://warfareplugins.com/support/using-shortcodes-and-php-snippets/' );
411
 
412
  $gutenberg_switch = new SWP_Option_Toggle( __( 'Enable Gutenberg Blocks'), 'gutenberg_switch' );
413
  $gutenberg_switch->set_default( true )
414
+ ->set_size( 'sw-col-300' );
415
 
416
  $gutenberg->add_option( $gutenberg_switch );
417
 
418
+ $frame_buster = new SWP_Options_Page_Section( __( 'Frame Buster', 'social-warfare' ), 'frame_buster' );
419
+ $frame_buster->set_priority( 10 )
420
+ ->set_description( __( 'If you want to stop content pirates from framing your content, turn this on.', 'social-warfare' ) )
421
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-advanced-tab-frame-buster/');
422
 
423
+ //* sniplyBuster => frame_buster
424
+ $frame_buster_toggle = new SWP_Option_Toggle( __( 'Frame Buster', 'social-warfare' ), 'frame_buster' );
425
+ $frame_buster_toggle->set_default( true )
426
+ ->set_size( 'sw-col-300' );
427
 
428
+ $frame_buster->add_option( $frame_buster_toggle );
429
 
430
+ $full_content = new SWP_Options_Page_Section( __( 'Full Content vs. Excerpts', 'social-warfare' ), 'full_content' );
431
+ $full_content->set_priority( 70 )
432
+ ->set_description( __( 'If your theme does not use excerpts, but instead displays the full post content on archive, category, and home pages, activate this toggle to allow the buttons to appear in those areas.', 'social-warfare' ) )
433
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-advanced-tab-full-content-vs-excerpts/' );
434
 
435
+ $full_content_toggle = new SWP_Option_Toggle( __( 'Full Content?', 'social-warfare' ), 'full_content' );
436
+ $full_content_toggle->set_default( false )
437
+ ->set_size( 'sw-col-300' );
438
 
439
+ $full_content->add_option( $full_content_toggle );
440
 
441
+ $advanced->add_sections( [$gutenberg, $frame_buster, $full_content] );
442
 
443
+ $this->tabs->advanced = $advanced;
444
 
445
+ return $this;
446
+ }
447
 
448
 
449
+ /**
450
+ * Create the Display section and its child options.
451
+ *
452
+ * This tab offers genereral layout setings for the front end of the site.
453
+ *
454
+ * @since 3.0.0 | 01 MAR 2018 | Created
455
+ * @param void
456
+ * @return object $this The calling object for method chaining.
457
+ *
458
+ */
459
+ protected function init_display_tab() {
460
+ $display = new SWP_Options_Page_Tab( __( 'Display', 'social-warfare' ), 'display' );
461
  $display->set_priority( 10 );
462
 
463
+ $social_networks = new SWP_Options_Page_Section( __( 'Social Networks', 'social-warfare' ), 'social_networks' );
464
+ $social_networks->set_priority( 10 )
465
+ ->set_description( __( 'Drag & Drop to activate and order your share buttons.', 'social-warfare' ) )
466
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-social-networks/' );
467
 
468
+ //* These two sections are unique and need special HTML.
469
+ $active = new SWP_Option_Icons( __( 'Active', 'social-warfare' ), 'active' );
470
+ $active->do_active_icons()->set_priority( 10 );
471
 
472
+ $inactive = new SWP_Option_Icons( __( 'Inactive', 'social-warfare' ), 'inactive' );
473
+ $inactive->do_inactive_icons()->set_priority( 20 );
474
 
475
+ $social_networks->add_options( [$active, $inactive] );
476
 
477
+ $share_counts = new SWP_Options_Page_Section( __( 'Share Counts', 'social-warfare' ), 'share_counts' );
478
+ $share_counts->set_description( __( 'Use the toggles below to determine how to display your social proof.', 'social-warfare' ) )
479
+ ->set_priority( 20 )
480
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-share-counts/' );
481
 
482
+ //* toteseach => network_count
483
+ $network_shares = new SWP_Option_Toggle( __( 'Button Counts', 'social-warfare' ), 'network_shares' );
484
+ $network_shares->set_default( true )
485
+ ->set_priority( 10 )
486
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' );
487
 
488
+ //* totes => totals
489
+ $total_shares = new SWP_Option_Toggle( __( 'Total Counts', 'social-warfare' ), 'total_shares' );
490
+ $total_shares->set_default( true )
491
+ ->set_priority( 20 )
492
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' );
493
 
494
  //* swDecimals => decimals
495
+ $decimals = new SWP_Option_Select( __( 'Decimal Places', 'social-warfare' ), 'decimals' );
496
+ $decimals->set_choices( [
497
+ '0' => 'Zero',
498
+ '1' => 'One',
499
+ '2' => 'Two',
500
+ ])
501
+ ->set_default( '0' )
502
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
503
  ->set_priority( 30 );
504
 
505
+ //* swp_decimal_separator => decimal_separator
506
+ $decimal_separator = new SWP_Option_Select( __( 'Decimal Separator', 'social-warfare' ), 'decimal_separator' );
507
+ $decimal_separator->set_choices( [
508
+ 'period' => 'Period',
509
+ 'comma' => 'Comma',
510
+ ])
511
+ ->set_default( 'period' )
512
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
513
  ->set_priority( 50 );
514
 
515
+ //* swTotesFormat => totals_alignment
516
+ $totals_alignment = new SWP_Option_Select( __( 'Alignment', 'social-warfare' ), 'totals_alignment' );
517
+ $totals_alignment->set_choices( [
518
+ 'totals_right' => 'Right',
519
+ 'totals_left' => 'Left'
520
+ ])
521
+ ->set_default( 'totals_right' )
522
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
523
  ->set_priority( 60 );
524
 
525
+ $share_counts->add_options( [$network_shares, $total_shares, $decimals, $decimal_separator, $totals_alignment] );
526
 
527
+ $button_position = new SWP_Options_Page_Section( __( 'Position Share Buttons', 'social-warfare' ), 'button_position' );
528
+ $button_position->set_description( __( 'These settings let you decide where the share buttons should go for each post type.', 'social-warfare' ) )
529
+ ->set_priority( 40 )
530
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-display-tab-position-share-buttons/' );
531
 
532
+ $button_position_table = new SWP_Section_HTML( __( 'Position Table', 'social-warfare' ), 'button_position_table' );
533
+ // $button_position_table->do_button_position_table();
534
 
535
+ $button_position->add_option( $button_position_table );
536
 
537
 
538
 
539
+ $display->add_sections( [$social_networks, $share_counts, $button_position] );
540
 
541
+ $this->tabs->display = $display;
542
 
543
+ return $this;
544
+ }
545
 
546
 
547
+ /**
548
+ * Create the Registration section of the display tab.
549
+ *
550
+ * This section allows users to register activation keys for the premium plugin features.
551
+ *
552
+ * @since 3.0.0 | 01 MAR 2018 | Created
553
+ * @param void
554
+ * @return object $this The calling object for method chaining.
555
+ *
556
+ */
557
+ protected function init_registration_tab( $addons ) {
558
+ $registration = new SWP_Options_Page_Tab( __( 'Registration', 'social-warfare' ), 'registration' );
559
 
 
560
 
561
+ $registration->set_priority( 50 );
 
562
 
563
+ $wrap = new SWP_Options_Page_Section( __( 'Addon Registrations', 'social-warfare' ), 'addon_registrations' );
564
+ $wrap->set_priority( 10 );
 
565
 
566
+ foreach( $addons as $addon ) {
567
+ $wrap->add_option( $addon );
568
+ }
569
 
570
+ $registration->add_section( $wrap );
571
 
572
+ $this->tabs->registration = $registration;
 
573
 
574
+ return $this;
575
+ }
576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
577
 
578
+ /**
579
+ *
580
+ * @since 3.5.0 | 03 JAN 2018 | Created.
581
+ * @param void
582
+ * @hook filter | swp_authorizations | Array of network keys requesting oAuth access.
583
+ * @return array $authorization_options The qualified SWP_Options ready to render_HTML().
584
+ *
585
+ */
586
+ public function establish_authorizations() {
587
+ $authorizations = apply_filters( 'swp_authorizations', array() );
588
+ $authorization_options = array();
589
+
590
+ // Set up an 'Authorize' or 'Disconnect' button for social network oAuth.
591
+ foreach ( $authorizations as $network_key) {
592
+
593
+ $instance = new SWP_Auth_Helper ( $network_key );
594
+ $access_token = $instance->get_access_token();
595
+
596
+ // No access tokens exists for this network.
597
+ if ( false == $access_token ) {
598
+ $link = $instance->get_authorization_link();
599
+ $display_text = $instance->get_auth_button_text();
600
+ $classname = "swp-button swp-{$network_key} swp-authorization-button";
601
+ $option = new SWP_Option_Button( $display_text, $network_key, $classname, $link );
602
+
603
+ }
604
+
605
+ // Provide the option to revoke the connection.
606
+ else {
607
+ $link = $instance->get_revoke_access_url();
608
+ $display_text = 'Disconnect ' . ucfirst ( $network_key );
609
 
610
+ /**
611
+ * JavaScript needs to delete the tokens when this button is clicked.
612
+ * The SWP_Option_Button does not provide access for data-attributes,
613
+ * so we'll hack together a CSS classname to parse in JS.
614
+ *
615
+ */
616
+ $js_class = 'swp-network-'.$network_key;
617
+ $class = "button sw-navy-button swp-revoke-button $js_class";
618
+ $option = new SWP_Option_Button( $display_text, $network_key, $class, $link, true );
619
 
620
+ }
 
 
 
 
621
 
622
+ $option->set_size( 'sw-col-300' );
623
+ $authorization_options[$network_key] = $option;
 
 
 
624
 
625
+ }
 
 
 
 
626
 
 
627
 
628
+ return $authorization_options;
629
+ }
630
+
631
+
632
+ /**
633
+ * Create the Social Identity section of the display tab.
634
+ *
635
+ * This section allows the user to set social network handles and OG metadata.
636
+ *
637
+ * @since 3.0.0 | 01 MAR 2018 | Created
638
+ * @param void
639
+ * @return SWP_Options_Page $this The calling object for method chaining.
640
+ *
641
+ */
642
+ protected function init_social_tab() {
643
+ $social_identity = new SWP_Options_Page_Tab( __( 'Social Identity', 'social-warfare' ), 'social_identity' );
644
+ $social_identity->set_priority( 30 );
645
+
646
+ $sitewide_identity = new SWP_Options_Page_Section( 'Sitewide Identity', 'sitewide_identity' );
647
+ $sitewide_identity->set_description( __( 'If you would like to set sitewide defaults for your social identity, add them below.', 'social-warfare' ) )
648
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-social-identity-tab-sitewide-identity/' );
649
+
650
+ $twitter_id = new SWP_Option_Text( __( 'Twitter Username', 'social-warfare' ), 'twitter_id' );
651
+ $twitter_id->set_size( 'sw-col-300' )
652
+ ->set_priority( 10 )
653
+ ->set_default( '' );
654
+
655
+ //* pinterestID => pinterest_id
656
+ $pinterest_id = new SWP_Option_Text( __( 'Pinterest Username', 'social-warfare' ), 'pinterest_id' );
657
+ $pinterest_id->set_size( 'sw-col-300' )
658
+ ->set_priority( 20 )
659
+ ->set_default( '' );
660
+
661
+ //* facebookPublisherUrl => facebook_publisher_url
662
+ $facebook_publisher_url = new SWP_Option_Text( __( 'Facebook Page URL', 'social-warfare' ), 'facebook_publisher_url' );
663
+ $facebook_publisher_url->set_size( 'sw-col-300' )
664
+ ->set_priority( 30 )
665
+ ->set_default( '' );
666
+
667
+ //* facebookAppID => facebook_app_id
668
+ $facebook_app_id = new SWP_Option_Text( __( 'Facebook App ID', 'social-warfare' ), 'facebook_app_id' );
669
+ $facebook_app_id->set_size( 'sw-col-300' )
670
+ ->set_priority( 40 )
671
+ ->set_default( '' );
672
+
673
+ $sitewide_identity->add_options( [$twitter_id, $pinterest_id, $facebook_publisher_url, $facebook_app_id] );
674
+ $social_identity->add_section( $sitewide_identity );
675
+
676
+ $this->tabs->social_identity = $social_identity;
677
+
678
+ return $this;
679
+ }
680
+
681
+
682
+ /**
683
+ * Create the Styles section of the display tab.
684
+ *
685
+ * This section allows the user to refine the look, feel, and placement of buttons.
686
+ *
687
+ * @since 3.0.0 | 01 MAR 2018 | Created
688
+ * @param void
689
+ * @return SWP_Options_Page $this The calling object for method chaining.
690
+ *
691
+ */
692
+ protected function init_styles_tab() {
693
+ $styles = new SWP_Options_Page_Tab( __( 'Styles' , 'social-warfare' ) , 'styles' );
694
+ $styles->set_priority( 20 );
695
 
696
+ $buttons_preview = new SWP_Section_HTML( __( 'Buttons Preview', 'social-warfare' ) );
697
+ $buttons_preview->set_priority( 1000 )
698
+ ->do_buttons_preview();
699
 
 
 
700
 
701
+ $buttons_preview_section = new SWP_Options_Page_Section( __( 'Buttons Preview', 'social-warfare' ), 'buttons_preview_section' );
702
+ $buttons_preview_section->add_option( $buttons_preview );
703
 
704
+ $styles->add_section( $buttons_preview_section );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
705
  //
706
  //
707
+ // $total_counts = new SWP_Options_Page_Section( __( 'Total Counts', 'social-warfare' ), 'total_counts' );
708
+ // $total_counts->set_description( __( 'Customize how the "Total Shares" section of your share buttons look.', 'social-warfare' ) )
709
+ // ->set_priority( 20 )
710
+ // ->set_information_link( 'https://warfareplugins.com/support/options-page-styles-tab-total-counts/' );
711
+
712
+
713
+
714
+ // $total_counts->add_options( [$decimals, $decimal_separator, $totals_alignment] );
715
+
716
+ $floating_share_buttons = new SWP_Options_Page_Section( __( 'Floating Share Buttons', 'social-warfare' ), 'floating_share_buttons' );
717
+ $floating_share_buttons->set_description( __( 'If you would like to activate floating share buttons, turn this on.', 'social-warfare' ) )
718
+ ->set_priority( 30 )
719
+ ->set_information_link( 'https://warfareplugins.com/support/options-page-styles-tab-floating-share-buttons/' );
720
+
721
+ //* float => floating_panel
722
+ $floating_panel = new SWP_Option_Toggle( __( 'Floating Share Buttons', 'social-warfare' ), 'floating_panel' );
723
+ $floating_panel->set_default( false )
724
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
725
+ ->set_priority( 10 );
726
+
727
+ //* floatOption => float_location
728
+ $float_location = new SWP_Option_Select( __( 'Float Position', 'social-warfare' ), 'float_location' );
729
+ $float_location->set_choices( [
730
+ 'top' => __( 'Top of the Page' , 'social-warfare' ),
731
+ 'bottom' => __( 'Bottom of the Page' , 'social-warfare' ),
732
+ 'left' => __( 'On the left side of the page' , 'social-warfare' ),
733
+ 'right' => __( 'On the right side of the page' , 'social-warfare' )
734
+ ] )
735
+ ->set_default( 'bottom' )
736
+ ->set_priority( 20 )
737
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
738
+ ->set_dependency( 'floating_panel', [true] );
739
+
740
+ //* floatBgColor => float_background_color
741
+ $float_background_color = new SWP_Option_Text( __( 'Background Color', 'social-warfare' ), 'float_background_color' );
742
+ $float_background_color->set_default( '#ffffff' )
743
+ ->set_priority( 25 )
744
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
745
+ ->set_dependency( 'float_location', ['top', 'bottom'] );
746
+
747
+ //* swp_float_scr_sz => float_screen_width
748
+ $float_screen_width = new SWP_Option_Text( __( 'Minimum Screen Width', 'social-warfare' ), 'float_screen_width' );
749
+ $float_screen_width->set_default( '1100' )
750
+ ->set_priority( 30 )
751
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit' )
752
+ ->set_dependency( 'float_location', ['left', 'right'] );
753
+
754
+ //* sideReveal => transition
755
+ $float_transition = new SWP_Option_Select( __( 'Transition', 'social-warfare' ), 'transition' );
756
+ $float_transition->set_priority( 40 )
757
+ ->set_choices( [
758
+ 'slide' => __( 'Slide In / Slide Out' , 'social-warfare' ) ,
759
+ 'fade' => __( 'Fade In / Fade Out' , 'social-warfare' )
760
+ ] )
761
+ ->set_default( 'slide' )
762
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
763
+ ->set_dependency( 'float_location', ['left', 'right'] );
764
+
765
+ $color_choices = $this::get_color_choices_array();
766
+
767
+ $float_before_content = new SWP_Option_Toggle( __( 'Float Before Content', 'social-warfare' ), 'float_before_content');
768
+ $float_before_content->set_default( false )
769
+ ->set_priority( 140 )
770
+ ->set_size( 'sw-col-460', 'sw-col-460 sw-fit')
771
+ ->set_dependency( 'floating_panel', true );
772
+
773
+ $floating_share_buttons->add_options( [$floating_panel, $float_location, $float_transition,
774
+ $float_screen_width, $float_background_color, $float_before_content] );
775
+
776
+
777
+
778
+ $styles->add_sections( [/*$total_counts,*/ $floating_share_buttons] );
779
+
780
+ $this->tabs->styles = $styles;
781
+
782
+ return $this;
783
+ }
784
+
785
+
786
+ /**
787
+ * Creates the HTML for the admin top menu (Logo, tabs, and save button).
788
+ *
789
+ * @since 3.0.0 | 01 MAR 2018 | Created
790
+ * @param void
791
+ * @return string $html The fully qualified HTML for the menu.
792
+ *
793
+ */
794
+ private function create_menu( $addons ) {
795
+ //* Open the admin top menu wrapper.
796
+ $html = '<div class="sw-header-wrapper">';
797
+ $html .= '<div class="sw-grid sw-col-940 sw-top-menu" sw-registered="' . $this->is_registered . '">';
798
+
799
+ //* Menu wrapper and tabs.
800
+ $html .= '<div class="sw-grid sw-col-700">';
801
+ $html .= '<img class="sw-header-logo" src="' . SWP_PLUGIN_URL . '/assets/images/admin-options-page/social-warfare-light.png" />';
802
+ $html .= '<img class="sw-header-logo-pro" src="' . SWP_PLUGIN_URL . '/assets/images/admin-options-page/social-warfare-pro-light.png" />';
803
+ $html .= '<ul class="sw-header-menu">';
804
+
805
+ $tab_map = $this->sort_by_priority( $this->tabs );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
806
 
807
+ $activated = true;
 
 
 
808
 
809
+ foreach( $tab_map as $prioritized_tab) {
810
+ foreach( $this->tabs as $index => $tab ) {
811
 
812
+ if ( $prioritized_tab['key'] === $tab->key ) :
 
813
 
814
+ //* Skip the registration tab if there are no addons.
815
+ if ( 'registration' == $tab->key && 0 === count( $addons ) ) :
816
+ continue;
817
+ endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
818
 
819
+ $active = $activated ? 'sw-active-tab' : '';
820
+ $activated = false;
821
 
822
+ $html .= '<li class="' . $active . '">';
823
+ $html .= '<a class="sw-tab-selector" href="#" data-link="swp_' . $tab->link . '">';
824
+ $html .= '<span>' . $tab->name . '</span>';
825
+ $html .= '</a>';
826
+ $html .= '</li>';
827
+
828
+ endif;
829
+ }
830
+ }
831
+
832
+ $html .= '</ul>';
833
+ $html .= '</div>';
834
+
835
+ //* "Save Changes" button.
836
+ $html .= '<div class="sw-grid sw-col-220 sw-fit">';
837
+ $html .= '<a href="#" class="button sw-navy-button sw-save-settings">'. __( 'Save Changes' , 'social-warfare' ) .'</a>';
838
+ $html .= '</div>';
839
+
840
+ $html .= '<div class="sw-clearfix"></div>';
841
+
842
+ $html .= '</div>';
843
+ $html .= '</div>';
844
+
845
+ return $html;
846
+ }
847
+
848
+
849
+ /**
850
+ * Renders HTML for each tab and assembles for outputting.
851
+ *
852
+ * Note: We have to utilize a $map varaible for this and each
853
+ * other render() method. This is because the data are all
854
+ * stored as objects, when can not be iterated by index,
855
+ * only by key. Since they keys are arbitrary (for a plugin
856
+ * or addon, for example), this is no good, hence the map.
857
+ *
858
+ * @since 3.0.0 | 01 MAR 2018 | Created
859
+ * @param void
860
+ * @return string $container The Admin tab HTML container.
861
+ *
862
+ */
863
+ private function create_tabs( $active_addons, $registered_addons ) {
864
+ $sidebar = new SWP_Section_HTML( 'Sidebar' );
865
+ $tab_map = $this->sort_by_priority( $this->tabs );
866
+ $registered = false;
867
+ $notices = apply_filters( 'swp_admin_notices', '' );
868
+
869
+ $container = '<div class="sw-admin-wrapper" sw-registered="'. $this->is_registered .'" swp-addons="' . $active_addons . '" swp-registrations="' . $registered_addons . '">';
870
+ $container .= '<div class="swp-notice-wrapper">';
871
+ $container .= $notices;
872
+ $container .= '</div>';
873
+
874
+ $container .= '<form class="sw-admin-settings-form">';
875
+ $container .= '<div class="sw-tabs-container sw-grid sw-col-700">';
876
+
877
+ foreach( $tab_map as $prioritized_tab ) {
878
+ $key = $prioritized_tab['key'];
879
+
880
+ foreach( $this->tabs as $tab ) {
881
+ if ( $key === $tab->key ) :
882
+
883
+ if ( 'registration' === $key ) :
884
+ $container .= $tab->render_HTML( $registered_addons );
885
+ continue;
886
+ endif;
887
+
888
+ $container .= $tab->render_HTML();
889
+
890
+ endif;
891
+ }
892
+ }
893
+
894
+ $container .= '</div>';
895
+ $container .= '</form>';
896
+ $container .= $sidebar->do_admin_sidebar();
897
+
898
+ $container .= '</div>';
899
+
900
+ return $container;
901
+ }
902
+
903
+
904
+ /**
905
+ * Called when a 'Revoke Access' button is clicked on the Social Identity tab.
906
+ *
907
+ * @since 3.5.0 | 25 JAN 2019 | Created.
908
+ * @param void
909
+ * @return void
910
+ *
911
+ */
912
+ public function delete_network_tokens() {
913
+ $network = $_POST['network'];
914
+ $response = array('ok' => false);
915
+ $response['ok'] = SWP_Credential_Helper::delete_token($network);
916
+ SWP_Credential_Helper::delete_token($network, 'access_secret');
917
+
918
+ if ( $response['ok'] ) {
919
+ $response['url'] = SWP_Utility::settings_page_redirect();
920
+ }
921
+
922
+ die(json_encode($response));
923
+
924
+ }
925
  }
lib/options/SWP_Options_Page_Section.php CHANGED
@@ -174,7 +174,9 @@ class SWP_Options_Page_Section extends SWP_Option_Abstract {
174
  $html .= '>';
175
 
176
  $html .= '<h2>';
177
- $html .= '<a target="_blank" class="swp_support_link" href="'. $this->link .'" title="Click here to learn more about these options.">i</a>';
 
 
178
  $html .= $this->name . '</h2>';
179
 
180
  $html .= '</div>';
174
  $html .= '>';
175
 
176
  $html .= '<h2>';
177
+ if( !empty( $this->link ) ) {
178
+ $html .= '<a target="_blank" class="swp_support_link" href="'. $this->link .'" title="Click here to learn more about these options.">i</a>';
179
+ }
180
  $html .= $this->name . '</h2>';
181
 
182
  $html .= '</div>';
lib/options/SWP_Section_HTML.php CHANGED
@@ -16,62 +16,62 @@
16
  class SWP_Section_HTML extends SWP_Option {
17
 
18
 
19
- /**
20
- * HTML
21
- *
22
- * The non-conformant markup this object represents. Most of the sections and
23
- * options can be created using one of the existing SWP_{Item} classes.
24
- * Sometimes we need something that does not fit those boxes. This class
25
- * provides native methods for a few of those cases, and an add_HTML() method
26
- * for everything else.
27
- *
28
- * @var string $html
29
- *
30
- */
31
- public $html = '';
32
-
33
-
34
- /**
35
- * The required constructor for PHP classes.
36
- *
37
- * @since 3.0.0 | 01 MAR 2018 | Created
38
- * @param string $name Required: An arbitrary name, except for do_bitly_authentication_button
39
- * @param string $key Optional: If the object requires access beyond itself,
40
- * pass it a key. Otherwise $name will be used.
41
- * @return void
42
- * @see $this->do_bitly_authentication_button()
43
- *
44
- */
45
- public function __construct( $name, $key = null ) {
46
- $key = $key === null ? $name : $key;
47
-
48
- parent::__construct( $name, $key );
49
-
50
- if (empty( $this->default ) ) :
51
- $this->set_default( ' ');
52
- endif;
53
-
54
- $this->html = '';
55
- }
56
-
57
-
58
- /**
59
- * Allows custom HTML to be added.
60
- *
61
- * @since 3.0.0 | 01 MAR 2018 | Created
62
- * @param string $html Required: The fully qualified, ready-to-print HTML to display.
63
- * @return object $this This object for method chaining.
64
- *
65
- */
66
- public function add_HTML( $html ) {
67
- if ( !is_string( $html) ) :
68
- $this->_throw( 'This requires a string of HTML!' );
69
- endif;
70
-
71
- $this->html .= $html;
72
-
73
- return $this;
74
- }
75
 
76
 
77
  /**
@@ -82,28 +82,28 @@ class SWP_Section_HTML extends SWP_Option {
82
  * @return string The compiled HTML returned as a string.
83
  *
84
  */
85
- public function do_admin_sidebar() {
86
- $status_title = __( 'Press Ctrl+C to Copy this information.' , 'social-warfare' );
87
 
88
- //* This is an array of fully qualified HTML strings, ready to print.
89
- $cache = get_option( 'swp_json_cache' );
90
- $html = '<div class="sw-admin-sidebar sw-grid sw-col-220 sw-fit">';
91
- $html .= '<div id="swp-admin-sidebar">';
92
 
93
- if ( isset( $cache['sidebar'] ) ) :
94
- foreach( $cache['sidebar'] as $component ) {
95
- $component = html_entity_decode ( $component );
96
- $html .= html_entity_decode( $component);
97
- }
98
- endif;
99
 
100
- $html .= '<div class="system-status-wrapper">';
101
- $html .= '<h4><?= $status_title ?></h4>';
102
- $html .= '<div class="system-status-container"> '. $this->system_status() . '</div>';
103
- $html .= '</div></div>';
104
 
105
- return $this->html = $html;
106
- }
107
 
108
 
109
  /**
@@ -114,59 +114,59 @@ class SWP_Section_HTML extends SWP_Option {
114
  * @return string The compiled html returned as a string.
115
  *
116
  */
117
- private function system_status() {
118
- /**
119
- * System Status Generator
120
- */
121
- if ( ! function_exists( 'get_plugins' ) ) {
122
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
123
- }
124
-
125
- $plugins = get_plugins();
126
- $pluginList = '';
127
-
128
- foreach ( $plugins as $plugin ) :
129
- $pluginList .= '<tr><td><b>' . $plugin['Name'] . '</b></td><td>' . $plugin['Version'] . '</td></tr>';
130
- endforeach;
131
-
132
- if ( function_exists( 'fsockopen' ) ) :
133
- $fsockopen = '<span style="color:green;">Enabled</span>';
134
- else :
135
- $fsockopen = '<span style="color:red;">Disabled</span>';
136
- endif;
137
-
138
- if ( function_exists( 'curl_version' ) ) :
139
- $curl_version = curl_version();
140
- $curl_status = '<span style="color:green;">Enabled: v' . $curl_version['version'] . '</span>';
141
- else :
142
- $curl_status = '<span style="color:red;">Disabled</span>';
143
- endif;
144
-
145
- $theme = wp_get_theme();
146
-
147
- $system_status = '
148
- <table style="width:100%;">
149
- <tr><td><h2>Environment Statuses</h2></td><td></td></tr>
150
- <tr><td><b>Home URL</b></td><td>' . get_home_url() . '</td></tr>
151
- <tr><td><b>Site URL</b></td><td>' . get_site_url() . '</td></tr>
152
- <tr><td><b>WordPress Version</b></td><td>' . get_bloginfo( 'version' ) . '</td></tr>
153
- <tr><td><b>PHP Version</b></td><td>' . phpversion() . '</td></tr>
154
- <tr><td><b>WP Memory Limit</b></td><td>' . WP_MEMORY_LIMIT . '</td></tr>
155
- <tr><td><b>Social Warfare Version</b></td><td>' . SWP_VERSION . '</td></tr>
156
- <tr><td><h2>Connection Statuses</h2></td><td></td></tr>
157
- <tr><td><b>fsockopen</b></td><td>' . $fsockopen . '</td></tr>
158
- <tr><td><b>cURL</b></td><td>' . $curl_status . '</td></tr>
159
- <tr><td><h2>Plugin Statuses</h2></td><td></td></tr>
160
- <tr><td><b>Theme Name</b></td><td>' . $theme['Name'] . '</td></tr>
161
- <tr><td><b>Theme Version</b></td><td>' . $theme['Version'] . '</td></tr>
162
- <tr><td><b>Active Plugins</b></td><td></td></tr>
163
- <tr><td><b>Number of Active Plugins</b></td><td>' . count( $plugins ) . '</td></tr>
164
- ' . $pluginList . '
165
- </table>
166
- ';
167
-
168
- return $system_status;
169
- }
170
 
171
 
172
  /**
@@ -177,20 +177,20 @@ class SWP_Section_HTML extends SWP_Option {
177
  * @return string The compiled html returned as a string.
178
  *
179
  */
180
- public function do_tweet_count_registration() {
181
- // Check for a default value
182
- if ( true == SWP_Utility::get_option( 'twitter_shares' ) ) :
183
- $status = 'on';
184
- $selected = 'checked';
185
- else:
186
- $status = 'off';
187
- $selected = '';
188
- endif;
189
 
190
- $this->default = false;
191
- $this->key = 'twitter_shares';
192
 
193
- $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ' . $this->render_dependency() . '>';
194
 
195
  // Begin Registration Wrapper
196
  $html .= '<div class="tweet-count-wrapper" registration="false">';
@@ -217,42 +217,42 @@ class SWP_Section_HTML extends SWP_Option {
217
 
218
  $html .= '</div>';
219
 
220
- $this->html = $html;
221
 
222
- return $html;
223
- }
224
 
225
 
226
- /**
227
- * Render the Bitly connection button on the Advanced tab.
228
- *
229
  * @see https://dev.bitly.com/authentication.html
230
  * @since 3.0.0 | 01 MAR 2018 | Created
231
- * @param void
232
- * @return object $this The calling instance, for method chaining.
233
- *
234
- */
235
- public function do_bitly_authentication_button() {
236
 
237
 
238
- if ( SWP_Utility::get_option('bitly_access_token') ) {
239
 
240
  //* Display a confirmation button. On click takes them to bitly settings page.
241
- $text = __( 'Connected', 'social-warfare' );
242
  $text .= " for:<br/>" . SWP_Utility::get_option( 'bitly_access_login' );
243
- $color = 'sw-green-button';
244
  $link = 'https://app.bitly.com/bitlinks/?actions=accountMain&actions=settings&actions=security';
245
  $target = "_blank";
246
 
247
- } else {
248
 
249
  //* Display the button, which takes them to a Bitly auth page.
250
- $text = __( 'Authenticate', 'social-warfare' );
251
- $color = 'sw-navy-button';
252
  $target = "";
253
 
254
  //* The base URL for authorizing SW to work on a user's Bitly account.
255
- $link = "https://bitly.com/oauth/authorize";
256
 
257
  //* client_id: The SWP application id, assigned by Bitly.
258
  $link .= "?client_id=96c9b292c5503211b68cf4ab53f6e2f4b6d0defb";
@@ -262,386 +262,387 @@ class SWP_Section_HTML extends SWP_Option {
262
 
263
  //* redirect_uri: The page to which a user is redirected upon successfully authenticating.
264
  $link .= "&redirect_uri=https://warfareplugins.com/bitly_oauth.php";
265
- }
266
-
267
- ob_start() ?>
268
-
269
- <div class="sw-grid sw-col-940 sw-fit sw-option-container <?= $this->key ?> '_wrapper" data-dep="bitly_authentication" data-dep_val="[true]">
270
- <div class="sw-grid sw-col-300">
271
- <p class="sw-authenticate-label"><?php __( 'Bitly Link Shortening', 'social-warfare' ) ?></p>
272
- </div>
273
- <div class="sw-grid sw-col-300">
274
- <a target="<?= $target ?>" class="button <?= $color ?>" href="<?= $link ?>"><?= $text ?></a>
275
- </div>
276
- <div class="sw-grid sw-col-300 sw-fit"></div>
277
- </div>
278
-
279
- <?php
280
-
281
- $this->html = ob_get_contents();
282
- ob_end_clean();
283
-
284
- return $this;
285
- }
286
-
287
-
288
- /**
289
- * The buttons preview as shown on the Display tab.
290
- *
291
- * @since 3.0.0 | 01 MAR 2018 | Created
292
- * @param void
293
- * @return object $this The calling instance, for method chaining.
294
- *
295
- */
296
- public function do_buttons_preview() {
297
- ob_start() ?>
298
-
299
- <div class="swp_social_panel swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_medium_gray" data-position="both" data-count="6" data-floatcolor="#ffffff" data-scale="1" data-align="full_width">
300
- <div class="nc_tweetContainer swp_google_plus" data-id="2">
301
- <a target="_blank" href="https://plus.google.com/share?url=http%3A%2F%2Fwfa.re%2F1W28voz" data-link="https://plus.google.com/share?url=http%3A%2F%2Fwfa.re%2F1W28voz" class="nc_tweet">
302
- <span class="iconFiller">
303
- <span class="spaceManWilly">
304
- <i class="sw swp_google_plus_icon"></i>
305
- <span class="swp_share"><?php __( '+1','social-warfare' ) ?></span>
306
- </span>
307
- </span>
308
- <span class="swp_count">1.2K</span>
309
- </a>
310
- </div>
311
- <div class="nc_tweetContainer swp_twitter" data-id="3">
312
- <a href="https://twitter.com/share?original_referer=/&text=Ultimate+Social+Share+%23WordPress+plugin%21+Beautiful%2C+super+fast+%26+more+http%3A%2F%2Fwarfareplugins.com+pic.twitter.com%2FA2zcCJwZtO&url=/&via=WarfarePlugins" data-link="https://twitter.com/share?original_referer=/&text=Ultimate+Social+Share+%23WordPress+plugin%21+Beautiful%2C+super+fast+%26+more+http%3A%2F%2Fwarfareplugins.com+pic.twitter.com%2FA2zcCJwZtO&url=/&via=WarfarePlugins" class="nc_tweet">
313
- <span class="iconFiller">
314
- <span class="spaceManWilly">
315
- <i class="sw swp_twitter_icon"></i>
316
- <span class="swp_share"><?php __( 'Tweet','social-warfare' ) ?></span>
317
- </span>
318
- </span>
319
- <span class="swp_count">280</span>
320
- </a>
321
- </div>
322
- <div class="nc_tweetContainer swp_pinterest" data-id="6">
323
- <a data-link="https://pinterest.com/pin/create/button/?url=https://warfareplugins.com/&media=https%3A%2F%2Fwarfareplugins.com%2Fwp-content%2Fuploads%2Fget-content-shared-735x1102.jpg&description=Customize+your+Pinterest+sharing+options%2C+create+easy+%22click+to+tweet%22+buttons+within+your+blog+posts%2C+beautiful+sharing+buttons+and+more.+Social+Warfare+is+the+ultimate+social+sharing+arsenal+for+WordPress%21" class="nc_tweet" data-count="0">
324
- <span class="iconFiller">
325
- <span class="spaceManWilly">
326
- <i class="sw swp_pinterest_icon"></i>
327
- <span class="swp_share"><?php __( 'Pin','social-warfare' ) ?></span>
328
- </span>
329
- </span>
330
- <span class="swp_count">104</span>
331
- </a>
332
- </div>
333
- <div class="nc_tweetContainer swp_facebook" data-id="4">
334
- <a target="_blank" href="https://www.facebook.com/share.php?u=http%3A%2F%2Fwfa.re%2F1W28vov" data-link="https://www.facebook.com/share.php?u=http%3A%2F%2Fwfa.re%2F1W28vov" class="nc_tweet">
335
- <span class="iconFiller">
336
- <span class="spaceManWilly">
337
- <i class="sw swp_facebook_icon"></i>
338
- <span class="swp_share"><?php __( 'Share','social-warfare' ) ?></span>
339
- </span>
340
- </span>
341
- <span class="swp_count">157</span>
342
- </a>
343
- </div>
344
- <div class="nc_tweetContainer swp_linkedin" data-id="5">
345
- <a target="_blank" href="https://www.linkedin.com/cws/share?url=http%3A%2F%2Fwfa.re%2F1W28twH" data-link="https://www.linkedin.com/cws/share?url=http%3A%2F%2Fwfa.re%2F1W28twH" class="nc_tweet">
346
- <span class="iconFiller">
347
- <span class="spaceManWilly">
348
- <i class="sw swp_linkedin_icon"></i>
349
- <span class="swp_share"><?php __( 'Share','social-warfare' ) ?></span>
350
- </span>
351
- </span>
352
- <span class="swp_count">51</span>
353
- </a>
354
- </div>
355
- <div class="nc_tweetContainer total_shares total_sharesalt" data-id="6" >
356
- <span class="swp_count">
357
- <span class="swp_label">Shares</span> 1.8K
358
- </span>
359
- </div>
360
- </div>
361
-
362
- <?php
363
-
364
- $this->html = ob_get_contents();
365
- ob_end_clean();
366
-
367
- return $this;
368
- }
369
-
370
-
371
- /**
372
- * Renders the three column table on the Display tab.
373
- *
374
- * @since 3.0.0 | 01 MAR 2018 | Created
375
- * @since 3.0.4 | 09 MAY 2018 | Added check for is_numeric to avoid throwing errors.
376
- * @since 3.0.5 | 09 MAY 2018 | Switched to using an iterator. Many post types are
377
- * being returned with associative keys, not numeric ones.
378
- * @param void
379
- * @return object $this The calling instance, for method chaining.
380
- *
381
- */
382
- public function do_button_position_table() {
383
- $post_types = SWP_Utility::get_post_types();
384
-
385
- $panel_locations = [
386
- 'above' => __( 'Above the Content', 'social-warfare' ),
387
- 'below' => __( 'Below the Content', 'social-warfare' ),
388
- 'both' => __( 'Both Above and Below the Content', 'social-warfare' ),
389
- 'none' => __( 'None/Manual Placement', 'social-warfare' )
390
- ];
391
-
392
- $float_locations = [
393
- 'on' => __( 'On','social_warfare'),
394
- 'off' => __( 'Off', 'social_warfare')
395
- ];
396
-
397
- $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container" ';
398
- $html .= $this->render_dependency();
399
- $html .= $this->render_premium();
400
- $html .= '>';
401
-
402
- $html .= '<div class="sw-grid sw-col-300">';
403
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Post Type' ,'social-warfare' ) . '</p>';
404
- $html .= '</div>';
405
- $html .= '<div class="sw-grid sw-col-300">';
406
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Static Buttons' ,'social-warfare' ) . '</p>';
407
- $html .= '</div>';
408
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
409
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Floating Buttons (If Activated)' ,'social-warfare' ) . '</p>';
410
- $html .= '</div>';
411
-
412
- //* Some indices are numeric, others are strings.
413
- $i = 0;
414
- foreach( $post_types as $index => $post ) {
415
- $i++;
416
- $priority = $i * 10;
417
-
418
- $html .= '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $post . '_wrapper">';
419
-
420
- $html .= '<div class="sw-grid sw-col-300">';
421
- $html .= '<p class="sw-input-label">' . str_replace('_', ' & ', ucfirst($post)) . '</p>';
422
- $html .= '</div>';
423
-
424
- $html .= '<div class="sw-grid sw-col-300">';
425
-
426
- $panel = new SWP_Option_Select( 'Panel '. ucfirst( $post ), 'location_' . $post );
427
- $panel->set_priority( $priority )
428
- ->set_size( 'sw-col-300' )
429
- ->set_choices( $panel_locations )
430
- ->set_default( 'both' );
431
-
432
- $html .= $panel->render_HTML_element();
433
-
434
- $html .= '</div>';
435
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
436
-
437
- if ( $post !== 'home' && $post !== 'archive_categories' ) :
438
-
439
- $float = new SWP_Option_Select( 'Float ' . ucfirst( $post ), 'float_location_' . $post );
440
- $float->set_priority( $priority + 5 )
441
- ->set_size( 'sw-col-300' )
442
- ->set_choices( $float_locations )
443
- ->set_default( 'on' );
444
-
445
- $html .= $float->render_HTML_element();
446
-
447
- endif;
448
-
449
- $html .= '</div>';
450
-
451
- $html .= '</div>';
452
-
453
- }
454
-
455
- $html .= '</div>';
456
-
457
- $this->html = $html;
458
 
459
- return $this;
460
- }
461
 
 
 
 
 
 
 
 
 
 
462
 
463
- /**
464
- * Creates the Click To Tweet preview for the Styles tab.
465
- *
466
- * @since 3.0.0 | 01 MAR 2018 | Created
467
- * @param void
468
- * @return object $this The calling instance, for method chaining.
469
- *
470
- */
471
- public function do_ctt_preview() {
472
- //* Pull these variables out just to make the $html string easier to read.
473
- $link = "https://twitter.com/share?text=We+couldn%27t+find+one+social+sharing+plugin+that+met+all+of+our+needs%2C+so+we+built+it+ourselves.&amp;url=https://warfareplugins.com&amp;via=warfareplugins";
474
- $data_link = "https://twitter.com/share?text=We+couldn%27t+find+one+social+sharing+plugin+that+met+all+of+our+needs%2C+so+we+built+it+ourselves.&amp;url=https://wfa.re/1PtqdNM&amp;via=WarfarePlugins";
475
- $text = "We couldn't find one social sharing plugin that met all of our needs, so we built it ourselves.";
476
 
477
- $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper">';
478
- $html .= '<a class="swp_CTT style1" data-style="style1" href="' . $link . '" data-link="' . $data_link . '" target="_blank">';
479
- $html .= '<span class="sw-click-to-tweet">';
480
- $html .= '<span class="sw-ctt-text">' . $text . '</span>';
481
- $html .= '<span class="sw-ctt-btn">Click To Tweet';
482
- $html .= '<i class="sw swp_twitter_icon"></i>';
483
- $html .= '</span>';
484
- $html .= '</span>';
485
- $html .= '</a>';
486
- $html .= '</div>';
487
 
 
 
488
 
489
- $this->html = $html;
490
 
491
- return $this;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492
 
493
- }
494
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
 
496
- /**
497
- * Renders the three column table on the Display tab.
498
- *
499
- * @since 3.0.0 | 01 MAR 2018 | Created
500
- * @param void
501
- * @return object $this The calling instance, for method chaining.
502
- *
503
- */
504
- public function do_yummly_display() {
505
- $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ';
506
- $html .= $this->render_dependency();
507
- $html .= $this->render_premium();
508
- $html .= '>';
509
 
 
 
 
 
 
510
 
511
- //* Table headers
512
- $html .= '<div class="sw-grid sw-col-300">';
513
- $html .= '<p class="sw-select-label sw-short sw-no-padding"></p>';
514
- $html .= '</div>';
515
 
516
- $html .= '<div class="sw-grid sw-col-300">';
517
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Choose Category', 'social-warfare' ) . '</p>';
518
- $html .= '</div>';
519
 
520
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
521
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Choose Tag', 'social-warfare' ) . '</p>';
522
- $html .= '</div>';
523
 
524
- $yummly_categories = new SWP_Option_Text( __( 'Yummly Categories', 'social-warfare' ), 'yummly_categories' );
525
- $categories_html = $yummly_categories->set_priority( 10 )
526
- ->set_default( '' )
527
- ->render_HTML_element();
 
528
 
529
- $yummly_tags = new SWP_Option_Text( __( 'Yummly Tags', 'social-warfare'), 'yummly_tags' );
530
- $tags_html = $yummly_tags->set_priority( 10 )
531
- ->set_default( '' )
532
- ->render_HTML_element();
533
 
534
- //* Table body
535
- $html .= '<div class="sw-grid sw-col-300">';
536
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Yummly Terms' ,'social-warfare' ) . '</p>';
537
- $html .= '</div>';
538
 
539
- $html .= '<div class="sw-grid sw-col-300">';
540
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . $categories_html . '</p>';
541
- $html .= '</div>';
542
 
543
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
544
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . $tags_html . '</p>';
545
- $html .= '</div>';
 
 
546
 
547
- $html .= '</div>';
548
 
549
- $this->html = $html;
550
 
551
- return $this;
552
- }
553
 
 
554
 
555
- public function do_bitly_start_date() {
556
- $post_types = SWP_Utility::get_post_types();
557
 
558
- $booleans = [
559
- 'on' => __( 'On','social_warfare'),
560
- 'off' => __( 'Off', 'social_warfare')
561
- ];
562
-
563
- $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ';
564
- $html .= $this->render_dependency();
565
- $html .= $this->render_premium();
566
- $html .= '>';
567
-
568
- $start_date = SWP_Utility::get_option( 'bitly_start_date' );
569
 
570
- if ( !$start_date ) {
571
- // die(var_dump($start_date));
572
- $start_date = '';
573
- }
574
 
 
 
575
 
576
- $html .= '<p class="sw-subtitle sw-col-620" style="margin: 5px 0 15px">I would like to generate bitly links for content created <b>on or after</b>&nbsp;';
577
- $html .= '<input
578
- style="float: right;"
579
- type="text"
580
- id="' . $this->key . '"
581
- name="' . $this->key . '"
582
- value="' . $start_date . '"
583
- />
584
- </p>';
585
- $html .= '<p class="sw-subtitle sw-col-620">Please enter start the date in the following format: <code style="float: right;">YYYY-MM-DD</code></p>';
586
 
587
- $html .= '<div class="sw-grid sw-col-300">';
588
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Post Type' ,'social-warfare' ) . '</p>';
589
- $html .= '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
590
 
591
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
592
- $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Create Bitly Links?' ,'social-warfare' ) . '</p>';
593
- $html .= '</div>';
594
 
595
- //* Some indices are numeric, others are strings.
596
- $i = 0;
597
- foreach( $post_types as $index => $post ) {
598
- $i++;
599
- $priority = $i * 10;
600
 
601
- $html .= '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $post . '_wrapper">';
602
 
603
- $html .= '<div class="sw-grid sw-col-300">';
604
- $html .= '<p class="sw-input-label">' . str_replace('_', ' & ', ucfirst($post)) . '</p>';
605
- $html .= '</div>';
606
 
607
- $html .= '<div class="sw-grid sw-col-300 sw-fit">';
608
 
609
- $float = new SWP_Option_Select( ucfirst( $post ), 'bitly_links_' . $post );
610
- $float->set_priority( $priority )
611
- ->set_size( 'sw-col-300' )
612
- ->set_choices( $booleans )
613
- ->set_default( 'on' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
614
 
615
- $html .= $float->render_HTML_element();
 
616
 
617
- $html .= '</div>';
 
 
 
618
 
619
- $html .= '</div>';
 
 
 
620
 
621
- }
622
 
623
- $html .= '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
 
625
- $this->html = $html;
 
 
 
 
626
 
627
- return $this;
628
 
629
- }
 
 
630
 
 
631
 
632
- /**
633
- * The rendering method common to all classes.
634
- *
635
- * Unlike the other option classes, this class creates its HTML and does not immediately
636
- * return it. Instead, it stores the HTML inside itself and waits for the render_html
637
- * method to be called.
638
- *
639
- * @since 3.0.0 | 01 MAR 2018 | Created
640
- * @param void
641
- * @return string The object's saved HTML.
642
- *
643
- */
644
- public function render_HTML() {
645
- return $this->html;
646
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
647
  }
16
  class SWP_Section_HTML extends SWP_Option {
17
 
18
 
19
+ /**
20
+ * HTML
21
+ *
22
+ * The non-conformant markup this object represents. Most of the sections and
23
+ * options can be created using one of the existing SWP_{Item} classes.
24
+ * Sometimes we need something that does not fit those boxes. This class
25
+ * provides native methods for a few of those cases, and an add_HTML() method
26
+ * for everything else.
27
+ *
28
+ * @var string $html
29
+ *
30
+ */
31
+ public $html = '';
32
+
33
+
34
+ /**
35
+ * The required constructor for PHP classes.
36
+ *
37
+ * @since 3.0.0 | 01 MAR 2018 | Created
38
+ * @param string $name Required: An arbitrary name, except for do_bitly_authentication_button
39
+ * @param string $key Optional: If the object requires access beyond itself,
40
+ * pass it a key. Otherwise $name will be used.
41
+ * @return void
42
+ * @see $this->do_bitly_authentication_button()
43
+ *
44
+ */
45
+ public function __construct( $name, $key = null ) {
46
+ $key = $key === null ? $name : $key;
47
+
48
+ parent::__construct( $name, $key );
49
+
50
+ if (empty( $this->default ) ) :
51
+ $this->set_default( ' ');
52
+ endif;
53
+
54
+ $this->html = '';
55
+ }
56
+
57
+
58
+ /**
59
+ * Allows custom HTML to be added.
60
+ *
61
+ * @since 3.0.0 | 01 MAR 2018 | Created
62
+ * @param string $html Required: The fully qualified, ready-to-print HTML to display.
63
+ * @return object $this This object for method chaining.
64
+ *
65
+ */
66
+ public function add_HTML( $html ) {
67
+ if ( !is_string( $html) ) :
68
+ $this->_throw( 'This requires a string of HTML!' );
69
+ endif;
70
+
71
+ $this->html .= $html;
72
+
73
+ return $this;
74
+ }
75
 
76
 
77
  /**
82
  * @return string The compiled HTML returned as a string.
83
  *
84
  */
85
+ public function do_admin_sidebar() {
86
+ $status_title = __( 'Press Ctrl+C to Copy this information.' , 'social-warfare' );
87
 
88
+ //* This is an array of fully qualified HTML strings, ready to print.
89
+ $cache = get_option( 'swp_json_cache' );
90
+ $html = '<div class="sw-admin-sidebar sw-grid sw-col-220 sw-fit">';
91
+ $html .= '<div id="swp-admin-sidebar">';
92
 
93
+ if ( isset( $cache['sidebar'] ) ) :
94
+ foreach( $cache['sidebar'] as $component ) {
95
+ $component = html_entity_decode ( $component );
96
+ $html .= html_entity_decode( $component);
97
+ }
98
+ endif;
99
 
100
+ $html .= '<div class="system-status-wrapper">';
101
+ $html .= '<h4><?= $status_title ?></h4>';
102
+ $html .= '<div class="system-status-container"> '. $this->system_status() . '</div>';
103
+ $html .= '</div></div>';
104
 
105
+ return $this->html = $html;
106
+ }
107
 
108
 
109
  /**
114
  * @return string The compiled html returned as a string.
115
  *
116
  */
117
+ private function system_status() {
118
+ /**
119
+ * System Status Generator
120
+ */
121
+ if ( ! function_exists( 'get_plugins' ) ) {
122
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
123
+ }
124
+
125
+ $plugins = get_plugins();
126
+ $pluginList = '';
127
+
128
+ foreach ( $plugins as $plugin ) :
129
+ $pluginList .= '<tr><td><b>' . $plugin['Name'] . '</b></td><td>' . $plugin['Version'] . '</td></tr>';
130
+ endforeach;
131
+
132
+ if ( function_exists( 'fsockopen' ) ) :
133
+ $fsockopen = '<span style="color:green;">Enabled</span>';
134
+ else :
135
+ $fsockopen = '<span style="color:red;">Disabled</span>';
136
+ endif;
137
+
138
+ if ( function_exists( 'curl_version' ) ) :
139
+ $curl_version = curl_version();
140
+ $curl_status = '<span style="color:green;">Enabled: v' . $curl_version['version'] . '</span>';
141
+ else :
142
+ $curl_status = '<span style="color:red;">Disabled</span>';
143
+ endif;
144
+
145
+ $theme = wp_get_theme();
146
+
147
+ $system_status = '
148
+ <table style="width:100%;">
149
+ <tr><td><h2>Environment Statuses</h2></td><td></td></tr>
150
+ <tr><td><b>Home URL</b></td><td>' . get_home_url() . '</td></tr>
151
+ <tr><td><b>Site URL</b></td><td>' . get_site_url() . '</td></tr>
152
+ <tr><td><b>WordPress Version</b></td><td>' . get_bloginfo( 'version' ) . '</td></tr>
153
+ <tr><td><b>PHP Version</b></td><td>' . phpversion() . '</td></tr>
154
+ <tr><td><b>WP Memory Limit</b></td><td>' . WP_MEMORY_LIMIT . '</td></tr>
155
+ <tr><td><b>Social Warfare Version</b></td><td>' . SWP_VERSION . '</td></tr>
156
+ <tr><td><h2>Connection Statuses</h2></td><td></td></tr>
157
+ <tr><td><b>fsockopen</b></td><td>' . $fsockopen . '</td></tr>
158
+ <tr><td><b>cURL</b></td><td>' . $curl_status . '</td></tr>
159
+ <tr><td><h2>Plugin Statuses</h2></td><td></td></tr>
160
+ <tr><td><b>Theme Name</b></td><td>' . $theme['Name'] . '</td></tr>
161
+ <tr><td><b>Theme Version</b></td><td>' . $theme['Version'] . '</td></tr>
162
+ <tr><td><b>Active Plugins</b></td><td></td></tr>
163
+ <tr><td><b>Number of Active Plugins</b></td><td>' . count( $plugins ) . '</td></tr>
164
+ ' . $pluginList . '
165
+ </table>
166
+ ';
167
+
168
+ return $system_status;
169
+ }
170
 
171
 
172
  /**
177
  * @return string The compiled html returned as a string.
178
  *
179
  */
180
+ public function do_tweet_count_registration() {
181
+ // Check for a default value
182
+ if ( true == SWP_Utility::get_option( 'twitter_shares' ) ) :
183
+ $status = 'on';
184
+ $selected = 'checked';
185
+ else:
186
+ $status = 'off';
187
+ $selected = '';
188
+ endif;
189
 
190
+ $this->default = false;
191
+ $this->key = 'twitter_shares';
192
 
193
+ $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ' . $this->render_dependency() . '>';
194
 
195
  // Begin Registration Wrapper
196
  $html .= '<div class="tweet-count-wrapper" registration="false">';
217
 
218
  $html .= '</div>';
219
 
220
+ $this->html = $html;
221
 
222
+ return $html;
223
+ }
224
 
225
 
226
+ /**
227
+ * Render the Bitly connection button on the Advanced tab.
228
+ *
229
  * @see https://dev.bitly.com/authentication.html
230
  * @since 3.0.0 | 01 MAR 2018 | Created
231
+ * @param void
232
+ * @return object $this The calling instance, for method chaining.
233
+ *
234
+ */
235
+ public function do_bitly_authentication_button() {
236
 
237
 
238
+ if ( SWP_Utility::get_option('bitly_access_token') ) {
239
 
240
  //* Display a confirmation button. On click takes them to bitly settings page.
241
+ $text = __( 'Connected', 'social-warfare' );
242
  $text .= " for:<br/>" . SWP_Utility::get_option( 'bitly_access_login' );
243
+ $color = 'sw-green-button';
244
  $link = 'https://app.bitly.com/bitlinks/?actions=accountMain&actions=settings&actions=security';
245
  $target = "_blank";
246
 
247
+ } else {
248
 
249
  //* Display the button, which takes them to a Bitly auth page.
250
+ $text = __( 'Authenticate', 'social-warfare' );
251
+ $color = 'sw-navy-button';
252
  $target = "";
253
 
254
  //* The base URL for authorizing SW to work on a user's Bitly account.
255
+ $link = "https://bitly.com/oauth/authorize";
256
 
257
  //* client_id: The SWP application id, assigned by Bitly.
258
  $link .= "?client_id=96c9b292c5503211b68cf4ab53f6e2f4b6d0defb";
262
 
263
  //* redirect_uri: The page to which a user is redirected upon successfully authenticating.
264
  $link .= "&redirect_uri=https://warfareplugins.com/bitly_oauth.php";
265
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
 
267
+ ob_start() ?>
 
268
 
269
+ <div class="sw-grid sw-col-940 sw-fit sw-option-container <?= $this->key ?> '_wrapper" data-dep="bitly_authentication" data-dep_val="[true]">
270
+ <div class="sw-grid sw-col-300">
271
+ <p class="sw-authenticate-label"><?php __( 'Bitly Link Shortening', 'social-warfare' ) ?></p>
272
+ </div>
273
+ <div class="sw-grid sw-col-300">
274
+ <a target="<?= $target ?>" class="button <?= $color ?>" href="<?= $link ?>"><?= $text ?></a>
275
+ </div>
276
+ <div class="sw-grid sw-col-300 sw-fit"></div>
277
+ </div>
278
 
279
+ <?php
 
 
 
 
 
 
 
 
 
 
 
 
280
 
281
+ $this->html = ob_get_contents();
282
+ ob_end_clean();
 
 
 
 
 
 
 
 
283
 
284
+ return $this;
285
+ }
286
 
 
287
 
288
+ /**
289
+ * The buttons preview as shown on the Display tab.
290
+ *
291
+ * @since 3.0.0 | 01 MAR 2018 | Created
292
+ * @param void
293
+ * @return object $this The calling instance, for method chaining.
294
+ *
295
+ */
296
+ public function do_buttons_preview() {
297
+ $style = 'swp_' . SWP_Utility::get_option( 'button_shape' );
298
+ ob_start() ?>
299
+
300
+ <div class="swp_social_panel <?= $style ?> swp_flat_fresh swp_default_full_color swp_individual_full_color swp_other_medium_gray" data-position="both" data-count="6" data-floatcolor="#ffffff" data-scale="1" data-align="full_width">
301
+ <div class="nc_tweetContainer swp_share_button swp_google_plus" data-id="2">
302
+ <a target="_blank" href="https://plus.google.com/share?url=http%3A%2F%2Fwfa.re%2F1W28voz" data-link="https://plus.google.com/share?url=http%3A%2F%2Fwfa.re%2F1W28voz" class="nc_tweet swp_share_link">
303
+ <span class="iconFiller">
304
+ <span class="spaceManWilly">
305
+ <i class="sw swp_google_plus_icon"></i>
306
+ <span class="swp_share"><?php __( '+1','social-warfare' ) ?></span>
307
+ </span>
308
+ </span>
309
+ <span class="swp_count">1.2K</span>
310
+ </a>
311
+ </div>
312
+ <div class="nc_tweetContainer swp_share_button swp_twitter" data-id="3">
313
+ <a href="https://twitter.com/share?original_referer=/&text=Ultimate+Social+Share+%23WordPress+plugin%21+Beautiful%2C+super+fast+%26+more+http%3A%2F%2Fwarfareplugins.com+pic.twitter.com%2FA2zcCJwZtO&url=/&via=WarfarePlugins" data-link="https://twitter.com/share?original_referer=/&text=Ultimate+Social+Share+%23WordPress+plugin%21+Beautiful%2C+super+fast+%26+more+http%3A%2F%2Fwarfareplugins.com+pic.twitter.com%2FA2zcCJwZtO&url=/&via=WarfarePlugins" class="nc_tweet swp_share_link">
314
+ <span class="iconFiller">
315
+ <span class="spaceManWilly">
316
+ <i class="sw swp_twitter_icon"></i>
317
+ <span class="swp_share"><?php __( 'Tweet','social-warfare' ) ?></span>
318
+ </span>
319
+ </span>
320
+ <span class="swp_count">280</span>
321
+ </a>
322
+ </div>
323
+ <div class="nc_tweetContainer swp_share_button swp_pinterest" data-id="6">
324
+ <a data-link="https://pinterest.com/pin/create/button/?url=https://warfareplugins.com/&media=https%3A%2F%2Fwarfareplugins.com%2Fwp-content%2Fuploads%2Fget-content-shared-735x1102.jpg&description=Customize+your+Pinterest+sharing+options%2C+create+easy+%22click+to+tweet%22+buttons+within+your+blog+posts%2C+beautiful+sharing+buttons+and+more.+Social+Warfare+is+the+ultimate+social+sharing+arsenal+for+WordPress%21" class="nc_tweet swp_share_link" data-count="0">
325
+ <span class="iconFiller">
326
+ <span class="spaceManWilly">
327
+ <i class="sw swp_pinterest_icon"></i>
328
+ <span class="swp_share"><?php __( 'Pin','social-warfare' ) ?></span>
329
+ </span>
330
+ </span>
331
+ <span class="swp_count">104</span>
332
+ </a>
333
+ </div>
334
+ <div class="nc_tweetContainer swp_share_button swp_facebook" data-id="4">
335
+ <a target="_blank" href="https://www.facebook.com/share.php?u=http%3A%2F%2Fwfa.re%2F1W28vov" data-link="https://www.facebook.com/share.php?u=http%3A%2F%2Fwfa.re%2F1W28vov" class="nc_tweet swp_share_link">
336
+ <span class="iconFiller">
337
+ <span class="spaceManWilly">
338
+ <i class="sw swp_facebook_icon"></i>
339
+ <span class="swp_share"><?php __( 'Share','social-warfare' ) ?></span>
340
+ </span>
341
+ </span>
342
+ <span class="swp_count">157</span>
343
+ </a>
344
+ </div>
345
+ <div class="nc_tweetContainer swp_share_button swp_linkedin" data-id="5">
346
+ <a target="_blank" href="https://www.linkedin.com/cws/share?url=http%3A%2F%2Fwfa.re%2F1W28twH" data-link="https://www.linkedin.com/cws/share?url=http%3A%2F%2Fwfa.re%2F1W28twH" class="nc_tweet swp_share_link">
347
+ <span class="iconFiller">
348
+ <span class="spaceManWilly">
349
+ <i class="sw swp_linkedin_icon"></i>
350
+ <span class="swp_share"><?php __( 'Share','social-warfare' ) ?></span>
351
+ </span>
352
+ </span>
353
+ <span class="swp_count">51</span>
354
+ </a>
355
+ </div>
356
+ <div class="nc_tweetContainer swp_share_button total_shares total_sharesalt" data-id="6" >
357
+ <span class="swp_count">
358
+ <span class="swp_label">Shares</span> 1.8K
359
+ </span>
360
+ </div>
361
+ </div>
362
+
363
+ <?php
364
+
365
+ $this->html = ob_get_contents();
366
+ ob_end_clean();
367
+
368
+ return $this;
369
+ }
370
 
 
371
 
372
+ /**
373
+ * Renders the three column table on the Display tab.
374
+ *
375
+ * @since 3.0.0 | 01 MAR 2018 | Created
376
+ * @since 3.0.4 | 09 MAY 2018 | Added check for is_numeric to avoid throwing errors.
377
+ * @since 3.0.5 | 09 MAY 2018 | Switched to using an iterator. Many post types are
378
+ * being returned with associative keys, not numeric ones.
379
+ * @param void
380
+ * @return object $this The calling instance, for method chaining.
381
+ *
382
+ */
383
+ public function do_button_position_table() {
384
+ $post_types = SWP_Utility::get_post_types();
385
+
386
+ $panel_locations = [
387
+ 'above' => __( 'Above the Content', 'social-warfare' ),
388
+ 'below' => __( 'Below the Content', 'social-warfare' ),
389
+ 'both' => __( 'Both Above and Below the Content', 'social-warfare' ),
390
+ 'none' => __( 'None/Manual Placement', 'social-warfare' )
391
+ ];
392
+
393
+ $float_locations = [
394
+ 'on' => __( 'On','social_warfare'),
395
+ 'off' => __( 'Off', 'social_warfare')
396
+ ];
397
+
398
+ $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container" ';
399
+ $html .= $this->render_dependency();
400
+ $html .= $this->render_premium();
401
+ $html .= '>';
402
 
403
+ $html .= '<div class="sw-grid sw-col-300">';
404
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Post Type' ,'social-warfare' ) . '</p>';
405
+ $html .= '</div>';
406
+ $html .= '<div class="sw-grid sw-col-300">';
407
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Static Buttons' ,'social-warfare' ) . '</p>';
408
+ $html .= '</div>';
409
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
410
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Floating Buttons (If Activated)' ,'social-warfare' ) . '</p>';
411
+ $html .= '</div>';
 
 
 
 
412
 
413
+ //* Some indices are numeric, others are strings.
414
+ $i = 0;
415
+ foreach( $post_types as $index => $post ) {
416
+ $i++;
417
+ $priority = $i * 10;
418
 
419
+ $html .= '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $post . '_wrapper">';
 
 
 
420
 
421
+ $html .= '<div class="sw-grid sw-col-300">';
422
+ $html .= '<p class="sw-input-label">' . str_replace('_', ' & ', ucfirst($post)) . '</p>';
423
+ $html .= '</div>';
424
 
425
+ $html .= '<div class="sw-grid sw-col-300">';
 
 
426
 
427
+ $panel = new SWP_Option_Select( 'Panel '. ucfirst( $post ), 'location_' . $post );
428
+ $panel->set_priority( $priority )
429
+ ->set_size( 'sw-col-300' )
430
+ ->set_choices( $panel_locations )
431
+ ->set_default( 'both' );
432
 
433
+ $html .= $panel->render_HTML_element();
 
 
 
434
 
435
+ $html .= '</div>';
436
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
 
 
437
 
438
+ if ( $post !== 'home' && $post !== 'archive_categories' ) :
 
 
439
 
440
+ $float = new SWP_Option_Select( 'Float ' . ucfirst( $post ), 'float_location_' . $post );
441
+ $float->set_priority( $priority + 5 )
442
+ ->set_size( 'sw-col-300' )
443
+ ->set_choices( $float_locations )
444
+ ->set_default( 'on' );
445
 
446
+ $html .= $float->render_HTML_element();
447
 
448
+ endif;
449
 
450
+ $html .= '</div>';
 
451
 
452
+ $html .= '</div>';
453
 
454
+ }
 
455
 
456
+ $html .= '</div>';
 
 
 
 
 
 
 
 
 
 
457
 
458
+ $this->html = $html;
 
 
 
459
 
460
+ return $this;
461
+ }
462
 
 
 
 
 
 
 
 
 
 
 
463
 
464
+ /**
465
+ * Creates the Click To Tweet preview for the Styles tab.
466
+ *
467
+ * @since 3.0.0 | 01 MAR 2018 | Created
468
+ * @param void
469
+ * @return object $this The calling instance, for method chaining.
470
+ *
471
+ */
472
+ public function do_ctt_preview() {
473
+ //* Pull these variables out just to make the $html string easier to read.
474
+ $link = "https://twitter.com/share?text=We+couldn%27t+find+one+social+sharing+plugin+that+met+all+of+our+needs%2C+so+we+built+it+ourselves.&amp;url=https://warfareplugins.com&amp;via=warfareplugins";
475
+ $data_link = "https://twitter.com/share?text=We+couldn%27t+find+one+social+sharing+plugin+that+met+all+of+our+needs%2C+so+we+built+it+ourselves.&amp;url=https://wfa.re/1PtqdNM&amp;via=WarfarePlugins";
476
+ $text = "We couldn't find one social sharing plugin that met all of our needs, so we built it ourselves.";
477
+
478
+ $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper">';
479
+ $html .= '<a class="swp_CTT style1" data-style="style1" href="' . $link . '" data-link="' . $data_link . '" target="_blank">';
480
+ $html .= '<span class="sw-click-to-tweet">';
481
+ $html .= '<span class="sw-ctt-text">' . $text . '</span>';
482
+ $html .= '<span class="sw-ctt-btn">Click To Tweet';
483
+ $html .= '<i class="sw swp_twitter_icon"></i>';
484
+ $html .= '</span>';
485
+ $html .= '</span>';
486
+ $html .= '</a>';
487
+ $html .= '</div>';
488
 
 
 
 
489
 
490
+ $this->html = $html;
 
 
 
 
491
 
492
+ return $this;
493
 
494
+ }
 
 
495
 
 
496
 
497
+ /**
498
+ * Renders the three column table on the Display tab.
499
+ *
500
+ * @since 3.0.0 | 01 MAR 2018 | Created
501
+ * @param void
502
+ * @return object $this The calling instance, for method chaining.
503
+ *
504
+ */
505
+ public function do_yummly_display() {
506
+ $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ';
507
+ $html .= $this->render_dependency();
508
+ $html .= $this->render_premium();
509
+ $html .= '>';
510
+
511
+
512
+ //* Table headers
513
+ $html .= '<div class="sw-grid sw-col-300">';
514
+ $html .= '<p class="sw-select-label sw-short sw-no-padding"></p>';
515
+ $html .= '</div>';
516
+
517
+ $html .= '<div class="sw-grid sw-col-300">';
518
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Choose Category', 'social-warfare' ) . '</p>';
519
+ $html .= '</div>';
520
+
521
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
522
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Choose Tag', 'social-warfare' ) . '</p>';
523
+ $html .= '</div>';
524
+
525
+ $yummly_categories = new SWP_Option_Text( __( 'Yummly Categories', 'social-warfare' ), 'yummly_categories' );
526
+ $categories_html = $yummly_categories->set_priority( 10 )
527
+ ->set_default( '' )
528
+ ->render_HTML_element();
529
+
530
+ $yummly_tags = new SWP_Option_Text( __( 'Yummly Tags', 'social-warfare'), 'yummly_tags' );
531
+ $tags_html = $yummly_tags->set_priority( 10 )
532
+ ->set_default( '' )
533
+ ->render_HTML_element();
534
+
535
+ //* Table body
536
+ $html .= '<div class="sw-grid sw-col-300">';
537
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Yummly Terms' ,'social-warfare' ) . '</p>';
538
+ $html .= '</div>';
539
+
540
+ $html .= '<div class="sw-grid sw-col-300">';
541
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . $categories_html . '</p>';
542
+ $html .= '</div>';
543
+
544
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
545
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . $tags_html . '</p>';
546
+ $html .= '</div>';
547
+
548
+ $html .= '</div>';
549
+
550
+ $this->html = $html;
551
+
552
+ return $this;
553
+ }
554
+
555
 
556
+ public function do_bitly_start_date() {
557
+ $post_types = SWP_Utility::get_post_types();
558
 
559
+ $booleans = [
560
+ 'on' => __( 'On','social_warfare'),
561
+ 'off' => __( 'Off', 'social_warfare')
562
+ ];
563
 
564
+ $html = '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $this->key . '_wrapper" ';
565
+ $html .= $this->render_dependency();
566
+ $html .= $this->render_premium();
567
+ $html .= '>';
568
 
569
+ $start_date = SWP_Utility::get_option( 'bitly_start_date' );
570
 
571
+ if ( !$start_date ) {
572
+ // die(var_dump($start_date));
573
+ $start_date = '';
574
+ }
575
+
576
+
577
+ $html .= '<p class="sw-subtitle sw-col-620" style="margin: 5px 0 15px">I would like to generate bitly links for content created <b>on or after</b>&nbsp;';
578
+ $html .= '<input
579
+ style="float: right;"
580
+ type="text"
581
+ id="' . $this->key . '"
582
+ name="' . $this->key . '"
583
+ value="' . $start_date . '"
584
+ />
585
+ </p>';
586
+ $html .= '<p class="sw-subtitle sw-col-620">Please enter start the date in the following format: <code style="float: right;">YYYY-MM-DD</code></p>';
587
+
588
+ $html .= '<div class="sw-grid sw-col-300">';
589
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Post Type' ,'social-warfare' ) . '</p>';
590
+ $html .= '</div>';
591
+
592
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
593
+ $html .= '<p class="sw-select-label sw-short sw-no-padding">' . __( 'Create Bitly Links?' ,'social-warfare' ) . '</p>';
594
+ $html .= '</div>';
595
 
596
+ //* Some indices are numeric, others are strings.
597
+ $i = 0;
598
+ foreach( $post_types as $index => $post ) {
599
+ $i++;
600
+ $priority = $i * 10;
601
 
602
+ $html .= '<div class="sw-grid sw-col-940 sw-fit sw-option-container ' . $post . '_wrapper">';
603
 
604
+ $html .= '<div class="sw-grid sw-col-300">';
605
+ $html .= '<p class="sw-input-label">' . str_replace('_', ' & ', ucfirst($post)) . '</p>';
606
+ $html .= '</div>';
607
 
608
+ $html .= '<div class="sw-grid sw-col-300 sw-fit">';
609
 
610
+ $float = new SWP_Option_Select( ucfirst( $post ), 'bitly_links_' . $post );
611
+ $float->set_priority( $priority )
612
+ ->set_size( 'sw-col-300' )
613
+ ->set_choices( $booleans )
614
+ ->set_default( 'on' );
615
+
616
+ $html .= $float->render_HTML_element();
617
+
618
+ $html .= '</div>';
619
+
620
+ $html .= '</div>';
621
+
622
+ }
623
+
624
+ $html .= '</div>';
625
+
626
+ $this->html = $html;
627
+
628
+ return $this;
629
+
630
+ }
631
+
632
+
633
+ /**
634
+ * The rendering method common to all classes.
635
+ *
636
+ * Unlike the other option classes, this class creates its HTML and does not immediately
637
+ * return it. Instead, it stores the HTML inside itself and waits for the render_html
638
+ * method to be called.
639
+ *
640
+ * @since 3.0.0 | 01 MAR 2018 | Created
641
+ * @param void
642
+ * @return string The object's saved HTML.
643
+ *
644
+ */
645
+ public function render_HTML() {
646
+ return $this->html;
647
+ }
648
  }
lib/social-networks/SWP_Pinterest.php CHANGED
@@ -62,54 +62,52 @@ class SWP_Pinterest extends SWP_Social_Network {
62
  *
63
  */
64
  public function parse_api_response( $response ) {
65
- $response = preg_replace( '/^receiveCount\((.*)\)$/', "\\1", $response );
66
- $response = json_decode( $response, true );
67
- return isset( $response['count'] ) ? intval( $response['count'] ) : 0;
68
- }
69
-
70
-
71
- /**
72
- * Create the HTML to display the share button
73
- *
74
- * @since 1.0.0
75
- * @since 3.0.0 | 01 MAY 2018 | Re-wrote the function to a class method.
76
- * @since 3.0.6 | 14 MAY 2018 | Appended $pinterest_username to $pinterest_description.
77
- * @since 3.0.9 | 04 JUN 2018 | Updated the check for pinterest image.
78
- * @access public
79
- * @return array $panel_context Array of
80
- * ['post_data'] => metadata about the post;
81
- * ['shares'] => share count data
82
- * ['options'] => swp_user_options
83
- * @param bool $echo If true, this will immediately echo its code rather than save it for later.
84
- *
85
- */
86
- public function render_HTML( $panel_context, $echo = false ) {
87
- global $swp_user_options;
88
- $post_id = $panel_context['post_data']['ID'];
89
- $post_url = urlencode( urldecode( SWP_URL_Management::process_url( $panel_context['post_data']['permalink'] , 'pinterest' , $post_id ) ) );
90
-
91
- $options = $swp_user_options;
92
- $metabox_pinterest_image = get_post_meta( $post_id , 'swp_pinterest_image_url' , true );
93
 
94
- if ( !empty( $metabox_pinterest_image ) ) :
95
- $pinterest_image = $metabox_pinterest_image;
96
 
97
- elseif ( isset($options['pinterest_fallback']) && $options['pinterest_fallback'] == 'featured' ):
98
- $pinterest_image = wp_get_attachment_url( get_post_thumbnail_id( $post_id ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
- else :
101
- $pinterest_image = '';
102
 
103
- endif;
 
 
 
 
 
 
104
 
105
- if ( !empty( $options['pinterest_id'] ) ) :
106
- $pinterest_username = ' via @' . str_replace( '@' , '' , $options['pinterest_id'] );
107
- else :
108
- $pinterest_username = '';
109
- endif;
 
110
 
111
- $title = str_replace( '|', '', strip_tags( $panel_context['post_data']['post_title'] ) );
112
- $pinterest_description = get_post_meta( $post_id , 'swp_pinterest_description' , true );
113
 
114
  if( is_array( $pinterest_description ) && !empty( $pinterest_description ) ) {
115
  $pinterest_description = $pinterest_description[0];
@@ -117,70 +115,89 @@ class SWP_Pinterest extends SWP_Social_Network {
117
  update_post_meta( $post_id , 'swp_pinterest_description' , $pinterest_description );
118
  }
119
 
120
- if ( empty( $pinterest_description ) ) :
121
- $pinterest_description = $title;
122
- endif;
123
 
124
- $pinterest_description .= $pinterest_username;
 
125
 
126
- if ( !empty( $pinterest_image ) ) :
127
- $anchor = '<a rel="nofollow noreferrer noopener" class="nc_tweet" data-count="0" ' .
128
  'data-link="https://pinterest.com/pin/create/button/' .
129
  '?url=' . $panel_context['post_data']['permalink'] .
130
  '&media=' . urlencode( $pinterest_image ) .
131
  '&description=' . urlencode( $pinterest_description ) .
132
  '">';
133
- else :
134
- $anchor = '<a rel="nofollow noreferrer noopener" class="nc_tweet noPop" ' .
135
  'onClick="var e=document.createElement(\'script\');
136
  e.setAttribute(\'type\',\'text/javascript\');
137
  e.setAttribute(\'charset\',\'UTF-8\');
138
  e.setAttribute(\'src\',\'//assets.pinterest.com/js/pinmarklet.js?r=\'+Math.random()*99999999);
139
  document.body.appendChild(e);
140
  " >';
141
- endif;
142
-
143
- //* Begin parent class method.
144
-
145
- $post_data = $panel_context['post_data'];
146
- $share_counts = $panel_context['shares'];
147
- $options = $panel_context['options'];
148
- $share_link = $this->generate_share_link( $post_data );
149
-
150
- // Build the button.
151
- $icon = '<span class="iconFiller">';
152
- $icon.= '<span class="spaceManWilly">';
153
- $icon.= '<i class="sw swp_'.$this->key.'_icon"></i>';
154
- $icon.= '<span class="swp_share">' . $this->cta . '</span>';
155
- $icon .= '</span>';
156
- $icon .= '</span>';
157
-
158
- if ( true === $this->are_shares_shown( $share_counts , $options ) ) :
159
- $icon .= '<span class="swp_count">' . SWP_Utility::kilomega( $share_counts[$this->key] ) . '</span>';
160
- else :
161
- $icon = '<span class="swp_count swp_hide">' . $icon . '</span>';
162
- endif;
163
-
164
- // Build the wrapper.
165
- $html = '<div class="nc_tweetContainer swp_'.$this->key.'" data-network="'.$this->key.'">';
166
- $html .= $anchor;
167
- // Put the button inside.
168
- $html .= $icon;
169
- $html.= '</a>';
170
- $html.= '</div>';
171
-
172
- // Store these buttons so that we don't have to generate them for each set
173
- $this->html = $html;
174
-
175
- if ( $echo ) :
176
- echo $html;
177
- endif;
178
-
179
- return $html;
180
- }
181
-
182
-
183
- public function generate_share_link( $post_data ) {
184
- return 0;
185
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  }
62
  *
63
  */
64
  public function parse_api_response( $response ) {
65
+ $response = preg_replace( '/^receiveCount\((.*)\)$/', "\\1", $response );
66
+ $response = json_decode( $response, true );
67
+ return isset( $response['count'] ) ? intval( $response['count'] ) : 0;
68
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
 
 
70
 
71
+ /**
72
+ * Create the HTML to display the share button
73
+ *
74
+ * @since 1.0.0
75
+ * @since 3.0.0 | 01 MAY 2018 | Re-wrote the function to a class method.
76
+ * @since 3.0.6 | 14 MAY 2018 | Appended $pinterest_username to $pinterest_description.
77
+ * @since 3.0.9 | 04 JUN 2018 | Updated the check for pinterest image.
78
+ * @access public
79
+ * @return array $panel_context Array of
80
+ * ['post_data'] => metadata about the post;
81
+ * ['shares'] => share count data
82
+ * ['options'] => swp_user_options
83
+ * @param bool $echo If true, this will immediately echo its code rather than save it for later.
84
+ *
85
+ */
86
+ public function render_HTML( $panel_context, $echo = false ) {
87
+ global $swp_user_options;
88
+ $post_id = $panel_context['post_data']['ID'];
89
+ $post_url = urlencode( urldecode( SWP_URL_Management::process_url( $panel_context['post_data']['permalink'] , 'pinterest' , $post_id ) ) );
90
 
91
+ $options = $swp_user_options;
92
+ $metabox_pinterest_image = get_post_meta( $post_id , 'swp_pinterest_image_url' , true );
93
 
94
+ if ( !empty( $metabox_pinterest_image ) ) :
95
+ $pinterest_image = $metabox_pinterest_image;
96
+ elseif ( isset($options['pinterest_fallback']) && $options['pinterest_fallback'] == 'featured' ):
97
+ $pinterest_image = wp_get_attachment_url( get_post_thumbnail_id( $post_id ) );
98
+ else :
99
+ $pinterest_image = '';
100
+ endif;
101
 
102
+ if ( !empty( $options['pinterest_id'] ) ) {
103
+ $pinterest_username = ' via @' . str_replace( '@' , '' , $options['pinterest_id'] );
104
+ }
105
+ else {
106
+ $pinterest_username = '';
107
+ }
108
 
109
+ $title = str_replace( '|', '', strip_tags( $panel_context['post_data']['post_title'] ) );
110
+ $pinterest_description = get_post_meta( $post_id , 'swp_pinterest_description' , true );
111
 
112
  if( is_array( $pinterest_description ) && !empty( $pinterest_description ) ) {
113
  $pinterest_description = $pinterest_description[0];
115
  update_post_meta( $post_id , 'swp_pinterest_description' , $pinterest_description );
116
  }
117
 
118
+ if ( empty( $pinterest_description ) ) :
119
+ $pinterest_description = $title;
120
+ endif;
121
 
122
+ $pinterest_description .= $pinterest_username;
123
+ $pinterest_description = SWP_Pinterest::trim_pinterest_description( $pinterest_description);
124
 
125
+ if ( !empty( $pinterest_image ) ) :
126
+ $anchor = '<a rel="nofollow noreferrer noopener" class="nc_tweet swp_share_link" data-count="0" ' .
127
  'data-link="https://pinterest.com/pin/create/button/' .
128
  '?url=' . $panel_context['post_data']['permalink'] .
129
  '&media=' . urlencode( $pinterest_image ) .
130
  '&description=' . urlencode( $pinterest_description ) .
131
  '">';
132
+ else :
133
+ $anchor = '<a rel="nofollow noreferrer noopener" class="nc_tweet swp_share_link noPop" ' .
134
  'onClick="var e=document.createElement(\'script\');
135
  e.setAttribute(\'type\',\'text/javascript\');
136
  e.setAttribute(\'charset\',\'UTF-8\');
137
  e.setAttribute(\'src\',\'//assets.pinterest.com/js/pinmarklet.js?r=\'+Math.random()*99999999);
138
  document.body.appendChild(e);
139
  " >';
140
+ endif;
141
+
142
+ //* Begin parent class method.
143
+
144
+ $post_data = $panel_context['post_data'];
145
+ $share_counts = $panel_context['shares'];
146
+ $options = $panel_context['options'];
147
+ $share_link = $this->generate_share_link( $post_data );
148
+
149
+ // Build the button.
150
+ $icon = '<span class="iconFiller">';
151
+ $icon.= '<span class="spaceManWilly">';
152
+ $icon.= '<i class="sw swp_'.$this->key.'_icon"></i>';
153
+ $icon.= '<span class="swp_share">' . $this->cta . '</span>';
154
+ $icon .= '</span>';
155
+ $icon .= '</span>';
156
+
157
+ if ( true === $this->are_shares_shown( $share_counts , $options ) ) :
158
+ $icon .= '<span class="swp_count">' . SWP_Utility::kilomega( $share_counts[$this->key] ) . '</span>';
159
+ else :
160
+ $icon = '<span class="swp_count swp_hide">' . $icon . '</span>';
161
+ endif;
162
+
163
+ // Build the wrapper.
164
+ $html = '<div class="nc_tweetContainer swp_share_button swp_'.$this->key.'" data-network="'.$this->key.'">';
165
+ $html .= $anchor;
166
+ // Put the button inside.
167
+ $html .= $icon;
168
+ $html.= '</a>';
169
+ $html.= '</div>';
170
+
171
+ // Store these buttons so that we don't have to generate them for each set
172
+ $this->html = $html;
173
+
174
+ if ( $echo ) :
175
+ echo $html;
176
+ endif;
177
+
178
+ return $html;
179
+ }
180
+
181
+
182
+ public function generate_share_link( $post_data ) {
183
+ return 0;
184
+ }
185
+
186
+ /**
187
+ * Trims the text of a pinterest description down to the 500 character max.
188
+ *
189
+ * @since 3.5.0 | 21 FEB 2019 | Created.
190
+ * @param string $pinterest_description The target Pinterest description.
191
+ * @return string The same pinterest description, capped at 500 characters.
192
+ *
193
+ */
194
+ public static function trim_pinterest_description( $pinterest_description ) {
195
+ if ( strlen( $pinterest_description ) > 500 ) {
196
+ $read_more = '... read more at ' . $permalink;
197
+ $pinterest_description = substr( $title . ': ' . the_excerpt(), 0, 500 - strlen( $read_more ) );
198
+ $pinterest_description .= $read_more;
199
+ }
200
+
201
+ return $pinterest_description;
202
+ }
203
  }
lib/social-networks/SWP_Social_Network.php CHANGED
@@ -67,10 +67,10 @@ class SWP_Social_Network {
67
  * The default state of this network
68
  *
69
  * This property will determine where the icon appears in the options page
70
- * prior to the user setting and saving it. If true, it will appear in the
71
- * active section. If false, it will appear in the inactive section. Once
72
- * the user has updated/saved their preferences, this property will no
73
- * longer do anything.
74
  *
75
  * @var bool If true, the button is turned on by default.
76
  *
@@ -133,12 +133,12 @@ class SWP_Social_Network {
133
  */
134
  public $base_share_url = '';
135
 
136
- /**
137
- * Whether or not to show the share count for this network.
138
- *
139
- * @var boolean $show_shares;
140
- */
141
- public $show_shares = false;
142
 
143
 
144
  /**
@@ -184,14 +184,14 @@ class SWP_Social_Network {
184
  */
185
  public function set_name( $value ) {
186
 
187
- if ( !is_string( $value ) || empty( $value ) ) {
188
- $this->_throw("Please provide a string for your object's name." );
189
- }
190
 
191
- $this->name = $value;
192
 
193
- return $this;
194
- }
195
 
196
 
197
  /**
@@ -353,39 +353,39 @@ class SWP_Social_Network {
353
 
354
  $post_data = $panel_context['post_data'];
355
  $share_counts = $panel_context['shares'];
356
- $post_data['options'] = $panel_context['options'];
357
 
358
 
359
  $share_link = $this->generate_share_link( $post_data );
360
 
361
- // Build the button.
362
- $icon = '<span class="iconFiller">';
363
- $icon.= '<span class="spaceManWilly">';
364
- $icon.= '<i class="sw swp_'.$this->key.'_icon"></i>';
365
- $icon.= '<span class="swp_share">' . $this->cta . '</span>';
366
- $icon .= '</span>';
367
- $icon .= '</span>';
368
-
369
- if ( true === $this->are_shares_shown( $share_counts , $panel_context['options'] ) ) :
370
- $icon .= '<span class="swp_count">' . SWP_Utility::kilomega( $share_counts[$this->key] ) . '</span>';
371
- else :
372
- $icon = '<span class="swp_count swp_hide">' . $icon . '</span>';
373
- endif;
374
-
375
- // Build the wrapper.
376
- $html = '<div class="nc_tweetContainer swp_'.$this->key.'" data-network="'.$this->key.'">';
377
- $html .= '<a rel="nofollow noreferrer noopener" target="_blank" href="' . $share_link . '" data-link="' . $share_link . '" class="nc_tweet">';
378
- // Put the button inside.
379
- $html .= $icon;
380
- $html.= '</a>';
381
  $html.= '</div>';
382
 
383
  // Store these buttons so that we don't have to generate them for each set
384
  $this->html = $html;
385
 
386
- if ( $echo ) :
387
- echo $html;
388
- endif;
389
 
390
  return $html;
391
 
67
  * The default state of this network
68
  *
69
  * This property will determine where the icon appears in the options page
70
+ * prior to the user setting and saving it. If true, it will appear in the
71
+ * active section. If false, it will appear in the inactive section. Once
72
+ * the user has updated/saved their preferences, this property will no
73
+ * longer do anything.
74
  *
75
  * @var bool If true, the button is turned on by default.
76
  *
133
  */
134
  public $base_share_url = '';
135
 
136
+ /**
137
+ * Whether or not to show the share count for this network.
138
+ *
139
+ * @var boolean $show_shares;
140
+ */
141
+ public $show_shares = false;
142
 
143
 
144
  /**
184
  */
185
  public function set_name( $value ) {
186
 
187
+ if ( !is_string( $value ) || empty( $value ) ) {
188
+ $this->_throw("Please provide a string for your object's name." );
189
+ }
190
 
191
+ $this->name = $value;
192
 
193
+ return $this;
194
+ }
195
 
196
 
197
  /**
353
 
354
  $post_data = $panel_context['post_data'];
355
  $share_counts = $panel_context['shares'];
356
+ $post_data['options'] = $panel_context['options'];
357
 
358
 
359
  $share_link = $this->generate_share_link( $post_data );
360
 
361
+ // Build the button.
362
+ $icon = '<span class="iconFiller">';
363
+ $icon.= '<span class="spaceManWilly">';
364
+ $icon.= '<i class="sw swp_'.$this->key.'_icon"></i>';
365
+ $icon.= '<span class="swp_share">' . $this->cta . '</span>';
366
+ $icon .= '</span>';
367
+ $icon .= '</span>';
368
+
369
+ if ( true === $this->are_shares_shown( $share_counts , $panel_context['options'] ) ) :
370
+ $icon .= '<span class="swp_count">' . SWP_Utility::kilomega( $share_counts[$this->key] ) . '</span>';
371
+ else :
372
+ $icon = '<span class="swp_count swp_hide">' . $icon . '</span>';
373
+ endif;
374
+
375
+ // Build the wrapper.
376
+ $html = '<div class="nc_tweetContainer swp_share_button swp_'.$this->key.'" data-network="'.$this->key.'">';
377
+ $html .= '<a class="nc_tweet swp_share_link" rel="nofollow noreferrer noopener" target="_blank" href="' . $share_link . '" data-link="' . $share_link . '">';
378
+ // Put the button inside.
379
+ $html .= $icon;
380
+ $html.= '</a>';
381
  $html.= '</div>';
382
 
383
  // Store these buttons so that we don't have to generate them for each set
384
  $this->html = $html;
385
 
386
+ if ( $echo ) :
387
+ echo $html;
388
+ endif;
389
 
390
  return $html;
391
 
lib/update-checker/composer.json CHANGED
@@ -1,22 +1,22 @@
1
- {
2
- "name": "yahnis-elsts/plugin-update-checker",
3
- "type": "library",
4
- "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.",
5
- "keywords": ["wordpress", "plugin updates", "automatic updates", "theme updates"],
6
- "homepage": "https://github.com/YahnisElsts/plugin-update-checker/",
7
- "license": "MIT",
8
- "authors": [
9
- {
10
- "name": "Yahnis Elsts",
11
- "email": "whiteshadow@w-shadow.com",
12
- "homepage": "http://w-shadow.com/",
13
- "role": "Developer"
14
- }
15
- ],
16
- "require": {
17
- "php": ">=5.2.0"
18
- },
19
- "autoload": {
20
- "files": ["plugin-update-checker.php"]
21
- }
22
  }
1
+ {
2
+ "name": "yahnis-elsts/plugin-update-checker",
3
+ "type": "library",
4
+ "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.",
5
+ "keywords": ["wordpress", "plugin updates", "automatic updates", "theme updates"],
6
+ "homepage": "https://github.com/YahnisElsts/plugin-update-checker/",
7
+ "license": "MIT",
8
+ "authors": [
9
+ {
10
+ "name": "Yahnis Elsts",
11
+ "email": "whiteshadow@w-shadow.com",
12
+ "homepage": "http://w-shadow.com/",
13
+ "role": "Developer"
14
+ }
15
+ ],
16
+ "require": {
17
+ "php": ">=5.2.0"
18
+ },
19
+ "autoload": {
20
+ "files": ["plugin-update-checker.php"]
21
+ }
22
  }
lib/update-checker/examples/plugin.json CHANGED
@@ -1,52 +1,52 @@
1
- {
2
- "name": "My Example Plugin",
3
- "version": "2.0",
4
- "download_url": "http://example.com/updates/example-plugin.zip",
5
-
6
- "homepage": "http://example.com/",
7
- "requires": "4.5",
8
- "tested": "4.8",
9
- "last_updated": "2017-01-01 16:17:00",
10
- "upgrade_notice": "Here's why you should upgrade...",
11
-
12
- "author": "Janis Elsts",
13
- "author_homepage": "http://example.com/",
14
-
15
- "sections": {
16
- "description": "(Required) Plugin description. Basic HTML can be used in all sections.",
17
- "installation": "(Recommended) Installation instructions.",
18
- "changelog": "(Recommended) Changelog. <p>This section will be displayed by default when the user clicks 'View version x.y.z details'.</p>",
19
- "custom_section": "This is a custom section labeled 'Custom Section'."
20
- },
21
-
22
- "icons" : {
23
- "1x" : "http://w-shadow.com/files/external-update-example/assets/icon-128x128.png",
24
- "2x" : "http://w-shadow.com/files/external-update-example/assets/icon-256x256.png"
25
- },
26
-
27
- "banners": {
28
- "low": "http://w-shadow.com/files/external-update-example/assets/banner-772x250.png",
29
- "high": "http://w-shadow.com/files/external-update-example/assets/banner-1544x500.png"
30
- },
31
-
32
- "translations": [
33
- {
34
- "language": "fr_FR",
35
- "version": "4.0",
36
- "updated": "2016-04-22 23:22:42",
37
- "package": "http://example.com/updates/translations/french-language-pack.zip"
38
- },
39
- {
40
- "language": "de_DE",
41
- "version": "5.0",
42
- "updated": "2016-04-22 23:22:42",
43
- "package": "http://example.com/updates/translations/german-language-pack.zip"
44
- }
45
- ],
46
-
47
- "rating": 90,
48
- "num_ratings": 123,
49
-
50
- "downloaded": 1234,
51
- "active_installs": 12345
52
  }
1
+ {
2
+ "name": "My Example Plugin",
3
+ "version": "2.0",
4
+ "download_url": "http://example.com/updates/example-plugin.zip",
5
+
6
+ "homepage": "http://example.com/",
7
+ "requires": "4.5",
8
+ "tested": "4.8",
9
+ "last_updated": "2017-01-01 16:17:00",
10
+ "upgrade_notice": "Here's why you should upgrade...",
11
+
12
+ "author": "Janis Elsts",
13
+ "author_homepage": "http://example.com/",
14
+
15
+ "sections": {
16
+ "description": "(Required) Plugin description. Basic HTML can be used in all sections.",
17
+ "installation": "(Recommended) Installation instructions.",
18
+ "changelog": "(Recommended) Changelog. <p>This section will be displayed by default when the user clicks 'View version x.y.z details'.</p>",
19
+ "custom_section": "This is a custom section labeled 'Custom Section'."
20
+ },
21
+
22
+ "icons" : {
23
+ "1x" : "http://w-shadow.com/files/external-update-example/assets/icon-128x128.png",
24
+ "2x" : "http://w-shadow.com/files/external-update-example/assets/icon-256x256.png"
25
+ },
26
+
27
+ "banners": {
28
+ "low": "http://w-shadow.com/files/external-update-example/assets/banner-772x250.png",
29
+ "high": "http://w-shadow.com/files/external-update-example/assets/banner-1544x500.png"
30
+ },
31
+
32
+ "translations": [
33
+ {
34
+ "language": "fr_FR",
35
+ "version": "4.0",
36
+ "updated": "2016-04-22 23:22:42",
37
+ "package": "http://example.com/updates/translations/french-language-pack.zip"
38
+ },
39
+ {
40
+ "language": "de_DE",
41
+ "version": "5.0",
42
+ "updated": "2016-04-22 23:22:42",
43
+ "package": "http://example.com/updates/translations/german-language-pack.zip"
44
+ }
45
+ ],
46
+
47
+ "rating": 90,
48
+ "num_ratings": 123,
49
+
50
+ "downloaded": 1234,
51
+ "active_installs": 12345
52
  }
lib/update-checker/examples/theme.json CHANGED
@@ -1,5 +1,5 @@
1
- {
2
- "version": "2.0",
3
- "details_url": "http://example.com/version-2.0-details.html",
4
- "download_url": "http://example.com/example-theme-2.0.zip"
5
  }
1
+ {
2
+ "version": "2.0",
3
+ "details_url": "http://example.com/version-2.0-details.html",
4
+ "download_url": "http://example.com/example-theme-2.0.zip"
5
  }
lib/update-checker/languages/plugin-update-checker-cs_CZ.po CHANGED
@@ -1,45 +1,45 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: plugin-update-checker\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2017-05-20 10:53+0300\n"
6
- "PO-Revision-Date: 2017-07-05 15:39+0000\n"
7
- "Last-Translator: Vojtěch Sajdl <vojtech@sajdl.com>\n"
8
- "Language-Team: Czech (Czech Republic)\n"
9
- "Language: cs-CZ\n"
10
- "Plural-Forms: nplurals=2; plural=(n != 1)\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Loco-Source-Locale: cs_CZ\n"
15
- "X-Generator: Loco - https://localise.biz/\n"
16
- "X-Poedit-Basepath: ..\n"
17
- "X-Poedit-SourceCharset: UTF-8\n"
18
- "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Loco-Parser: loco_parse_po"
21
-
22
- #: Puc/v4p1/Plugin/UpdateChecker.php:358
23
- msgid "Check for updates"
24
- msgstr "Zkontrolovat aktualizace"
25
-
26
- #: Puc/v4p1/Plugin/UpdateChecker.php:405
27
- #, php-format
28
- msgctxt "the plugin title"
29
- msgid "The %s plugin is up to date."
30
- msgstr "Plugin %s je aktuální."
31
-
32
- #: Puc/v4p1/Plugin/UpdateChecker.php:407
33
- #, php-format
34
- msgctxt "the plugin title"
35
- msgid "A new version of the %s plugin is available."
36
- msgstr "Nová verze pluginu %s je dostupná."
37
-
38
- #: Puc/v4p1/Plugin/UpdateChecker.php:409
39
- #, php-format
40
- msgid "Unknown update checker status \"%s\""
41
- msgstr "Neznámý status kontroly aktualizací \"%s\""
42
-
43
- #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
44
- msgid "There is no changelog available."
45
- msgstr "Changelog není dostupný."
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: plugin-update-checker\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2017-05-20 10:53+0300\n"
6
+ "PO-Revision-Date: 2017-07-05 15:39+0000\n"
7
+ "Last-Translator: Vojtěch Sajdl <vojtech@sajdl.com>\n"
8
+ "Language-Team: Czech (Czech Republic)\n"
9
+ "Language: cs-CZ\n"
10
+ "Plural-Forms: nplurals=2; plural=(n != 1)\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Loco-Source-Locale: cs_CZ\n"
15
+ "X-Generator: Loco - https://localise.biz/\n"
16
+ "X-Poedit-Basepath: ..\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Loco-Parser: loco_parse_po"
21
+
22
+ #: Puc/v4p1/Plugin/UpdateChecker.php:358
23
+ msgid "Check for updates"
24
+ msgstr "Zkontrolovat aktualizace"
25
+
26
+ #: Puc/v4p1/Plugin/UpdateChecker.php:405
27
+ #, php-format
28
+ msgctxt "the plugin title"
29
+ msgid "The %s plugin is up to date."
30
+ msgstr "Plugin %s je aktuální."
31
+
32
+ #: Puc/v4p1/Plugin/UpdateChecker.php:407
33
+ #, php-format
34
+ msgctxt "the plugin title"
35
+ msgid "A new version of the %s plugin is available."
36
+ msgstr "Nová verze pluginu %s je dostupná."
37
+
38
+ #: Puc/v4p1/Plugin/UpdateChecker.php:409
39
+ #, php-format
40
+ msgid "Unknown update checker status \"%s\""
41
+ msgstr "Neznámý status kontroly aktualizací \"%s\""
42
+
43
+ #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
44
+ msgid "There is no changelog available."
45
+ msgstr "Changelog není dostupný."
lib/utilities/SWP_Auth_Helper.php ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * This serves as a collection of common methods for getting, fetching,
5
+ * and storing client keys and secrets.
6
+ *
7
+ * Unlinke other classes, this is not immediately instantiated on plugin load.
8
+ * Instead it is created on a need-only basis.
9
+ *
10
+ * Since all of the actual handshakes take place on the warfareplugins.com server,
11
+ * SWP application keys and secrets live in those files.
12
+ * The server is also where we keep the network-specific SDKs.
13
+ *
14
+ * This class only tells us if we have access for a network, and if not,
15
+ * which link we should use to request access.
16
+ *
17
+ */
18
+ class SWP_Auth_Helper {
19
+
20
+
21
+ /**
22
+ * The network this controller interfaces.
23
+ * @var string $network
24
+ *
25
+ */
26
+ public $network = '';
27
+
28
+
29
+ /**
30
+ * Alias of $network.
31
+ * @var string $key
32
+ *
33
+ */
34
+ public $key = '';
35
+
36
+
37
+ /**
38
+ * Whether or not we have registered credentials for this network.
39
+ * @var bool $has_credentials;
40
+ *
41
+ */
42
+ public $has_credentials = false;
43
+
44
+
45
+ /**
46
+ * The Social Warfare API key.
47
+ *
48
+ * This must be manually set on a per-network basis in the
49
+ * SWFW_Follow_Network __construct() method.
50
+ *
51
+ * @var string $client_secret;
52
+ *
53
+ */
54
+ protected $client_key = '';
55
+
56
+
57
+ /**
58
+ * The Social Warfare API secret.
59
+ *
60
+ * This must be manually set on a per-network basis in the
61
+ * SWFW_Follow_Network __construct() method.
62
+ *
63
+ * @var string $client_secret;
64
+ *
65
+ */
66
+ protected $client_secret = '';
67
+
68
+
69
+ /**
70
+ * The user's API key.
71
+ * @var string $consumer_key;
72
+ *
73
+ */
74
+ protected $consumer_key = '';
75
+
76
+
77
+ /**
78
+ * The user's API secret.
79
+ * @var string $access_secret;
80
+ *
81
+ */
82
+ protected $access_secret = '';
83
+
84
+
85
+ public function __construct( $network_key ) {
86
+ if ( empty( $network_key ) ) {
87
+ error_log('Please provide a network_key when constructing an SWP_Auth_Controller.');
88
+ return;
89
+ }
90
+
91
+ $this->network = $network_key;
92
+ $this->key = $network_key;
93
+ $this->establish_credentials();
94
+ }
95
+
96
+
97
+ /**
98
+ * Provides the SWP API key, if it exists.
99
+ *
100
+ * @since 3.5.0 | 03 JAN 2018 | Created.
101
+ * @param void
102
+ * @return mixed String if the key exists, else false.
103
+ *
104
+ */
105
+ public function get_access_token() {
106
+ return $this->has_credentials ? $this->access_token : false;
107
+ }
108
+
109
+
110
+ /**
111
+ * Provides the SWP API secret, if it exists.
112
+ *
113
+ * @since 3.5.0 | 03 JAN 2018 | Created.
114
+ * @param void
115
+ * @return mixed String if the key exists, else false.
116
+ *
117
+ */
118
+ public function get_access_secret() {
119
+ return $this->has_credentials ? $this->access_secret : false;
120
+ }
121
+
122
+
123
+ /**
124
+ * Fetches stored client credentials.
125
+ *
126
+ * A returned value of `false` indicates that the user needs to
127
+ * go through the authentication process. Retun value of `true`
128
+ * means we can proceed with th request.
129
+ *
130
+ * @since 3.5.0 | 03 JAN 2018 | Created.
131
+ * @param void
132
+ * @return bool True iff the credentials exist, else false.
133
+ *
134
+ * @TODO Some networks may only have a key and no secret.
135
+ * Right now both are required, so find a way to distinguish the two.
136
+ *
137
+ */
138
+ public function establish_credentials() {
139
+ $access_token = SWP_Credential_Helper::get_token( $this->network );
140
+
141
+ if ( false === $access_token || empty( $access_token ) ) {
142
+ return false;
143
+ }
144
+
145
+ $access_secret = SWP_Credential_Helper::get_token( $this->network, 'access_secret' );
146
+ if ( !empty( $access_secret ) ) {
147
+ $this->access_secret = $access_secret;
148
+ }
149
+
150
+ $this->access_token = $access_token;
151
+ return $this->has_credentials = true;
152
+ }
153
+
154
+
155
+ public function add_to_authorizations( $network_keys ) {
156
+ return array_merge( $network_keys, array( $this->network ) );
157
+ }
158
+
159
+
160
+ /**
161
+ * Prepares a Log In url for the requested network.
162
+ *
163
+ * @since 3.5.0 | 03 JAN 2018 | Created.
164
+ * @param void
165
+ * @return string The URL which handles the oAuth handshakes.
166
+ *
167
+ */
168
+ public function get_authorization_link() {
169
+ $request_url = 'https://warfareplugins.com/authorizations/' . $this->network . '/request_token.php';
170
+ return add_query_arg('return_address', admin_url('?page=social-warfare'), $request_url);
171
+ }
172
+
173
+
174
+ /**
175
+ * Provides a URL to revoke access to connected apps.
176
+ *
177
+ * Requires that the user already be logged in to the network.
178
+ *
179
+ * @since 3.5.0 | 15 JAN 2019 | Created.
180
+ * @param void
181
+ * @return string The URL which handles the revoke access action.
182
+ *
183
+ */
184
+ public function get_revoke_access_url() {
185
+ switch( $this->network ) {
186
+
187
+ case 'facebook' :
188
+ return 'https://www.facebook.com/settings?tab=applications';
189
+
190
+ case 'instagram' :
191
+ return 'https://www.instagram.com/accounts/manage_access/';
192
+
193
+ case 'pinterest' :
194
+ return 'https://www.pinterest.com/settings#apps';
195
+
196
+ case 'twitter' :
197
+ return 'https://twitter.com/settings/sessions';
198
+
199
+ case 'tumblr' :
200
+ return 'https://www.tumblr.com/settings/apps';
201
+
202
+ case 'vimeo' :
203
+ return 'https://vimeo.com/settings/apps';
204
+
205
+ default:
206
+ return false;
207
+ }
208
+ }
209
+
210
+ public function get_auth_button_text() {
211
+ switch ( $this->network ) {
212
+ case 'facebook' :
213
+ return '<i class="sw swp_facebook_icon"></i> Continue with Facebook';
214
+
215
+ default :
216
+ return '<i class="sw swp_'.$this->key.'_icon"></i> Login with ' . ucfirst( $this->key );
217
+ }
218
+ }
219
+ }
lib/utilities/SWP_CURL.php CHANGED
@@ -98,10 +98,10 @@ class SWP_CURL {
98
  return $result;
99
  }
100
 
101
- public static function file_get_contents_curl( $url ) {
102
  $ch = curl_init();
 
103
  curl_setopt( $ch, CURLOPT_URL, $url );
104
- curl_setopt( $ch, CURLOPT_HEADER, 0 );
105
  curl_setopt( $ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
106
  curl_setopt( $ch, CURLOPT_FAILONERROR, 0 );
107
  curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 0 );
@@ -112,6 +112,14 @@ class SWP_CURL {
112
  curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5 );
113
  curl_setopt( $ch, CURLOPT_NOSIGNAL, 1 );
114
  curl_setopt( $ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
 
 
 
 
 
 
 
 
115
  $cont = @curl_exec( $ch );
116
  $curl_errno = curl_errno( $ch );
117
  curl_close( $ch );
98
  return $result;
99
  }
100
 
101
+ public static function file_get_contents_curl( $url, $headers = null) {
102
  $ch = curl_init();
103
+
104
  curl_setopt( $ch, CURLOPT_URL, $url );
 
105
  curl_setopt( $ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
106
  curl_setopt( $ch, CURLOPT_FAILONERROR, 0 );
107
  curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 0 );
112
  curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5 );
113
  curl_setopt( $ch, CURLOPT_NOSIGNAL, 1 );
114
  curl_setopt( $ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
115
+
116
+ if ( $headers ) {
117
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
118
+ }
119
+ else {
120
+ curl_setopt( $ch, CURLOPT_HEADER, 0 );
121
+ }
122
+
123
  $cont = @curl_exec( $ch );
124
  $curl_errno = curl_errno( $ch );
125
  curl_close( $ch );
lib/utilities/SWP_Credential_Helper.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Of data we handle, log in credentials and access tokens are the most sensitive.
4
+ * We want to keep them as safe and secure as possible.
5
+ *
6
+ * We encode the entire swp_authorizations option, as well as the keys and
7
+ * values for those options. This way no sensitive data is kept as plaintext
8
+ * in the database.
9
+ *
10
+ * Since we are using two way encoding/decoding, this means other users who
11
+ * know the encoding functions are also able to access this data.
12
+ *
13
+ * To prevent this would be to store the data in our own server,
14
+ * rather than the user's server, but that is not an option.
15
+ *
16
+ */
17
+ class SWP_Credential_Helper {
18
+
19
+
20
+ public static $swp_authorizations;
21
+
22
+
23
+ /**
24
+ * Retrieve a token granted by a third party service.
25
+ *
26
+ * We use base64_encode so that no network name or token is stored as
27
+ * plaintext in the database.
28
+ *
29
+ * This is not the same as hashing it like a password.
30
+ *
31
+ * @since 3.5.0 | 10 JAN 2018 | Created.
32
+ * @param string $network The host service that provided the token.
33
+ * @param string $field The type of token to fetch. Usually 'access_token'.
34
+ * @return mixed A string token, if it exists, else `false`.
35
+ *
36
+ */
37
+ public static function get_token( $network, $field = 'access_token' ) {
38
+ $encoded_tokens = self::get_authorizations();
39
+ $encoded_key = base64_encode( $network );
40
+ $encoded_field = base64_encode( $field );
41
+
42
+ // We do not have any data for this network.
43
+ if ( empty ( $encoded_tokens[$encoded_key] ) ) {
44
+ return false;
45
+ }
46
+
47
+
48
+ if ( !empty( $encoded_tokens[$encoded_key][$encoded_field] ) ) {
49
+ $encoded_token = $encoded_tokens[$encoded_key][$encoded_field];
50
+ return base64_decode( $encoded_token );
51
+ }
52
+
53
+ // We do not have the requested type of token for this network.
54
+ return false;
55
+ }
56
+
57
+
58
+ /**
59
+ * Deletes network data, if it exists.
60
+ *
61
+ * @since 3.5.0 | 10 JAN 2018 | Created.
62
+ * @param string $network The network with data to delete.
63
+ * @param string $field The type of data to remove. Most often 'access_token'.
64
+ * @return bool True iff deleted, else false.
65
+ *
66
+ */
67
+ public static function delete_token( $network, $field = 'access_token' ) {
68
+ // No encoding/decoding necessary. It is handled in store_data.
69
+ return self::store_data( $network, $field, '' );
70
+ }
71
+
72
+
73
+ /**
74
+ * When processing network authentications, the user is ultimately
75
+ * redirected back to the Social Warfare options.
76
+ *
77
+ * If the authentication was a success, we can store the token for later use.
78
+ *
79
+ * The paramters these functions look for are generated in
80
+ * https://warfareplugins.com/authorizations/${network}/return_token.php.
81
+ *
82
+ * @since 3.5.0 | 10 JAN 2018 | Created.
83
+ * @param void
84
+ * @return void
85
+ *
86
+ */
87
+ public static function options_page_scan_url() {
88
+ if ( empty( $_GET['network'] ) || empty( $_GET['access_token'] ) ) {
89
+ return false;
90
+ }
91
+
92
+ // We have a new access_token.
93
+ $network = $_GET['network'];
94
+ self::store_data( $network, 'access_token', $_GET['access_token'] );
95
+
96
+ // Not every network uses access_secret.
97
+ if ( isset( $_GET['access_secret'] ) ) {
98
+ self::store_data( $network, 'access_secret', $_GET['access_secret'] );
99
+ }
100
+ }
101
+
102
+
103
+ /**
104
+ * Fetches and prepares options for use by SWP_Credential_Helper.
105
+ *
106
+ * The encoding is not secure, but it obfuscates the data.
107
+ *
108
+ * @since 3.5.0 | 10 JAN 2018 | Created.
109
+ * @param array $authorizations The data to store.
110
+ * @return array The authorizations, or an empty array.
111
+ *
112
+ */
113
+ public static function get_authorizations() {
114
+ if ( !empty( self::$swp_authorizations ) ) {
115
+ return self::$swp_authorizations;
116
+ }
117
+
118
+ $encoded_json = get_option( 'swp_authorizations', array() );
119
+ if ( empty( $encoded_json ) ) {
120
+ return array();
121
+ }
122
+
123
+ $encoded_tokens = json_decode( base64_decode( $encoded_json ), true );
124
+ self::$swp_authorizations = $encoded_tokens;
125
+
126
+ return $encoded_tokens;
127
+ }
128
+
129
+
130
+ /**
131
+ * Save a token granted by a third party service.
132
+ *
133
+ * We use base64_encode so that no network name or token is stored as
134
+ * plaintext in the database.
135
+ *
136
+ * This is not the same as hashing it like a password.
137
+ *
138
+ * @since 3.5.0 | 10 JAN 2018 | Created.
139
+ * @param string $network The host service that provided the token.
140
+ * @param string $field The type of token to fetch. Usually 'access_token'.
141
+ * @return bool True iff updated, else false.
142
+ *
143
+ */
144
+ public static function store_data( $network, $field, $data ) {
145
+ $encoded_key = base64_encode( $network );
146
+ $encoded_field = base64_encode( $field );
147
+ $encoded_data = base64_encode( $data );
148
+
149
+ $encoded_tokens = self::get_authorizations();
150
+
151
+ /**
152
+ * A network may have both an access key and access secret.
153
+ * Setting $tokens[$network_key] as an array keeps the network
154
+ * open for arbitrary data storage.
155
+ *
156
+ */
157
+ if ( empty( $encoded_tokens[$encoded_key] ) ) {
158
+ $encoded_tokens[$encoded_key] = array();
159
+ }
160
+
161
+ $encoded_tokens[$encoded_key][$encoded_field] = $encoded_data;
162
+
163
+ return self::update_authorizations( $encoded_tokens );
164
+ }
165
+
166
+
167
+ /**
168
+ * Encodes and stores the options in the database.
169
+ *
170
+ * The encoding is not secure, but it obfuscates the data.
171
+ *
172
+ * @since 3.5.0 | 10 JAN 2018 | Created.
173
+ * @param array $authorizations The data to store.
174
+ * @return bool True iff the options were successfully updated.
175
+ *
176
+ */
177
+ public static function update_authorizations( $encoded_tokens ) {
178
+ if ( !is_array( $encoded_tokens ) ) {
179
+ error_log( 'SWP_Credential_Helper->update_options() requires parameter 1 to be an array.' );
180
+ return false;
181
+ }
182
+
183
+ $encoded_json = base64_encode( json_encode( $encoded_tokens ) );
184
+
185
+ self::$swp_authorizations = $encoded_tokens;
186
+ return update_option( 'swp_authorizations', $encoded_json );
187
+ }
188
+ }
lib/utilities/SWP_Database_Migration.php CHANGED
@@ -23,21 +23,21 @@ class SWP_Database_Migration {
23
  public $last_migrated = '3.0.5';
24
 
25
 
26
- /**
27
- * Checks to see if we are on the most up-to-date database schema.
28
- *
29
- * If not, runs the migration and updators.
30
- *
31
- * @since 3.0.0 | 01 MAY 2018 | Created the function
32
- * @param void
33
- * @return void
34
- *
35
- */
36
- public function __construct() {
37
  global $post;
38
  // Queue up the migrate features to run after plugins are loaded.
39
- add_action( 'plugins_loaded', array( $this, 'init' ), 100 );
40
- }
41
 
42
 
43
  /**
@@ -48,27 +48,52 @@ class SWP_Database_Migration {
48
  * @return void
49
  *
50
  */
51
- public function init() {
52
 
53
  // Check for and migrate the settings page data.
54
- if ( !$this->database_is_migrated() ) {
55
- $this->migrate();
56
- }
57
 
58
  // Initialize the database for new installs.
59
- if ( !$this->has_3_0_0_settings() ) {
60
- $this->initialize_database();
61
- }
62
 
63
  // Check for and migrate the post meta fields.
64
- if ( !$this->post_meta_is_migrated() ) {
65
- $this->update_post_meta();
66
- $this->update_hidden_post_meta();
67
  $this->update_last_migrated();
68
- }
69
 
70
  $this->debug_parameters();
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  public function print_post_meta() {
74
  global $post;
@@ -80,7 +105,7 @@ class SWP_Database_Migration {
80
  $meta = get_post_meta( $post->ID );
81
 
82
  if ( !$meta ) {
83
- $meta = array();
84
  }
85
  else {
86
  $keys = array();
@@ -88,7 +113,7 @@ class SWP_Database_Migration {
88
 
89
  foreach ( $meta as $key => $value ) {
90
  if ( ( strpos( $key, 'swp_' ) === 0
91
- || ( strpos( $key, '_shares' ) > 0 ) && strpos( $key, '_') === 0 ) ) {
92
  //* Everything comes in as an array, pull out the first value.
93
  $meta[$key] = $value[0];
94
  }
@@ -100,31 +125,33 @@ class SWP_Database_Migration {
100
  ksort( $meta );
101
  }
102
 
103
- $post_fields = array('ID', 'author', 'date_gmt', 'title', 'excerpt', 'status');
104
 
105
  foreach( $post_fields as $field ) {
106
  $key = "post_$field";
107
  $meta["post_$field"] = $post->$key;
108
  }
109
 
 
 
110
  $meta['post_permalink'] = get_permalink( $post->ID ) ;
111
 
112
  echo "<pre>", var_export( $meta ), "</pre>";
113
  wp_die();
114
  }
115
 
116
- /**
117
- *
118
- * This is a patch.
119
- *
120
- * Sets the value of all Pages' post_meta `swp_float_location` to 'default'.
121
- *
122
  * @since 3.4.2 | 12 DEC 2018 | Created
123
- *
124
- * @param string $post_type The type of posts you want to rest.
125
- * @return void
126
- *
127
- */
128
  public function reset_post_meta_float_location( $post_type ) {
129
  global $wpdb;
130
 
@@ -139,11 +166,11 @@ class SWP_Database_Migration {
139
 
140
  foreach ($posts as $post) {
141
  $changed = update_post_meta( $post->ID, 'swp_float_location', 'default' );
142
- if ($changed) {
143
  $count++;
144
  }
145
  }
146
- if ($count) {
147
  echo "Success! $count ${post_type}s updated.";
148
  } else {
149
  echo "No matching posts were found to update.";
@@ -168,39 +195,117 @@ class SWP_Database_Migration {
168
  * @return void
169
  */
170
  public function debug_parameters() {
171
- global $post, $swp_user_options;
172
 
173
 
174
  // Output an array of user options if called via a debugging parameter.
175
  if ( true === SWP_Utility::debug('get_user_options') ) :
176
  $options = get_option( 'social_warfare_settings', array() );
 
177
  ksort( $options );
178
  echo "<pre>", var_export( $options ), "</pre>";
179
  wp_die();
180
  endif;
181
 
182
- if ( true === SWP_Utility::debug('get_filtered_options') ) :
183
- global $swp_user_options;
184
- echo "<pre>";
185
- var_export( $swp_user_options );
186
- echo "</pre>";
187
- wp_die();
188
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
 
190
- if ( true == SWP_Utility::debug('get_post_meta') ) :
 
191
 
192
- add_action( 'template_redirect', array( $this, 'print_post_meta' ) );
 
 
 
 
 
 
193
 
194
- endif;
195
 
196
- /**
197
- * v3.4.1 brought to our attention that the default value for
198
- * post meta `swp_float_location` is 'on' instead of 'deafult'.
199
- *
200
- *This debug paramter has an optional paramter, `post_type`, which defaults to 'page'.
201
- *
202
- * @since 3.4.2
203
- */
 
 
 
 
204
  if ( true == SWP_Utility::debug('reset_float_location') ) {
205
  if (!is_admin()) {
206
  wp_die('You do not have authorization to view this page.');
@@ -252,58 +357,58 @@ class SWP_Database_Migration {
252
  }
253
  }
254
 
255
- /**
256
- * Checks to see if Social Warfare < 3.0.0 options exist.
257
- *
258
- * If these options exist in the databse, we need to move them
259
- * from "socialWarfareOptions" to "social_warfare_settings",
260
- * then
261
- *
262
- * @since 3.0.0 | 01 MAY 2018 | Created the function
263
- * @param void
264
- * @return bool True if migrated, else false.
265
- *
266
- */
267
- public function database_is_migrated() {
268
- $option = get_option( 'social_warfare_settings' , false);
269
- return false !== $option;
270
- }
271
-
272
-
273
- /**
274
- * Checks to see if we have 3.0.0 settings installed or not.
275
- *
276
- * @since 3.0.0 | 01 MAY 2018 | Created the function
277
- * @param void
278
- * @return bool True if the 3.0.0 array exists, otherwise false.
279
- *
280
- */
281
- protected function has_3_0_0_settings() {
282
-
283
- //* Check to see if the 3.0.0 settings exist.
284
- $settings = get_option( 'social_warfare_settings', false );
285
- return is_array( $settings );
286
- }
287
-
288
-
289
- /**
290
- * Tries to get an option that uses the old post_meta keynames.
291
- *
292
- * @since 3.0.0 | 01 MAY 2018 | Created the function
293
- * @param void
294
- * @return bool True if the old option still exists; false otherwise.
295
- *
296
- */
297
- public function post_meta_is_migrated() {
298
- if( $this->last_migrated !== $this->get_last_migrated() ) {
299
- return false;
300
- }
301
-
302
- //* Fetch posts with 2.3.5 metadata.
303
- $old_metadata = get_posts( array( 'meta_key' => 'nc_postLocation', 'numberposts' => 1 ) );
304
-
305
- return count( $old_metadata ) === 0;
306
- }
307
 
308
  /**
309
  * A method for updating the post meta fields.
@@ -314,315 +419,315 @@ class SWP_Database_Migration {
314
  * @return void
315
  *
316
  */
317
- public function update_hidden_post_meta() {
318
- global $wpdb;
319
-
320
- try {
321
- set_time_limit(300);
322
- } catch (Exception $e) {
323
- if ( function_exists( 'error_log' ) ) :
324
- error_log($e->getMessage());
325
- endif;
326
- }
327
-
328
- $hidden_map = array(
329
- '_googlePlus_shares' => '_google_plus_shares',
330
- '_linkedIn_shares' => '_linkedin_shares',
331
- 'bitly_link_googlePlus' => '_bitly_link_google_plus',
332
- 'bitly_link_linkedIn' => '_bitly_link_linked_in'
333
- );
334
-
335
- $query = "
336
- UPDATE " . $wpdb->prefix . "postmeta
337
- SET meta_key = %s
338
- WHERE meta_key = %s
339
- ";
340
-
341
- foreach ( $hidden_map as $old_key => $new_key ) {
342
- //* Make replacements for the first kind of prefix.
343
- $q = $wpdb->prepare( $query, $new_key, $old_key );
344
- $wpdb->query( $q );
345
- }
346
- }
347
-
348
-
349
- /**
350
- * Replaces 2.3.5 camelCased keys with 3.0.0 standardized snake_cased keys.
351
- *
352
- * @since 3.0.0 | 01 MAY 2018 | Created the function
353
- * @since 3.0.6 | 14 MAY 2018 | Added time limit to prevent very large datasets from timing out.
354
- * @param void
355
- * @return void
356
- *
357
- */
358
- public function update_post_meta() {
359
- global $wpdb;
360
-
361
- set_time_limit(300);
362
-
363
- //* Notice there is no prefix on any of the indices.
364
- //* Old code has prefixed these with either "nc_" or "swp_".
365
- //* For simplicity's sake, we'll just check each for both.
366
- $metadata_map = array(
367
- 'ogImage' => 'swp_og_image',
368
- 'ogTitle' => 'swp_og_title',
369
- 'pinterestImage' => 'swp_pinterest_image',
370
- 'customTweet' => 'swp_custom_tweet',
371
- 'postLocation' => 'swp_post_location',
372
- 'floatLocation' => 'swp_float_location',
373
- 'pinterestDescription' => 'swp_pinterest_description',
374
- 'twitterID' => 'swp_twitter_id',
375
- 'ogDescription' => 'swp_og_description',
376
- 'cache_timestamp' => 'swp_cache_timestamp',
377
- 'pin_browser_extension' => 'swp_pin_browser_extension',
378
- 'pin_browser_extension_location' => 'swp_pin_browser_extension_location',
379
- 'pin_browser_extension_url' => 'swp_pin_browser_extension_url',
380
- 'totes' => 'total_shares'
381
- );
382
-
383
- $prefix1 = "nc_";
384
- $prefix2 = "swp_";
385
-
386
- $query = "
387
- UPDATE " . $wpdb->prefix . "postmeta
388
- SET meta_key = %s
389
- WHERE meta_key = %s
390
- ";
391
-
392
- foreach ( $metadata_map as $old_key => $new_key ) {
393
- //* Make replacements for the first kind of prefix.
394
- $q1 = $wpdb->prepare( $query, $new_key, $prefix1 . $old_key );
395
- $results = $wpdb->query( $q1 );
396
-
397
- //* And make replacements for the second kind of prefix.
398
- $q2 = $wpdb->prepare( $query, $new_key, $prefix2 . $old_key );
399
- $results = $wpdb->query( $q2 );
400
- }
401
-
402
- }
403
-
404
-
405
- /**
406
- * Seeds the database with Social Warfare 3.0.0 default values.
407
- *
408
- * @since 3.0.0 | 01 MAY 2018 | Created the function
409
- * @param void
410
- * @return void
411
- *
412
- */
413
- public function initialize_database() {
414
- $defaults = array(
415
- 'location_archive_categories' => 'below',
416
- 'location_home' => 'none',
417
- 'location_post' => 'below',
418
- 'location_page' => 'below',
419
- 'float_location_post' => 'on',
420
- 'float_location_page' => 'off',
421
- 'total_shares' => true,
422
- 'network_shares' => true,
423
- 'twitter_id' => false,
424
- 'swp_twitter_card' => true,
425
- 'button_shape' => 'flatFresh',
426
- 'default_colors' => 'full_color',
427
- 'single_colors' => 'full_color',
428
- 'hover_colors' => 'full_color',
429
- 'float_default_colors' => 'full_color',
430
- 'float_single_colors' => 'full_color',
431
- 'float_hover_colors' => 'fullColor',
432
- 'float_style_source' => true,
433
- 'float_size' => 1,
434
- 'float_alignment' => 'center',
435
- 'button_size' => 1,
436
- 'button_alignment' => 'fullWidth',
437
- 'transition' => 'slide',
438
- 'float_screen_width' => 1100,
439
- 'ctt_theme' => 'style1',
440
- 'ctt_css' => "",
441
- 'twitter_shares' => false,
442
- 'floating_panel' => true,
443
- 'float_location' => 'bottom',
444
- 'float_background_color' => '#ffffff',
445
- 'float_button_shape' => 'default',
446
- 'float_vertical' => 'center',
447
- 'float_button_count' => 5,
448
- 'custom_color' => '#000000',
449
- 'custom_color_outlines' => '#000000',
450
- 'float_custom_color' => '#000000',
451
- 'float_custom_color_outlines' => '#000000',
452
- 'recover_shares' => false,
453
- 'recovery_format' => 'unchanged',
454
- 'recovery_protocol' => 'unchanged',
455
- 'recovery_prefix' => 'unchanged',
456
- 'decimals' => 0,
457
- 'decimal_separator' => 'period',
458
- 'totals_alignment' => 'total_sharesalt',
459
- 'google_analytics' => false,
460
- 'bitly_authentication' => false,
461
- 'minimum_shares' => 0,
462
- 'full_content' => false,
463
- 'frame_buster' => false,
464
- 'analytics_medium' => 'social',
465
- 'analytics_campaign' => 'SocialWarfare',
466
- 'swp_click_tracking' => false,
467
- 'order_of_icons_method' => 'manual',
468
- 'og_post' => 'article',
469
- 'og_page' => 'article',
470
- 'pinterest_image_location' => 'hidden',
471
- 'pin_browser_extension' => false,
472
- 'pinterest_fallback' => 'all',
473
- 'pinit_toggle' => false,
474
- 'pinit_location_horizontal' => 'center',
475
- 'pinit_location_vertical' => 'top',
476
- 'pinit_min_width' => '200',
477
- 'pinit_min_height' => '200',
478
- 'pinit_image_source' => 'image',
479
- 'pinit_image_description' => 'alt_text',
480
- 'utm_on_pins' => false,
481
- 'pin_browser_extension' => false,
482
- 'pin_browser_extension_location' => 'hidden',
483
- 'pinterest_fallback' => 'all',
484
- 'float_mobile' => 'bottom',
485
- 'force_new_shares' => false,
486
- 'cache_method' => 'advanced',
487
- 'order_of_icons' => array(
488
- 'twitter' => 'twitter',
489
- 'linkedIn' => 'linkedin',
490
- 'pinterest' => 'pinterest',
491
- 'facebook' => 'facebook',
492
- 'google_plus' => 'google_plus',
493
- ),
494
- );
495
-
496
- update_option( 'social_warfare_settings', $defaults );
497
- }
498
-
499
-
500
- /**
501
- * Map prevous key/value pairs to new keys.
502
- *
503
- * This also deletes the previous keys once the migration is done.
504
- * @since 3.0.0 | 01 MAY 2018 | Created the function
505
- * @since 3.1.0 | 13 JUN 2018 | Replaced array bracket notation.
506
- * @param void
507
- * @return void
508
- *
509
- */
510
- private function migrate() {
511
- $options = get_option( 'socialWarfareOptions', array() );
512
-
513
- if ( $options === array() ) :
514
- //* The old options do not exist.
515
- return;
516
- endif;
517
-
518
- $map = array(
519
- //* Options names
520
- 'locationSite' => 'location_archive_categories',
521
- 'locationHome' => 'location_home',
522
- 'totesEach' => 'network_shares',
523
- 'totes' => 'total_shares',
524
- 'minTotes' => 'minimum_shares',
525
- 'visualTheme' => 'button_shape',
526
- 'buttonSize' => 'button_size',
527
- 'dColorSet' => 'default_colors',
528
- 'oColorSet' => 'hover_colors',
529
- 'iColorSet' => 'single_colors',
530
- 'swDecimals' => 'decimals',
531
- 'swp_decimal_separator' => 'decimal_separator',
532
- 'swTotesFormat' => 'totals_alignment',
533
- 'float' => 'floating_panel',
534
- 'floatOption' => 'float_location',
535
- 'swp_float_scr_sz' => 'float_screen_width',
536
- 'sideReveal' => 'transition',
537
- 'floatStyle' => 'float_button_shape',
538
- 'floatStyleSource' => 'float_style_source',
539
- 'sideDColorSet' => 'float_default_colors',
540
- 'sideOColorSet' => 'float_hover_colors',
541
- 'sideIColorSet' => 'float_single_colors',
542
- 'swp_twitter_card' => 'twitter_cards',
543
- 'twitterID' => 'twitter_id',
544
- 'pinterestID' => 'pinterest_id',
545
- 'facebookPublisherUrl' => 'facebook_publisher_url',
546
- 'facebookAppID' => 'facebook_app_id',
547
- 'sniplyBuster' => 'frame_buster',
548
- 'linkShortening' => 'bitly_authentication',
549
- 'cacheMethod' => 'cache_method',
550
- 'googleAnalytics' => 'google_analytics',
551
- 'analyticsMedium' => 'analytics_medium',
552
- 'analyticsCampaign' => 'analytics_campaign',
553
- 'advanced_pinterest_image' => 'pin_browser_extension',
554
- 'advanced_pinterest_image_location' => 'pinterest_image_location',
555
- 'pin_browser_extension_location' => 'pin_browser_extension_location',
556
- 'advanced_pinterest_fallback' => 'pinterest_fallback',
557
- 'recovery_custom_format' => 'recovery_permalink',
558
- 'cttTheme' => 'ctt_theme',
559
- 'cttCSS' => 'ctt_css',
560
- 'sideCustomColor' => 'single_custom_color',
561
- 'floatBgColor' => 'float_background_color',
562
- 'orderOfIconsSelect' => 'order_of_icons_method',
563
  'newOrderOfIcons' => 'order_of_icons',
564
- );
565
-
566
- $value_map = array(
567
- 'flatFresh' => 'flat_fresh',
568
- 'threeDee' => 'three_dee',
569
- 'fullColor' => 'full_color',
570
- 'lightGray' => 'light_gray',
571
- 'mediumGray' => 'medium_gray',
572
- 'darkGray' => 'dark_gray',
573
- 'lgOutlines' => 'light_gray_outlines',
574
- 'mdOutlines' => 'medium_gray_outlines',
575
- 'dgOutlines' => 'dark_gray_outlines',
576
- 'colorOutlines' => 'color_outlines',
577
- 'customColor' => 'custom_color',
578
- 'ccOutlines' => 'custom_color_outlines',
579
- 'totesAlt' => 'totals_right',
580
- 'totesAltLeft' => 'totals_left',
581
- 'buttonFloat' => 'button_alignment',
582
- 'post' => 'location_post',
583
- 'page' => 'location_page',
584
- 'float_vertical'=> 'float_alignment',
585
- 'fullWidth' => 'full_width',
586
- 'floatLeftMobile' => 'float_mobile',
587
- );
588
-
589
- $migrations = array();
590
-
591
- foreach( $options as $old => $value ) {
592
- //* The order of icons used to be stored in an array at 'active'.
593
- if ( is_array( $value) && array_key_exists( 'active', $value) ) :
594
- $new_value = $value;
595
- //* Filter out the booleans and integers.
596
- elseif ( is_string( $value ) ):
597
- $new_value = array_key_exists($value, $value_map) ? $value_map[$value] : $value;
598
- else :
599
- $new_value = $value;
600
- endif;
601
-
602
- //* Specific case: newOrderOfIcons mapping.
603
- if ( 'newOrderOfIcons' === $old ) :
604
- if ( array_key_exists( 'googlePlus', $new_value ) ) :
605
- unset( $new_value['googlePlus'] );
606
- $new_value[] = 'google_plus';
607
- endif;
608
-
609
- if (array_key_exists( 'linkedIn', $new_value) ) :
610
- unset( $new_value['linkedIn'] );
611
- $new_value[] = 'linkedin';
612
- endif;
613
- endif;
614
-
615
- //* Specific case: customColor mapping.
616
- if ( $old === 'customColor' ) :
617
- $migrations['custom_color'] = $new_value;
618
- $migrations['custom_color_outlines'] = $new_value;
619
 
620
  // If the float style source is set to inherit the style from the static buttons.
621
- if ( $options['floatStyleSource'] == true ) :
622
- $migrations['float_custom_color'] = $new_value;
623
- $migrations['float_custom_color_outlines'] = $new_value;
624
- endif;
625
- endif;
626
 
627
  // Only if the source is set to not inherit them from the static buttons.
628
  if ( $old === 'sideCustomColor' ) :
@@ -630,59 +735,59 @@ class SWP_Database_Migration {
630
  $migrations['float_custom_color_outlines'] = $new_value;
631
  endif;
632
 
633
- if ( array_key_exists( $old, $map) ) :
634
- //* We specified an update to the key.
635
- $new = $map[$old];
636
- $migrations[$new] = $new_value;
637
- else :
638
- //* The previous key was fine, keep it.
639
- $migrations[$old] = $new_value;
640
- endif;
641
-
642
- }
643
-
644
- //* Manually adding these in as short term solution.
645
- if ( !isset( $migrations['float_size'] ) ) :
646
- $migrations['float_size'] = '1';
647
- endif;
648
-
649
- if ( !isset( $migrations['float_location'] ) ) :
650
- $migrations['float_location'] = 'bottom';
651
- endif;
652
-
653
- if ( !isset( $migrations['float_alignment'] ) ) :
654
- $migrations['float_alignment'] = 'center';
655
- endif;
656
-
657
- $custom_colors = array( 'custom_color', 'custom_color_outlines', 'float_custom_color', 'float_custom_color_outlines' );
658
-
659
- foreach( $custom_colors as $color ) {
660
- if ( !isset($migrations[$color] ) ) :
661
- $migrations[$color] = "#333333";
662
- endif;
663
- }
664
-
665
- $removals = array(
666
- 'dashboardShares',
667
- 'rawNumbers',
668
- 'notShowing',
669
- 'visualEditorBug',
670
- 'loopFix',
671
- 'locationrevision',
672
- 'locationattachment',
673
- );
674
-
675
- foreach ( $removals as $trash ) :
676
- if ( ( $migrations[$trash] ) ) :
677
- unset($migrations[$trash]);
678
- endif;
679
- endforeach;
680
-
681
- update_option( 'social_warfare_settings', $migrations );
682
- //* Play it safe for now.
683
- //* Leave socialWarfareOptions in the database.
684
- // delete_option( 'socialWarfareOptions' );
685
- }
686
 
687
 
688
  /**
@@ -697,24 +802,24 @@ class SWP_Database_Migration {
697
  * @return mixed (str) Version number if found, (bool) false if not found.
698
  *
699
  */
700
- public function get_last_migrated( $echo = false ) {
701
- $options = get_option( 'social_warfare_settings' );
702
 
703
- if ( array_key_exists( 'last_migrated', $options ) ) :
704
- if ( true === $echo ) :
705
- var_dump( $options['last_migrated'] );
706
- endif;
707
 
708
- return $options['last_migrated'];
709
- endif;
710
 
711
- if ( true === $echo ) :
712
- echo "No previous migration version has been set.";
713
- endif;
714
 
715
- return false;
716
 
717
- }
718
 
719
 
720
  /**
@@ -725,10 +830,10 @@ class SWP_Database_Migration {
725
  * @return void
726
  *
727
  */
728
- public function update_last_migrated() {
729
- $options = get_option( 'social_warfare_settings' );
730
- $options['last_migrated'] = $this->last_migrated;
731
 
732
- update_option( 'social_warfare_settings', $options );
733
- }
734
  }
23
  public $last_migrated = '3.0.5';
24
 
25
 
26
+ /**
27
+ * Checks to see if we are on the most up-to-date database schema.
28
+ *
29
+ * If not, runs the migration and updators.
30
+ *
31
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
32
+ * @param void
33
+ * @return void
34
+ *
35
+ */
36
+ public function __construct() {
37
  global $post;
38
  // Queue up the migrate features to run after plugins are loaded.
39
+ add_action( 'plugins_loaded', array( $this, 'init' ), 100 );
40
+ }
41
 
42
 
43
  /**
48
  * @return void
49
  *
50
  */
51
+ public function init() {
52
 
53
  // Check for and migrate the settings page data.
54
+ if ( !$this->database_is_migrated() ) {
55
+ $this->migrate();
56
+ }
57
 
58
  // Initialize the database for new installs.
59
+ if ( !$this->has_3_0_0_settings() ) {
60
+ $this->initialize_database();
61
+ }
62
 
63
  // Check for and migrate the post meta fields.
64
+ if ( !$this->post_meta_is_migrated() ) {
65
+ $this->update_post_meta();
66
+ $this->update_hidden_post_meta();
67
  $this->update_last_migrated();
68
+ }
69
 
70
  $this->debug_parameters();
71
+ }
72
+
73
+
74
+ /**
75
+ * Removes sensitive data from otherwise arbitrary data.
76
+ *
77
+ * @since 3.5.2 | 28 FEB 2019 | Created.
78
+ * @param array $options The information to filter.
79
+ * @return array $options The same but without licenses or tokens.
80
+ *
81
+ */
82
+ public static function filter_options( $options ) {
83
+ foreach( $options as $key => $value) {
84
+ if (strpos( $key, 'license' ) > 0) {
85
+ unset( $options[$key] );
86
+ }
87
+ if (strpos( $key, 'token' ) > 0) {
88
+ unset( $options[$key] );
89
+ }
90
+ if (strpos( $key, 'login' ) > 0) {
91
+ unset( $options[$key] );
92
+ }
93
+ }
94
+
95
+ return $options;
96
+ }
97
 
98
  public function print_post_meta() {
99
  global $post;
105
  $meta = get_post_meta( $post->ID );
106
 
107
  if ( !$meta ) {
108
+ $meta = array();
109
  }
110
  else {
111
  $keys = array();
113
 
114
  foreach ( $meta as $key => $value ) {
115
  if ( ( strpos( $key, 'swp_' ) === 0
116
+ || ( strpos( $key, '_shares' ) > 0 ) && strpos( $key, '_') === 0 ) ) {
117
  //* Everything comes in as an array, pull out the first value.
118
  $meta[$key] = $value[0];
119
  }
125
  ksort( $meta );
126
  }
127
 
128
+ $post_fields = array('author', 'date_gmt', 'title', 'excerpt', 'status', 'type');
129
 
130
  foreach( $post_fields as $field ) {
131
  $key = "post_$field";
132
  $meta["post_$field"] = $post->$key;
133
  }
134
 
135
+ $meta['\$post->ID'] = $post->ID;
136
+
137
  $meta['post_permalink'] = get_permalink( $post->ID ) ;
138
 
139
  echo "<pre>", var_export( $meta ), "</pre>";
140
  wp_die();
141
  }
142
 
143
+ /**
144
+ *
145
+ * This is a patch.
146
+ *
147
+ * Sets the value of all Pages' post_meta `swp_float_location` to 'default'.
148
+ *
149
  * @since 3.4.2 | 12 DEC 2018 | Created
150
+ *
151
+ * @param string $post_type The type of posts you want to rest.
152
+ * @return void
153
+ *
154
+ */
155
  public function reset_post_meta_float_location( $post_type ) {
156
  global $wpdb;
157
 
166
 
167
  foreach ($posts as $post) {
168
  $changed = update_post_meta( $post->ID, 'swp_float_location', 'default' );
169
+ if ($changed) {
170
  $count++;
171
  }
172
  }
173
+ if ($count) {
174
  echo "Success! $count ${post_type}s updated.";
175
  } else {
176
  echo "No matching posts were found to update.";
195
  * @return void
196
  */
197
  public function debug_parameters() {
198
+ global $post, $swp_user_options;
199
 
200
 
201
  // Output an array of user options if called via a debugging parameter.
202
  if ( true === SWP_Utility::debug('get_user_options') ) :
203
  $options = get_option( 'social_warfare_settings', array() );
204
+ $options = SWP_Database_Migration::filter_options( $options );
205
  ksort( $options );
206
  echo "<pre>", var_export( $options ), "</pre>";
207
  wp_die();
208
  endif;
209
 
210
+ // /**
211
+ // * Output text representation of array of user options if called via a debugging parameter.
212
+ // * Text is formatted for use with `eval`.
213
+ // *
214
+ // * @since 3.5.0 | 14 DEC 2018 | Created.
215
+ // */
216
+ // if ( true === SWP_Utility::debug('get_user_options_raw') ) {
217
+ // $options = get_option( 'social_warfare_settings', array() );
218
+ // die(var_export('return ' . $options . ';'));
219
+ // }
220
+
221
+
222
+ /**
223
+ * Migrates options from $_GET['swp_url'] to the current site.
224
+ *
225
+ * @since 3.4.2
226
+ */
227
+ if ( true == SWP_Utility::debug('load_options') ) {
228
+ if (!is_admin()) {
229
+ wp_die('You do not have authorization to view this page.');
230
+ }
231
+
232
+ $options = file_get_contents($_GET['swp_url'] . '?swp_debug=get_user_options');
233
+
234
+ //* Bad url.
235
+ if (!$options) {
236
+ wp_die('nothing found');
237
+ }
238
+
239
+ $pre = strpos($options, '<pre>');
240
+ if ($pre != 0) {
241
+ wp_die('No Social Warfare found.');
242
+ }
243
+
244
+ $options = str_replace('<pre>', '', $options);
245
+ $cutoff = strpos($options, '</pre>');
246
+ $options = substr($options, 0, $cutoff);
247
+
248
+ $array = 'return ' . $options . ';';
249
+
250
+ try {
251
+ $fetched_options = eval( $array );
252
+ }
253
+ catch (ParseError $e) {
254
+ $message = 'Error evaluating fetched data. <br/>';
255
+ $message .= 'Message from error: ' . $e->getMessage() . '<br/>';
256
+ $message .= 'Fetched data: <br/>';
257
+ $message .= var_export($fetched_options, 1);
258
+ wp_die($message);
259
+ }
260
+
261
+ if (is_array( $fetched_options) ) {
262
+ foreach( $fetched_options as $key => $value) {
263
+ if (strpos( $key, 'license' ) > 0) {
264
+ unset( $fetched_options[$key] );
265
+ }
266
+ if (strpos( $key, 'token' ) > 0) {
267
+ unset( $fetched_options[$key] );
268
+ }
269
+ if (strpos( $key, 'login' ) > 0) {
270
+ unset( $fetched_options[$key] );
271
+ }
272
+ }
273
+ //* Preserve filtered data, such as license keys.
274
+ $new_options = array_merge( get_option('social_warfare_settings'), $fetched_options );
275
+
276
+ if (update_option( 'social_warfare_settings', $new_options )) {
277
+ wp_die('Social Warfare settings updated to match ' . $_GET['swp_url']);
278
+ }
279
+ else {
280
+ wp_die('Tried to update settings to match ' . $_GET['swp_url'] . ', but something went wrong or no options changed.');
281
+ }
282
+ }
283
 
284
+ wp_die('No changes made.');
285
+ }
286
 
287
+ if ( true === SWP_Utility::debug('get_filtered_options') ) :
288
+ global $swp_user_options;
289
+ echo "<pre>";
290
+ var_export( SWP_Database_Migration::filter_options( $swp_user_options ) );
291
+ echo "</pre>";
292
+ wp_die();
293
+ endif;
294
 
295
+ if ( true == SWP_Utility::debug('get_post_meta') ) :
296
 
297
+ add_action( 'template_redirect', array( $this, 'print_post_meta' ) );
298
+
299
+ endif;
300
+
301
+ /**
302
+ * v3.4.1 brought to our attention that the default value for
303
+ * post meta `swp_float_location` is 'on' instead of 'deafult'.
304
+ *
305
+ *This debug paramter has an optional paramter, `post_type`, which defaults to 'page'.
306
+ *
307
+ * @since 3.4.2
308
+ */
309
  if ( true == SWP_Utility::debug('reset_float_location') ) {
310
  if (!is_admin()) {
311
  wp_die('You do not have authorization to view this page.');
357
  }
358
  }
359
 
360
+ /**
361
+ * Checks to see if Social Warfare < 3.0.0 options exist.
362
+ *
363
+ * If these options exist in the databse, we need to move them
364
+ * from "socialWarfareOptions" to "social_warfare_settings",
365
+ * then
366
+ *
367
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
368
+ * @param void
369
+ * @return bool True if migrated, else false.
370
+ *
371
+ */
372
+ public function database_is_migrated() {
373
+ $option = get_option( 'social_warfare_settings' , false);
374
+ return false !== $option;
375
+ }
376
+
377
+
378
+ /**
379
+ * Checks to see if we have 3.0.0 settings installed or not.
380
+ *
381
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
382
+ * @param void
383
+ * @return bool True if the 3.0.0 array exists, otherwise false.
384
+ *
385
+ */
386
+ protected function has_3_0_0_settings() {
387
+
388
+ //* Check to see if the 3.0.0 settings exist.
389
+ $settings = get_option( 'social_warfare_settings', false );
390
+ return is_array( $settings );
391
+ }
392
+
393
+
394
+ /**
395
+ * Tries to get an option that uses the old post_meta keynames.
396
+ *
397
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
398
+ * @param void
399
+ * @return bool True if the old option still exists; false otherwise.
400
+ *
401
+ */
402
+ public function post_meta_is_migrated() {
403
+ if( $this->last_migrated !== $this->get_last_migrated() ) {
404
+ return false;
405
+ }
406
+
407
+ //* Fetch posts with 2.3.5 metadata.
408
+ $old_metadata = get_posts( array( 'meta_key' => 'nc_postLocation', 'numberposts' => 1 ) );
409
+
410
+ return count( $old_metadata ) === 0;
411
+ }
412
 
413
  /**
414
  * A method for updating the post meta fields.
419
  * @return void
420
  *
421
  */
422
+ public function update_hidden_post_meta() {
423
+ global $wpdb;
424
+
425
+ try {
426
+ set_time_limit(300);
427
+ } catch (Exception $e) {
428
+ if ( function_exists( 'error_log' ) ) :
429
+ error_log($e->getMessage());
430
+ endif;
431
+ }
432
+
433
+ $hidden_map = array(
434
+ '_googlePlus_shares' => '_google_plus_shares',
435
+ '_linkedIn_shares' => '_linkedin_shares',
436
+ 'bitly_link_googlePlus' => '_bitly_link_google_plus',
437
+ 'bitly_link_linkedIn' => '_bitly_link_linked_in'
438
+ );
439
+
440
+ $query = "
441
+ UPDATE " . $wpdb->prefix . "postmeta
442
+ SET meta_key = %s
443
+ WHERE meta_key = %s
444
+ ";
445
+
446
+ foreach ( $hidden_map as $old_key => $new_key ) {
447
+ //* Make replacements for the first kind of prefix.
448
+ $q = $wpdb->prepare( $query, $new_key, $old_key );
449
+ $wpdb->query( $q );
450
+ }
451
+ }
452
+
453
+
454
+ /**
455
+ * Replaces 2.3.5 camelCased keys with 3.0.0 standardized snake_cased keys.
456
+ *
457
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
458
+ * @since 3.0.6 | 14 MAY 2018 | Added time limit to prevent very large datasets from timing out.
459
+ * @param void
460
+ * @return void
461
+ *
462
+ */
463
+ public function update_post_meta() {
464
+ global $wpdb;
465
+
466
+ set_time_limit(300);
467
+
468
+ //* Notice there is no prefix on any of the indices.
469
+ //* Old code has prefixed these with either "nc_" or "swp_".
470
+ //* For simplicity's sake, we'll just check each for both.
471
+ $metadata_map = array(
472
+ 'ogImage' => 'swp_og_image',
473
+ 'ogTitle' => 'swp_og_title',
474
+ 'pinterestImage' => 'swp_pinterest_image',
475
+ 'customTweet' => 'swp_custom_tweet',
476
+ 'postLocation' => 'swp_post_location',
477
+ 'floatLocation' => 'swp_float_location',
478
+ 'pinterestDescription' => 'swp_pinterest_description',
479
+ 'twitterID' => 'swp_twitter_id',
480
+ 'ogDescription' => 'swp_og_description',
481
+ 'cache_timestamp' => 'swp_cache_timestamp',
482
+ 'pin_browser_extension' => 'swp_pin_browser_extension',
483
+ 'pin_browser_extension_location' => 'swp_pin_browser_extension_location',
484
+ 'pin_browser_extension_url' => 'swp_pin_browser_extension_url',
485
+ 'totes' => 'total_shares'
486
+ );
487
+
488
+ $prefix1 = "nc_";
489
+ $prefix2 = "swp_";
490
+
491
+ $query = "
492
+ UPDATE " . $wpdb->prefix . "postmeta
493
+ SET meta_key = %s
494
+ WHERE meta_key = %s
495
+ ";
496
+
497
+ foreach ( $metadata_map as $old_key => $new_key ) {
498
+ //* Make replacements for the first kind of prefix.
499
+ $q1 = $wpdb->prepare( $query, $new_key, $prefix1 . $old_key );
500
+ $results = $wpdb->query( $q1 );
501
+
502
+ //* And make replacements for the second kind of prefix.
503
+ $q2 = $wpdb->prepare( $query, $new_key, $prefix2 . $old_key );
504
+ $results = $wpdb->query( $q2 );
505
+ }
506
+
507
+ }
508
+
509
+
510
+ /**
511
+ * Seeds the database with Social Warfare 3.0.0 default values.
512
+ *
513
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
514
+ * @param void
515
+ * @return void
516
+ *
517
+ */
518
+ public function initialize_database() {
519
+ $defaults = array(
520
+ 'location_archive_categories' => 'below',
521
+ 'location_home' => 'none',
522
+ 'location_post' => 'below',
523
+ 'location_page' => 'below',
524
+ 'float_location_post' => 'on',
525
+ 'float_location_page' => 'off',
526
+ 'total_shares' => true,
527
+ 'network_shares' => true,
528
+ 'twitter_id' => false,
529
+ 'swp_twitter_card' => true,
530
+ 'button_shape' => 'flatFresh',
531
+ 'default_colors' => 'full_color',
532
+ 'single_colors' => 'full_color',
533
+ 'hover_colors' => 'full_color',
534
+ 'float_default_colors' => 'full_color',
535
+ 'float_single_colors' => 'full_color',
536
+ 'float_hover_colors' => 'fullColor',
537
+ 'float_style_source' => true,
538
+ 'float_size' => 1,
539
+ 'float_alignment' => 'center',
540
+ 'button_size' => 1,
541
+ 'button_alignment' => 'fullWidth',
542
+ 'transition' => 'slide',
543
+ 'float_screen_width' => 1100,
544
+ 'ctt_theme' => 'style1',
545
+ 'ctt_css' => "",
546
+ 'twitter_shares' => false,
547
+ 'floating_panel' => true,
548
+ 'float_location' => 'bottom',
549
+ 'float_background_color' => '#ffffff',
550
+ 'float_button_shape' => 'default',
551
+ 'float_vertical' => 'center',
552
+ 'float_button_count' => 5,
553
+ 'custom_color' => '#000000',
554
+ 'custom_color_outlines' => '#000000',
555
+ 'float_custom_color' => '#000000',
556
+ 'float_custom_color_outlines' => '#000000',
557
+ 'recover_shares' => false,
558
+ 'recovery_format' => 'unchanged',
559
+ 'recovery_protocol' => 'unchanged',
560
+ 'recovery_prefix' => 'unchanged',
561
+ 'decimals' => 0,
562
+ 'decimal_separator' => 'period',
563
+ 'totals_alignment' => 'total_sharesalt',
564
+ 'google_analytics' => false,
565
+ 'bitly_authentication' => false,
566
+ 'minimum_shares' => 0,
567
+ 'full_content' => false,
568
+ 'frame_buster' => false,
569
+ 'analytics_medium' => 'social',
570
+ 'analytics_campaign' => 'SocialWarfare',
571
+ 'swp_click_tracking' => false,
572
+ 'order_of_icons_method' => 'manual',
573
+ 'og_post' => 'article',
574
+ 'og_page' => 'article',
575
+ 'pinterest_image_location' => 'hidden',
576
+ 'pin_browser_extension' => false,
577
+ 'pinterest_fallback' => 'all',
578
+ 'pinit_toggle' => false,
579
+ 'pinit_location_horizontal' => 'center',
580
+ 'pinit_location_vertical' => 'top',
581
+ 'pinit_min_width' => '200',
582
+ 'pinit_min_height' => '200',
583
+ 'pinit_image_source' => 'image',
584
+ 'pinit_image_description' => 'alt_text',
585
+ 'utm_on_pins' => false,
586
+ 'pin_browser_extension' => false,
587
+ 'pin_browser_extension_location' => 'hidden',
588
+ 'pinterest_fallback' => 'all',
589
+ 'float_mobile' => 'bottom',
590
+ 'force_new_shares' => false,
591
+ 'cache_method' => 'advanced',
592
+ 'order_of_icons' => array(
593
+ 'twitter' => 'twitter',
594
+ 'linkedIn' => 'linkedin',
595
+ 'pinterest' => 'pinterest',
596
+ 'facebook' => 'facebook',
597
+ 'google_plus' => 'google_plus',
598
+ ),
599
+ );
600
+
601
+ update_option( 'social_warfare_settings', $defaults );
602
+ }
603
+
604
+
605
+ /**
606
+ * Map prevous key/value pairs to new keys.
607
+ *
608
+ * This also deletes the previous keys once the migration is done.
609
+ * @since 3.0.0 | 01 MAY 2018 | Created the function
610
+ * @since 3.1.0 | 13 JUN 2018 | Replaced array bracket notation.
611
+ * @param void
612
+ * @return void
613
+ *
614
+ */
615
+ private function migrate() {
616
+ $options = get_option( 'socialWarfareOptions', array() );
617
+
618
+ if ( $options === array() ) :
619
+ //* The old options do not exist.
620
+ return;
621
+ endif;
622
+
623
+ $map = array(
624
+ //* Options names
625
+ 'locationSite' => 'location_archive_categories',
626
+ 'locationHome' => 'location_home',
627
+ 'totesEach' => 'network_shares',
628
+ 'totes' => 'total_shares',
629
+ 'minTotes' => 'minimum_shares',
630
+ 'visualTheme' => 'button_shape',
631
+ 'buttonSize' => 'button_size',
632
+ 'dColorSet' => 'default_colors',
633
+ 'oColorSet' => 'hover_colors',
634
+ 'iColorSet' => 'single_colors',
635
+ 'swDecimals' => 'decimals',
636
+ 'swp_decimal_separator' => 'decimal_separator',
637
+ 'swTotesFormat' => 'totals_alignment',
638
+ 'float' => 'floating_panel',
639
+ 'floatOption' => 'float_location',
640
+ 'swp_float_scr_sz' => 'float_screen_width',
641
+ 'sideReveal' => 'transition',
642
+ 'floatStyle' => 'float_button_shape',
643
+ 'floatStyleSource' => 'float_style_source',
644
+ 'sideDColorSet' => 'float_default_colors',
645
+ 'sideOColorSet' => 'float_hover_colors',
646
+ 'sideIColorSet' => 'float_single_colors',
647
+ 'swp_twitter_card' => 'twitter_cards',
648
+ 'twitterID' => 'twitter_id',
649
+ 'pinterestID' => 'pinterest_id',
650
+ 'facebookPublisherUrl' => 'facebook_publisher_url',
651
+ 'facebookAppID' => 'facebook_app_id',
652
+ 'sniplyBuster' => 'frame_buster',
653
+ 'linkShortening' => 'bitly_authentication',
654
+ 'cacheMethod' => 'cache_method',
655
+ 'googleAnalytics' => 'google_analytics',
656
+ 'analyticsMedium' => 'analytics_medium',
657
+ 'analyticsCampaign' => 'analytics_campaign',
658
+ 'advanced_pinterest_image' => 'pin_browser_extension',
659
+ 'advanced_pinterest_image_location' => 'pinterest_image_location',
660
+ 'pin_browser_extension_location' => 'pin_browser_extension_location',
661
+ 'advanced_pinterest_fallback' => 'pinterest_fallback',
662
+ 'recovery_custom_format' => 'recovery_permalink',
663
+ 'cttTheme' => 'ctt_theme',
664
+ 'cttCSS' => 'ctt_css',
665
+ 'sideCustomColor' => 'single_custom_color',
666
+ 'floatBgColor' => 'float_background_color',
667
+ 'orderOfIconsSelect' => 'order_of_icons_method',
668
  'newOrderOfIcons' => 'order_of_icons',
669
+ );
670
+
671
+ $value_map = array(
672
+ 'flatFresh' => 'flat_fresh',
673
+ 'threeDee' => 'three_dee',
674
+ 'fullColor' => 'full_color',
675
+ 'lightGray' => 'light_gray',
676
+ 'mediumGray' => 'medium_gray',
677
+ 'darkGray' => 'dark_gray',
678
+ 'lgOutlines' => 'light_gray_outlines',
679
+ 'mdOutlines' => 'medium_gray_outlines',
680
+ 'dgOutlines' => 'dark_gray_outlines',
681
+ 'colorOutlines' => 'color_outlines',
682
+ 'customColor' => 'custom_color',
683
+ 'ccOutlines' => 'custom_color_outlines',
684
+ 'totesAlt' => 'totals_right',
685
+ 'totesAltLeft' => 'totals_left',
686
+ 'buttonFloat' => 'button_alignment',
687
+ 'post' => 'location_post',
688
+ 'page' => 'location_page',
689
+ 'float_vertical'=> 'float_alignment',
690
+ 'fullWidth' => 'full_width',
691
+ 'floatLeftMobile' => 'float_mobile',
692
+ );
693
+
694
+ $migrations = array();
695
+
696
+ foreach( $options as $old => $value ) {
697
+ //* The order of icons used to be stored in an array at 'active'.
698
+ if ( is_array( $value) && array_key_exists( 'active', $value) ) :
699
+ $new_value = $value;
700
+ //* Filter out the booleans and integers.
701
+ elseif ( is_string( $value ) ):
702
+ $new_value = array_key_exists($value, $value_map) ? $value_map[$value] : $value;
703
+ else :
704
+ $new_value = $value;
705
+ endif;
706
+
707
+ //* Specific case: newOrderOfIcons mapping.
708
+ if ( 'newOrderOfIcons' === $old ) :
709
+ if ( array_key_exists( 'googlePlus', $new_value ) ) :
710
+ unset( $new_value['googlePlus'] );
711
+ $new_value[] = 'google_plus';
712
+ endif;
713
+
714
+ if (array_key_exists( 'linkedIn', $new_value) ) :
715
+ unset( $new_value['linkedIn'] );
716
+ $new_value[] = 'linkedin';
717
+ endif;
718
+ endif;
719
+
720
+ //* Specific case: customColor mapping.
721
+ if ( $old === 'customColor' ) :
722
+ $migrations['custom_color'] = $new_value;
723
+ $migrations['custom_color_outlines'] = $new_value;
724
 
725
  // If the float style source is set to inherit the style from the static buttons.
726
+ if ( $options['floatStyleSource'] == true ) :
727
+ $migrations['float_custom_color'] = $new_value;
728
+ $migrations['float_custom_color_outlines'] = $new_value;
729
+ endif;
730
+ endif;
731
 
732
  // Only if the source is set to not inherit them from the static buttons.
733
  if ( $old === 'sideCustomColor' ) :
735
  $migrations['float_custom_color_outlines'] = $new_value;
736
  endif;
737
 
738
+ if ( array_key_exists( $old, $map) ) :
739
+ //* We specified an update to the key.
740
+ $new = $map[$old];
741
+ $migrations[$new] = $new_value;
742
+ else :
743
+ //* The previous key was fine, keep it.
744
+ $migrations[$old] = $new_value;
745
+ endif;
746
+
747
+ }
748
+
749
+ //* Manually adding these in as short term solution.
750
+ if ( !isset( $migrations['float_size'] ) ) :
751
+ $migrations['float_size'] = '1';
752
+ endif;
753
+
754
+ if ( !isset( $migrations['float_location'] ) ) :
755
+ $migrations['float_location'] = 'bottom';
756
+ endif;
757
+
758
+ if ( !isset( $migrations['float_alignment'] ) ) :
759
+ $migrations['float_alignment'] = 'center';
760
+ endif;
761
+
762
+ $custom_colors = array( 'custom_color', 'custom_color_outlines', 'float_custom_color', 'float_custom_color_outlines' );
763
+
764
+ foreach( $custom_colors as $color ) {
765
+ if ( !isset($migrations[$color] ) ) :
766
+ $migrations[$color] = "#333333";
767
+ endif;
768
+ }
769
+
770
+ $removals = array(
771
+ 'dashboardShares',
772
+ 'rawNumbers',
773
+ 'notShowing',
774
+ 'visualEditorBug',
775
+ 'loopFix',
776
+ 'locationrevision',
777
+ 'locationattachment',
778
+ );
779
+
780
+ foreach ( $removals as $trash ) :
781
+ if ( ( $migrations[$trash] ) ) :
782
+ unset($migrations[$trash]);
783
+ endif;
784
+ endforeach;
785
+
786
+ update_option( 'social_warfare_settings', $migrations );
787
+ //* Play it safe for now.
788
+ //* Leave socialWarfareOptions in the database.
789
+ // delete_option( 'socialWarfareOptions' );
790
+ }
791
 
792
 
793
  /**
802
  * @return mixed (str) Version number if found, (bool) false if not found.
803
  *
804
  */
805
+ public function get_last_migrated( $echo = false ) {
806
+ $options = get_option( 'social_warfare_settings' );
807
 
808
+ if ( array_key_exists( 'last_migrated', $options ) ) :
809
+ if ( true === $echo ) :
810
+ var_dump( $options['last_migrated'] );
811
+ endif;
812
 
813
+ return $options['last_migrated'];
814
+ endif;
815
 
816
+ if ( true === $echo ) :
817
+ echo "No previous migration version has been set.";
818
+ endif;
819
 
820
+ return false;
821
 
822
+ }
823
 
824
 
825
  /**
830
  * @return void
831
  *
832
  */
833
+ public function update_last_migrated() {
834
+ $options = get_option( 'social_warfare_settings' );
835
+ $options['last_migrated'] = $this->last_migrated;
836
 
837
+ update_option( 'social_warfare_settings', $options );
838
+ }
839
  }
lib/utilities/SWP_Post_Cache.php CHANGED
@@ -71,7 +71,7 @@ class SWP_Post_Cache {
71
  *
72
  * This method 1.) instantiates the object
73
  * making the public methods available for use by the plugin, and
74
- * 2.) Determine if the cache is fresh, and if not, trigger an
75
  * asyncronous request to rebuild the cached data.
76
  *
77
  * @todo Can we eliminate all post data except for the post_id?
@@ -80,20 +80,20 @@ class SWP_Post_Cache {
80
  * @return void
81
  *
82
  */
83
- public function __construct( $post_id ) {
84
 
85
  // Set up the post data into local properties.
86
  $this->post_id = $post_id;
87
- $this->establish_share_counts();
88
 
89
  // If the cache is expired, trigger the rebuild processes.
90
- if ( false === $this->is_cache_fresh() ){
91
  $this->rebuild_cached_data();
92
- }
93
 
94
  // Debugging
95
  $this->debug();
96
- }
97
 
98
 
99
  /**
@@ -120,8 +120,8 @@ class SWP_Post_Cache {
120
  public function is_cache_fresh() {
121
  // Bail early if it's a crawl bot. If so, ONLY SERVE CACHED RESULTS FOR MAXIMUM SPEED.
122
  if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/bot|crawl|slurp|spider/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) :
123
- return true;
124
- endif;
125
 
126
  // Always be true if we're not a single post.
127
  if ( !is_singular() ) :
@@ -138,26 +138,26 @@ class SWP_Post_Cache {
138
  return false;
139
  }
140
 
141
- // Check if the cache is older than is allowable for this post.
142
- if( $this->get_cache_age() >= $this->get_allowable_age() ):
143
- return false;
144
- endif;
145
 
146
- return true;
147
 
148
- }
149
 
150
 
151
- /**
152
- * Determines how recently, in hours, the cache has been updated.
153
- *
154
- * @since 3.1.0 | 19 JUN 2018 | Created the method.
155
- * @todo Review
156
- * @param void
157
- * @return int The current age of the cache in hours.
158
- *
159
- */
160
- protected function get_cache_age() {
161
 
162
 
163
  /**
@@ -165,8 +165,8 @@ class SWP_Post_Cache {
165
  * so that we can compare them to find out how old the cache is.
166
  *
167
  */
168
- $current_time = floor( ( ( date( 'U' ) / 60 ) / 60 ) );
169
- $last_updated_time = get_post_meta( $this->post_id, 'swp_cache_timestamp', true );
170
 
171
 
172
  /**
@@ -175,9 +175,9 @@ class SWP_Post_Cache {
175
  * so that we can use it in the mathematical comparisons.
176
  *
177
  */
178
- if ( false == is_numeric( $last_updated_time ) ) {
179
- $last_updated_time = 0;
180
- }
181
 
182
 
183
  /**
@@ -185,30 +185,30 @@ class SWP_Post_Cache {
185
  * determine the age of the cache.
186
  *
187
  */
188
- $cache_age = $current_time - $last_updated_time;
189
-
190
- return $cache_age;
191
- }
192
-
193
-
194
- /**
195
- * Get the duration during which this cache can be considered fresh.
196
- *
197
- * A cache is fresh for the following durations:
198
- * 1 Hour - New Posts less than 21 days old.
199
- * 4 Hours - Medium Posts less than 60 days old.
200
- * 12 Hours - Old Posts Older than 60 days old.
201
- * 24 Hours - Share counts are disabled, but we still need to fetch
202
- * periodically for the admin post column and popular posts
203
- * widget to have data to puplate correctly.
204
- *
205
- * @since 3.1.0 | 20 JUN 2018 | Created
206
- * @since 3.4.0 | Added check for share counts being active.
207
- * @param void
208
- * @return integer The duration in hours that applies to this cache.
209
- *
210
- */
211
- public function get_allowable_age() {
212
 
213
 
214
  /**
@@ -224,24 +224,24 @@ class SWP_Post_Cache {
224
  return 24;
225
  }
226
 
227
- // Integer in hours of the current age of the post.
228
- $current_time = floor( date( 'U' ) );
229
  $publication_time = get_post_time( 'U' , false , $this->post_id );
230
- $post_age = $current_time - $publication_time;
231
 
232
- // If it's less than 21 days old.
233
- if ( $post_age < ( 21 * 86400 ) ) {
234
- return 1;
235
  }
236
 
237
  // If it's less than 60 days old.
238
- if ( $post_age < ( 60 * 86400 ) ) {
239
- return 4;
240
- }
241
 
242
- // If it's really old.
243
- return 12;
244
- }
245
 
246
 
247
  /**
@@ -268,14 +268,13 @@ class SWP_Post_Cache {
268
  * @return void
269
  *
270
  */
271
- public function rebuild_cached_data() {
272
-
273
  if( true === $this->is_post_published() ) {
274
  $this->rebuild_share_counts();
275
- $this->rebuild_pinterest_image();
276
- $this->rebuild_open_graph_image();
277
  $this->process_urls();
278
- $this->reset_timestamp();
279
 
280
  // A hook to allow third-party functions to run.
281
  do_action( 'swp_cache_rebuild', $this->post_id );
@@ -315,151 +314,68 @@ class SWP_Post_Cache {
315
  *
316
  */
317
  public function process_urls() {
318
- global $swp_social_networks;
319
- $permalink = get_permalink( $this->post_id );
320
- foreach( $swp_social_networks as $network ) {
321
- if( $network->is_active() ) {
322
- SWP_URL_Management::process_url( $permalink, $network->key, $this->post_id, false );
323
- }
324
- }
325
  }
326
 
 
 
 
 
 
 
 
 
 
 
 
327
 
328
- /**
329
- * Pinterest Image
330
- *
331
- * Convert the pinterest image ID to a URL and store it in a meta field
332
- * because then the URL will be autoloaded with the post preventing the
333
- * need for an additional database query during page loads.
334
- *
335
- * @since 3.1.0 | 19 JUN 2018 | Ported from function to class method.
336
- * @since 3.4.0 | 18 OCT 2018 | Refactored, simplified, docblocked.
337
- * @access protected
338
- * @param void
339
- * @return void
340
- *
341
- */
342
- public function rebuild_pinterest_image() {
343
-
344
- // Check if a custom pinterest image has been declared
345
- $pinterest_image_id = get_post_meta( $this->post_id , 'swp_pinterest_image' , true );
346
-
347
-
348
- /**
349
- * If there is no user defined Pinterest image, delete the cached
350
- * field, if it exists, and then return.
351
- *
352
- */
353
- if ( false === $pinterest_image_id ) {
354
- delete_post_meta( $this->post_id , 'swp_pinterest_image_url' );
355
- return;
356
  }
357
 
358
-
359
  /**
360
- * Fetch the URL of the currently assigned image and the URL of the
361
  * previously cached image so that we can see if anything has changed.
362
  *
363
  */
364
- $pinterest_image_url = wp_get_attachment_url( $pinterest_image_id );
365
- $current_image_url = get_post_meta( $this->post_id , 'swp_pinterest_image_url' , true );
366
-
367
-
368
- /**
369
- * No need to update the database if the image URL has not changed
370
- *
371
- */
372
- if( $pinterest_image_url === $current_image_url ){
373
- return;
374
- }
375
-
376
-
377
- /**
378
- * If the image has changed, we need to delete the old one and replace
379
- * it with the new one.
380
- *
381
- */
382
- delete_post_meta( $this->post_id,'swp_pinterest_image_url' );
383
- update_post_meta( $this->post_id,'swp_pinterest_image_url' , $pinterest_image_url );
384
-
385
- }
386
-
387
-
388
- /**
389
 
390
- * Open Graph Image
391
- *
392
- * Convert the open graph image ID to a URL and store it in a meta field
393
- * because then the URL will be autoloaded with the post preventing the
394
- * need for an additional database query during page loads.
395
- *
396
- * @since 3.1.0 | 19 JUN 2018 | Ported from function to class method.
397
- * @access protected
398
- * @param void
399
- * @return void
400
- *
401
- */
402
- public function rebuild_open_graph_image() {
403
-
404
- // Fetch the social media image that was declared by the user.
405
- $image_id = get_post_meta( $this->post_id , 'swp_og_image' , true );
406
-
407
-
408
- /**
409
- * If there is no user defined social media image, delete the cached
410
- * field, if it exists, and then return.
411
- *
412
- */
413
- if ( false === $image_id ) {
414
- delete_post_meta( $this->post_id, 'swp_open_graph_image_url' );
415
  return;
416
  }
417
 
 
 
418
 
419
- /**
420
- * Fetch the URL of the currently assigned image and the URL of the
421
- * previously cached image so that we can see if anything has changed.
422
- *
423
- */
424
- $new_image_url = wp_get_attachment_url( $image_id );
425
- $current_image_url = get_post_meta( $this->post_id, 'swp_open_graph_image_url' , true );
426
-
427
- // No need to update the DB if the url hasn't changed
428
- if( $current_image_url === $new_image_url ) {
429
  return;
430
  }
431
 
432
-
433
- /**
434
- * For this image, we're going to cache both the URL and some image data.
435
- * When we generate the OG tags, we'll then have access to cached data
436
- * like the width and height of the image.
437
- *
438
- */
439
- $image_data = wp_get_attachment_image_src( $image_id, 'full' );
440
-
441
- delete_post_meta( $this->post_id, 'swp_open_graph_image_data' );
442
- delete_post_meta( $this->post_id, 'swp_open_graph_image_url' );
443
-
444
- update_post_meta( $this->post_id, 'swp_open_graph_image_data', json_encode( $image_data ) );
445
- update_post_meta( $this->post_id, 'swp_open_graph_image_url', $new_image_url );
446
-
447
- }
448
 
449
 
450
- /**
451
- * Resets the cache timestamp to the current time in hours since Unix epoch.
452
- *
453
- * @since 3.1.0 | 19 JUN 2018 | Ported from function to class method.
454
- * @access protected
455
- * @param void
456
- * @return void
457
- *
458
- */
459
- public function reset_timestamp() {
460
- delete_post_meta( $this->post_id, 'swp_cache_timestamp' );
461
- update_post_meta( $this->post_id, 'swp_cache_timestamp', floor( ( ( date( 'U' ) / 60 ) / 60 ) ) );
462
- }
463
 
464
 
465
  /**
@@ -476,33 +392,33 @@ class SWP_Post_Cache {
476
 
477
 
478
  /**
479
- * Finishes processing the share data after the network links have been set up.
480
- *
481
- * The flow of logic should look something like this:
482
- * establish_permalinks(); $this->permalinks;
483
- * establish_api_request_urls(); $this->api_urls;
484
- * fetch_api_responses(); $this->raw_api_responses;
485
- * parse_api_responses(); $this->parsed_api_responses;
486
- * calculate_network_shares(); $this->share_counts;
487
- * calculate_total_shares(); $this->share_counts['total_shares'];
488
- * cache_share_counts(); Stored in DB post meta.
489
- *
490
- * @since 3.1.0 | 21 JUN 2018 | Created
491
- * @access protected
492
- * @param void
493
- * @return void
494
- *
495
- */
496
- protected function rebuild_share_counts() {
497
 
498
  $this->establish_permalinks();
499
- $this->establish_api_request_urls();
500
- $this->fetch_api_responses();
501
- $this->parse_api_responses();
502
- $this->calculate_network_shares();
503
- $this->cache_share_counts();
504
 
505
- }
506
 
507
 
508
  /**
@@ -514,17 +430,17 @@ class SWP_Post_Cache {
514
  * allow a filter for programatic adding of others, and so on.
515
  *
516
  * The processed results will be stored in $this->permalinks.
517
- * @var permalinks Links to be checked for share counts during the
518
- * share count update process.
519
  *
520
  * @since 3.1.0 | 21 JUN 2018 | Created
521
  * @param void
522
  * @return void
523
  *
524
  */
525
- protected function establish_permalinks() {
526
- global $swp_social_networks;
527
- $this->permalinks = array();
528
 
529
 
530
  /**
@@ -532,7 +448,7 @@ class SWP_Post_Cache {
532
  * networks, and find the permalinks to check for each one.
533
  *
534
  */
535
- foreach( $swp_social_networks as $key => $object) {
536
 
537
 
538
  /**
@@ -541,8 +457,8 @@ class SWP_Post_Cache {
541
  *
542
  */
543
  if ( false == $object->active ) {
544
- continue;
545
- }
546
 
547
 
548
  /**
@@ -550,7 +466,7 @@ class SWP_Post_Cache {
550
  * standard permalink by default for checking for share counts.
551
  *
552
  */
553
- $this->permalinks[$key][] = get_permalink( $this->post_id );
554
 
555
 
556
  /**
@@ -559,9 +475,9 @@ class SWP_Post_Cache {
559
  * for which to fetch share counts.
560
  *
561
  */
562
- if( true === SWP_Utility::get_option('recover_shares') ) {
563
- $this->permalinks[$key][] = SWP_Permalink::get_alt_permalink( $this->post_id );
564
- }
565
 
566
 
567
  /**
@@ -569,34 +485,34 @@ class SWP_Post_Cache {
569
  * which to check for share counts.
570
  *
571
  */
572
- $this->permalinks = apply_filters( 'swp_recovery_filter', $this->permalinks );
573
-
574
- }
575
- }
576
-
577
-
578
- /**
579
- * Prepares outbound API links per network.
580
- *
581
- * @since 3.1.0 | 25 JUN 2018 | Created the method.
582
- * @var api_urls The array of outbound API request destinations.
583
- * @param void
584
- * @return void
585
- *
586
- */
587
- protected function establish_api_request_urls() {
588
- global $swp_social_networks;
589
- $this->api_urls = array();
590
-
591
- foreach ( $this->permalinks as $network => $links ) {
592
  $current_request = 0;
593
- foreach( $links as $url ) {
594
- $this->api_urls[$current_request][$network] = $swp_social_networks[$network]->get_api_link( $url );
595
  ++$current_request;
596
  }
597
- }
598
 
599
- }
600
 
601
 
602
  /**
@@ -612,14 +528,13 @@ class SWP_Post_Cache {
612
  * @return void All data is stored in local properties.
613
  *
614
  */
615
- protected function fetch_api_responses() {
616
  $current_request = 0;
617
- foreach ( $this->api_urls as $request => $networks ) {
618
- $this->raw_api_responses[$current_request] = SWP_CURL::fetch_shares_via_curl_multi( $networks );
619
- $current_request++;
620
- }
621
-
622
- }
623
 
624
 
625
  /**
@@ -635,8 +550,8 @@ class SWP_Post_Cache {
635
  * @return void Processed data is stored in local properties.
636
  *
637
  */
638
- protected function parse_api_responses() {
639
- global $swp_social_networks;
640
 
641
 
642
  /**
@@ -644,21 +559,21 @@ class SWP_Post_Cache {
644
  * populated just gracefully bail out and stop processing.
645
  *
646
  */
647
- if ( empty( $this->raw_api_responses ) ) {
648
- return;
649
- }
650
 
651
- $this->parsed_api_responses = array();
652
 
653
- foreach( $this->raw_api_responses as $request => $responses ) {
654
- $current_request = 0;
655
 
656
- foreach ( $responses as $key => $response ) {
657
- $this->parsed_api_responses[$current_request][$key][] = $swp_social_networks[$key]->parse_api_response( $response );
658
- $current_request++;
659
- }
660
- }
661
- }
662
 
663
 
664
  /**
@@ -679,8 +594,8 @@ class SWP_Post_Cache {
679
  * @return void All data stored in local properties.
680
  *
681
  */
682
- protected function calculate_network_shares() {
683
- global $swp_social_networks;
684
 
685
 
686
  /**
@@ -688,13 +603,13 @@ class SWP_Post_Cache {
688
  * populated just gracefully bail out and stop processing.
689
  *
690
  */
691
- if ( empty( $this->parsed_api_responses ) ) {
692
- return;
693
- }
694
 
695
- $share_counts = array();
696
  $share_counts['total_shares'] = 0;
697
- $checked_networks = array();
698
 
699
 
700
  /**
@@ -703,8 +618,8 @@ class SWP_Post_Cache {
703
  * remaining networks that didn't have API requests/responses.
704
  *
705
  */
706
- foreach ( $this->parsed_api_responses as $request => $networks ) {
707
- foreach ( $networks as $network => $count_array ) {
708
 
709
 
710
  /**
@@ -716,17 +631,23 @@ class SWP_Post_Cache {
716
  *
717
  */
718
  $count_array = array_unique( $count_array );
719
- foreach ( $count_array as $count ) {
720
- if ( !isset( $share_counts[$network] ) ) {
721
- $share_counts[$network] = 0;
722
- }
 
 
 
 
 
 
 
 
 
 
 
723
 
724
- $share_counts[$network] += $count;
725
- }
726
 
727
- $checked_networks[] = $network;
728
- }
729
- }
730
 
731
 
732
  /**
@@ -738,7 +659,7 @@ class SWP_Post_Cache {
738
  * parameter to force it to do so.
739
  *
740
  */
741
- foreach( SWP_Utility::get_option( 'order_of_icons' ) as $network ) {
742
  $count = 0;
743
 
744
 
@@ -747,7 +668,7 @@ class SWP_Post_Cache {
747
  * then let's start by using the count fetched from the API.
748
  *
749
  */
750
- if ( in_array( $network, $checked_networks ) ) {
751
  $count = $share_counts[$network];
752
  }
753
 
@@ -772,7 +693,6 @@ class SWP_Post_Cache {
772
  $count = $previous_count;
773
  }
774
 
775
-
776
  /**
777
  * Iterate the total shares with our new numbers, and then store
778
  * this network's count in the local property for caching and
@@ -780,12 +700,12 @@ class SWP_Post_Cache {
780
  *
781
  */
782
  $share_counts['total_shares'] += $count;
783
- $share_counts[$network] = $count;
784
 
785
- }
786
 
787
- $this->share_counts = $share_counts;
788
- }
789
 
790
 
791
  /**
@@ -802,7 +722,7 @@ class SWP_Post_Cache {
802
  * @return void
803
  *
804
  */
805
- protected function cache_share_counts() {
806
 
807
 
808
  /**
@@ -810,9 +730,9 @@ class SWP_Post_Cache {
810
  * share counts to cache in the database so just bail out.
811
  *
812
  */
813
- if ( empty( $this->share_counts ) ) {
814
- return;
815
- }
816
 
817
 
818
  /**
@@ -820,18 +740,18 @@ class SWP_Post_Cache {
820
  * counts in the databse in custom fields.
821
  *
822
  */
823
- foreach( $this->share_counts as $key => $count ) {
824
- if ( 'total_shares' === $key ) {
825
- continue;
826
- }
827
 
828
- delete_post_meta( $this->post_id, "_${key}_shares");
829
- update_post_meta( $this->post_id, "_${key}_shares", $this->share_counts[$key] );
830
- }
831
 
832
- delete_post_meta( $this->post_id, '_total_shares');
833
- update_post_meta( $this->post_id, '_total_shares', $this->share_counts['total_shares'] );
834
- }
835
 
836
 
837
  /**
@@ -871,12 +791,12 @@ class SWP_Post_Cache {
871
  */
872
  foreach( $swp_social_networks as $network => $network_object ) {
873
 
874
- $count = get_post_meta( $this->post_id, '_' . $network . '_shares', true );
875
  $this->share_counts[$network] = $count ? $count : 0;
876
  }
877
 
878
- $total = get_post_meta( $this->post_id, '_total_shares', true );
879
- $this->share_counts['total_shares'] = $total ? $total : 0;
880
  }
881
 
882
 
71
  *
72
  * This method 1.) instantiates the object
73
  * making the public methods available for use by the plugin, and
74
+ * 2.) Determine if the cache is fresh, and if not, trigger an
75
  * asyncronous request to rebuild the cached data.
76
  *
77
  * @todo Can we eliminate all post data except for the post_id?
80
  * @return void
81
  *
82
  */
83
+ public function __construct( $post_id ) {
84
 
85
  // Set up the post data into local properties.
86
  $this->post_id = $post_id;
87
+ $this->establish_share_counts();
88
 
89
  // If the cache is expired, trigger the rebuild processes.
90
+ if ( false === $this->is_cache_fresh() ){
91
  $this->rebuild_cached_data();
92
+ }
93
 
94
  // Debugging
95
  $this->debug();
96
+ }
97
 
98
 
99
  /**
120
  public function is_cache_fresh() {
121
  // Bail early if it's a crawl bot. If so, ONLY SERVE CACHED RESULTS FOR MAXIMUM SPEED.
122
  if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/bot|crawl|slurp|spider/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) :
123
+ return true;
124
+ endif;
125
 
126
  // Always be true if we're not a single post.
127
  if ( !is_singular() ) :
138
  return false;
139
  }
140
 
141
+ // Check if the cache is older than is allowable for this post.
142
+ if( $this->get_cache_age() >= $this->get_allowable_age() ):
143
+ return false;
144
+ endif;
145
 
146
+ return true;
147
 
148
+ }
149
 
150
 
151
+ /**
152
+ * Determines how recently, in hours, the cache has been updated.
153
+ *
154
+ * @since 3.1.0 | 19 JUN 2018 | Created the method.
155
+ * @todo Review
156
+ * @param void
157
+ * @return int The current age of the cache in hours.
158
+ *
159
+ */
160
+ protected function get_cache_age() {
161
 
162
 
163
  /**
165
  * so that we can compare them to find out how old the cache is.
166
  *
167
  */
168
+ $current_time = floor( ( ( date( 'U' ) / 60 ) / 60 ) );
169
+ $last_updated_time = get_post_meta( $this->post_id, 'swp_cache_timestamp', true );
170
 
171
 
172
  /**
175
  * so that we can use it in the mathematical comparisons.
176
  *
177
  */
178
+ if ( false == is_numeric( $last_updated_time ) ) {
179
+ $last_updated_time = 0;
180
+ }
181
 
182
 
183
  /**
185
  * determine the age of the cache.
186
  *
187
  */
188
+ $cache_age = $current_time - $last_updated_time;
189
+
190
+ return $cache_age;
191
+ }
192
+
193
+
194
+ /**
195
+ * Get the duration during which this cache can be considered fresh.
196
+ *
197
+ * A cache is fresh for the following durations:
198
+ * 1 Hour - New Posts less than 21 days old.
199
+ * 4 Hours - Medium Posts less than 60 days old.
200
+ * 12 Hours - Old Posts Older than 60 days old.
201
+ * 24 Hours - Share counts are disabled, but we still need to fetch
202
+ * periodically for the admin post column and popular posts
203
+ * widget to have data to puplate correctly.
204
+ *
205
+ * @since 3.1.0 | 20 JUN 2018 | Created
206
+ * @since 3.4.0 | Added check for share counts being active.
207
+ * @param void
208
+ * @return integer The duration in hours that applies to this cache.
209
+ *
210
+ */
211
+ public function get_allowable_age() {
212
 
213
 
214
  /**
224
  return 24;
225
  }
226
 
227
+ // Integer in hours of the current age of the post.
228
+ $current_time = floor( date( 'U' ) );
229
  $publication_time = get_post_time( 'U' , false , $this->post_id );
230
+ $post_age = $current_time - $publication_time;
231
 
232
+ // If it's less than 21 days old.
233
+ if ( $post_age < ( 21 * 86400 ) ) {
234
+ return 1;
235
  }
236
 
237
  // If it's less than 60 days old.
238
+ if ( $post_age < ( 60 * 86400 ) ) {
239
+ return 4;
240
+ }
241
 
242
+ // If it's really old.
243
+ return 12;
244
+ }
245
 
246
 
247
  /**
268
  * @return void
269
  *
270
  */
271
+ public function rebuild_cached_data() {
 
272
  if( true === $this->is_post_published() ) {
273
  $this->rebuild_share_counts();
274
+ $this->update_image_cache( 'swp_pinterest_image' );
275
+ $this->update_image_cache( 'swp_og_image' );
276
  $this->process_urls();
277
+ $this->reset_timestamp();
278
 
279
  // A hook to allow third-party functions to run.
280
  do_action( 'swp_cache_rebuild', $this->post_id );
314
  *
315
  */
316
  public function process_urls() {
317
+ global $swp_social_networks;
318
+ $permalink = get_permalink( $this->post_id );
319
+ foreach( $swp_social_networks as $network ) {
320
+ if( $network->is_active() ) {
321
+ SWP_URL_Management::process_url( $permalink, $network->key, $this->post_id, false );
322
+ }
323
+ }
324
  }
325
 
326
+ /**
327
+ * Store image url, id, and metadata in post_meta for quicker access later.
328
+ *
329
+ * @since 3.5.0 | 19 DEC 2018 | Merged old methods into this new method.
330
+ * @param string $meta_key The image field to update. Known examples include
331
+ * swp_og_image, swp_pinterest_image, swp_twitter_image
332
+ * @param int $new_id The attachment ID to update.
333
+ * @return void
334
+ */
335
+ public function update_image_cache( $meta_key ) {
336
+ $new_id = SWP_Utility::get_meta( $this->post_id, $meta_key );
337
 
338
+ if ( false === $new_id ) {
339
+ return delete_post_meta( $this->post_id, $meta_key );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
  }
341
 
 
342
  /**
343
+ * Fetch the URL of the new image and the URL of the
344
  * previously cached image so that we can see if anything has changed.
345
  *
346
  */
347
+ $new_data = wp_get_attachment_image_src( $new_id, 'full_size' );
348
+ $old_data = SWP_Utility::get_meta_array( $this->post_id, $meta_key.'_data' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
 
350
+ if ( is_array($new_data) && $new_data[0] === $old_data[0] ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
  return;
352
  }
353
 
354
+ delete_post_meta( $this->post_id, $meta_key.'_data' );
355
+ delete_post_meta( $this->post_id, $meta_key.'_url' );
356
 
357
+ if ( !is_array($new_data) ) {
 
 
 
 
 
 
 
 
 
358
  return;
359
  }
360
 
361
+ update_post_meta( $this->post_id, $meta_key.'_data', json_encode( $new_data ) );
362
+ update_post_meta( $this->post_id, $meta_key.'_url', $new_data[0] );
363
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
364
 
365
 
366
+ /**
367
+ * Resets the cache timestamp to the current time in hours since Unix epoch.
368
+ *
369
+ * @since 3.1.0 | 19 JUN 2018 | Ported from function to class method.
370
+ * @access protected
371
+ * @param void
372
+ * @return void
373
+ *
374
+ */
375
+ public function reset_timestamp() {
376
+ delete_post_meta( $this->post_id, 'swp_cache_timestamp' );
377
+ update_post_meta( $this->post_id, 'swp_cache_timestamp', floor( ( ( date( 'U' ) / 60 ) / 60 ) ) );
378
+ }
379
 
380
 
381
  /**
392
 
393
 
394
  /**
395
+ * Finishes processing the share data after the network links have been set up.
396
+ *
397
+ * The flow of logic should look something like this:
398
+ * establish_permalinks(); $this->permalinks;
399
+ * establish_api_request_urls(); $this->api_urls;
400
+ * fetch_api_responses(); $this->raw_api_responses;
401
+ * parse_api_responses(); $this->parsed_api_responses;
402
+ * calculate_network_shares(); $this->share_counts;
403
+ * calculate_total_shares(); $this->share_counts['total_shares'];
404
+ * cache_share_counts(); Stored in DB post meta.
405
+ *
406
+ * @since 3.1.0 | 21 JUN 2018 | Created
407
+ * @access protected
408
+ * @param void
409
+ * @return void
410
+ *
411
+ */
412
+ protected function rebuild_share_counts() {
413
 
414
  $this->establish_permalinks();
415
+ $this->establish_api_request_urls();
416
+ $this->fetch_api_responses();
417
+ $this->parse_api_responses();
418
+ $this->calculate_network_shares();
419
+ $this->cache_share_counts();
420
 
421
+ }
422
 
423
 
424
  /**
430
  * allow a filter for programatic adding of others, and so on.
431
  *
432
  * The processed results will be stored in $this->permalinks.
433
+ * @var permalinks Links to be checked for share counts during the
434
+ * share count update process.
435
  *
436
  * @since 3.1.0 | 21 JUN 2018 | Created
437
  * @param void
438
  * @return void
439
  *
440
  */
441
+ protected function establish_permalinks() {
442
+ global $swp_social_networks;
443
+ $this->permalinks = array();
444
 
445
 
446
  /**
448
  * networks, and find the permalinks to check for each one.
449
  *
450
  */
451
+ foreach( $swp_social_networks as $key => $object) {
452
 
453
 
454
  /**
457
  *
458
  */
459
  if ( false == $object->active ) {
460
+ continue;
461
+ }
462
 
463
 
464
  /**
466
  * standard permalink by default for checking for share counts.
467
  *
468
  */
469
+ $this->permalinks[$key][] = get_permalink( $this->post_id );
470
 
471
 
472
  /**
475
  * for which to fetch share counts.
476
  *
477
  */
478
+ if( true === SWP_Utility::get_option('recover_shares') ) {
479
+ $this->permalinks[$key][] = SWP_Permalink::get_alt_permalink( $this->post_id );
480
+ }
481
 
482
 
483
  /**
485
  * which to check for share counts.
486
  *
487
  */
488
+ $this->permalinks = apply_filters( 'swp_recovery_filter', $this->permalinks );
489
+
490
+ }
491
+ }
492
+
493
+
494
+ /**
495
+ * Prepares outbound API links per network.
496
+ *
497
+ * @since 3.1.0 | 25 JUN 2018 | Created the method.
498
+ * @var api_urls The array of outbound API request destinations.
499
+ * @param void
500
+ * @return void
501
+ *
502
+ */
503
+ protected function establish_api_request_urls() {
504
+ global $swp_social_networks;
505
+ $this->api_urls = array();
506
+
507
+ foreach ( $this->permalinks as $network => $links ) {
508
  $current_request = 0;
509
+ foreach( $links as $url ) {
510
+ $this->api_urls[$current_request][$network] = $swp_social_networks[$network]->get_api_link( $url );
511
  ++$current_request;
512
  }
513
+ }
514
 
515
+ }
516
 
517
 
518
  /**
528
  * @return void All data is stored in local properties.
529
  *
530
  */
531
+ protected function fetch_api_responses() {
532
  $current_request = 0;
533
+ foreach ( $this->api_urls as $request => $networks ) {
534
+ $this->raw_api_responses[$current_request] = SWP_CURL::fetch_shares_via_curl_multi( $networks );
535
+ $current_request++;
536
+ }
537
+ }
 
538
 
539
 
540
  /**
550
  * @return void Processed data is stored in local properties.
551
  *
552
  */
553
+ protected function parse_api_responses() {
554
+ global $swp_social_networks;
555
 
556
 
557
  /**
559
  * populated just gracefully bail out and stop processing.
560
  *
561
  */
562
+ if ( empty( $this->raw_api_responses ) ) {
563
+ return;
564
+ }
565
 
566
+ $this->parsed_api_responses = array();
567
 
568
+ foreach( $this->raw_api_responses as $request => $responses ) {
569
+ $current_request = 0;
570
 
571
+ foreach ( $responses as $key => $response ) {
572
+ $this->parsed_api_responses[$current_request][$key][] = $swp_social_networks[$key]->parse_api_response( $response );
573
+ $current_request++;
574
+ }
575
+ }
576
+ }
577
 
578
 
579
  /**
594
  * @return void All data stored in local properties.
595
  *
596
  */
597
+ protected function calculate_network_shares() {
598
+ global $swp_social_networks;
599
 
600
 
601
  /**
603
  * populated just gracefully bail out and stop processing.
604
  *
605
  */
606
+ if ( empty( $this->parsed_api_responses ) ) {
607
+ return;
608
+ }
609
 
610
+ $share_counts = array();
611
  $share_counts['total_shares'] = 0;
612
+ $checked_networks = array();
613
 
614
 
615
  /**
618
  * remaining networks that didn't have API requests/responses.
619
  *
620
  */
621
+ foreach ( $this->parsed_api_responses as $request => $networks ) {
622
+ foreach ( $networks as $network => $count_array ) {
623
 
624
 
625
  /**
631
  *
632
  */
633
  $count_array = array_unique( $count_array );
634
+ foreach ( $count_array as $count ) {
635
+ if ( !is_numeric( $count ) ) {
636
+ continue;
637
+ }
638
+
639
+ if ( !isset( $share_counts[$network] ) ) {
640
+ $share_counts[$network] = 0;
641
+ }
642
+
643
+ $share_counts[$network] += $count;
644
+ }
645
+
646
+ $checked_networks[] = $network;
647
+ }
648
+ }
649
 
 
 
650
 
 
 
 
651
 
652
 
653
  /**
659
  * parameter to force it to do so.
660
  *
661
  */
662
+ foreach( SWP_Utility::get_option( 'order_of_icons' ) as $network ) {
663
  $count = 0;
664
 
665
 
668
  * then let's start by using the count fetched from the API.
669
  *
670
  */
671
+ if ( in_array( $network, $checked_networks ) ) {
672
  $count = $share_counts[$network];
673
  }
674
 
693
  $count = $previous_count;
694
  }
695
 
 
696
  /**
697
  * Iterate the total shares with our new numbers, and then store
698
  * this network's count in the local property for caching and
700
  *
701
  */
702
  $share_counts['total_shares'] += $count;
703
+ $share_counts[$network] = $count;
704
 
705
+ }
706
 
707
+ $this->share_counts = $share_counts;
708
+ }
709
 
710
 
711
  /**
722
  * @return void
723
  *
724
  */
725
+ protected function cache_share_counts() {
726
 
727
 
728
  /**
730
  * share counts to cache in the database so just bail out.
731
  *
732
  */
733
+ if ( empty( $this->share_counts ) ) {
734
+ return;
735
+ }
736
 
737
 
738
  /**
740
  * counts in the databse in custom fields.
741
  *
742
  */
743
+ foreach( $this->share_counts as $key => $count ) {
744
+ if ( 'total_shares' === $key ) {
745
+ continue;
746
+ }
747
 
748
+ delete_post_meta( $this->post_id, "_${key}_shares");
749
+ update_post_meta( $this->post_id, "_${key}_shares", $this->share_counts[$key] );
750
+ }
751
 
752
+ delete_post_meta( $this->post_id, '_total_shares');
753
+ update_post_meta( $this->post_id, '_total_shares', $this->share_counts['total_shares'] );
754
+ }
755
 
756
 
757
  /**
791
  */
792
  foreach( $swp_social_networks as $network => $network_object ) {
793
 
794
+ $count = get_post_meta( $this->post_id, '_' . $network . '_shares', true );
795
  $this->share_counts[$network] = $count ? $count : 0;
796
  }
797
 
798
+ $total = get_post_meta( $this->post_id, '_total_shares', true );
799
+ $this->share_counts['total_shares'] = $total ? $total : 0;
800
  }
801
 
802
 
lib/utilities/SWP_SVG.php ADDED
@@ -0,0 +1,2930 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Holds SVG strings.
4
+ * Right now all methods return network icons.
5
+ *
6
+ * @package SocialWarfare\Utilities
7
+ * @copyright Copyright (c) 2018, Warfare Plugins, LLC
8
+ * @license GPL-3.0+
9
+ * @since 3.5.0 | 14 JAN 2019 | Created.
10
+ */
11
+ class SWP_SVG {
12
+
13
+ /**
14
+ * Attempt to retrieve an SVG string.
15
+ *
16
+ * @param string $key The function to call. Most often a network key.
17
+ * @return mixed String if the SVG exists, else false.
18
+ *
19
+ */
20
+ public static function get( $key ) {
21
+
22
+ // Prevent 'Undefined function' errors by confirming the method exists.
23
+ if ( method_exists( get_called_class(), $key ) ) {
24
+ return self::$key();
25
+ }
26
+
27
+ return false;
28
+ }
29
+
30
+
31
+ public static function blogger() {
32
+ return
33
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
34
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
35
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M27.6,14l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
36
+ c-0.4-0.4-0.5-1.1-0.6-2C23,9,22.9,8.9,22.6,8.3c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
37
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L27.6,14z M11.8,10.3h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
38
+ C10.4,11,11,10.3,11.8,10.3z M20.2,21.6h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
39
+ C21.6,21,20.9,21.6,20.2,21.6z"/>
40
+ </svg>
41
+ ';
42
+ }
43
+
44
+ public static function buffer() {
45
+ return
46
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
47
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
48
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
49
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
50
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
51
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
52
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
53
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
54
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
55
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
56
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
57
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
58
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
59
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
60
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
61
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
62
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
63
+ <g>
64
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
65
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
66
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
67
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
68
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
69
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
70
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
71
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
72
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
73
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
74
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
75
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
76
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
77
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
78
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
79
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
80
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
81
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
82
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
83
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
84
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
85
+ </g>
86
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
87
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
88
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
89
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
90
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
91
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
92
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
93
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
94
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
95
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
96
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
97
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
98
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
99
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
100
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
101
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
102
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
103
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
104
+ h11.1V87.3z"/>
105
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
106
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
107
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
108
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
109
+ <g>
110
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
111
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
112
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
113
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
114
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
115
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
116
+ </g>
117
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
118
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
119
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
120
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
121
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
122
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
123
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
124
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
125
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
126
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
127
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
128
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
129
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
130
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
131
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
132
+ <g>
133
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
134
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
135
+ </g>
136
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
137
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
138
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
139
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
140
+ <g>
141
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
142
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
143
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
144
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
145
+ </g>
146
+ <path fill="#231F20" d="M22.2-15.5c-1,0-1.9,0.4-2.6,1L10.3-20c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
147
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S24.4-34,22.2-34s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
148
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S4.4-17,6.5-17c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
149
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S24.4-15.5,22.2-15.5z"/>
150
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M101.5,129.4c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
151
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C105.2,135,103.9,131.8,101.5,129.4z
152
+ M92.6,148.9L92.6,148.9c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
153
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C103.1,144.2,98.4,148.9,92.6,148.9z M98.4,141c-0.3-0.2-1.9-0.9-2.2-1
154
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
155
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
156
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
157
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C98.9,141.3,98.7,141.2,98.4,141
158
+ z"/>
159
+ <path fill="#231F20" d="M124.2,125.9c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
160
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
161
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
162
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
163
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
164
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
165
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
166
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
167
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
168
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
169
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
170
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C124.2,126.1,124.2,126,124.2,125.9z M133.2,142.9c-1.1,0.2-2,0.5-2.8,1.3
171
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9
172
+ C133.1,143.6,133.1,143.3,133.2,142.9z"/>
173
+ <path fill="#231F20" d="M181.4,50.2v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V50.2H181.4z M179.8,63.7h-12v-2.2h12V63.7z
174
+ M180.1,55.3h-12.6V44.8h12.6V55.3z M181.7,60.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
175
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
176
+ c0.8,0,1.4,0.6,1.4,1.4C183.1,59.6,182.5,60.2,181.7,60.2z M178.9,47.4h-10.2v1.3h10.2V47.4z M178.9,49.8h-10.2v1.3h10.2V49.8z
177
+ M178.9,52.1h-10.2v1.3h10.2V52.1z"/>
178
+ <path fill="#231F20" d="M184.9,10.1c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
179
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
180
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
181
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C188.9,11.9,187.1,10.1,184.9,10.1z M182.4,4.8c0.7,0,1.2,0.6,1.2,1.2
182
+ c0,0.7-0.6,1.3-1.2,1.3c-0.7,0-1.2-0.6-1.2-1.3C181.2,5.3,181.7,4.8,182.4,4.8z M160.2,15.8c-0.7-0.3-1.1-1-1.1-1.7
183
+ c0-1,0.8-1.9,1.9-1.9c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L160.2,15.8z M172.8,24.6c-5.8,0-10.5-2.9-10.5-6.5
184
+ s4.7-6.5,10.5-6.5c5.8,0,10.5,2.9,10.5,6.5S178.6,24.6,172.8,24.6z M185.5,15.9L185,16c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4
185
+ c0.4-0.4,0.8-0.6,1.4-0.6c1,0,1.9,0.8,1.9,1.9C186.7,14.9,186.2,15.6,185.5,15.9z M170.7,16.1c0-1-0.8-1.9-1.9-1.9
186
+ c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9C169.8,18,170.7,17.1,170.7,16.1z M176.9,14.2c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
187
+ c1,0,1.9-0.8,1.9-1.9C178.8,15.1,178,14.2,176.9,14.2z M176.9,20C176.9,20,176.9,20,176.9,20c-0.3,0-0.5,0.1-0.7,0.3
188
+ c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7
189
+ c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7
190
+ c0-0.3-0.1-0.5-0.3-0.7C177.4,20.1,177.1,20,176.9,20z"/>
191
+ <path fill="#231F20" d="M4.5,9.7l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5L17,4.2c-0.6-0.3-1.4-0.3-2,0l-10.6,5
192
+ C4.3,9.4,4.3,9.6,4.5,9.7z M27.5,15.8l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0
193
+ l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C27.7,16.2,27.7,15.9,27.5,15.8z M27.5,22.2l-2.2-1
194
+ c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5
195
+ c0.6,0.3,1.3,0.3,1.8,0l10.6-5C27.7,22.7,27.7,22.3,27.5,22.2z"/>
196
+ </svg>
197
+ ';
198
+ }
199
+
200
+ public static function ello() {
201
+ return
202
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
203
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
204
+ <path fill="#231F20" d="M16,3.6C9.2,3.6,3.6,9.2,3.6,16S9.2,28.4,16,28.4S28.4,22.8,28.4,16S22.8,3.6,16,3.6z M15.8,23.7
205
+ c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
206
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C23.1,19.6,20.9,23.7,15.8,23.7z"/>
207
+ </svg>
208
+ ';
209
+ }
210
+
211
+ public static function email() {
212
+ return
213
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
214
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
215
+ <path id="email-icon_10_" fill="#231F20" d="M10.4,14.7L0.9,7.2v17.2L10.4,14.7z M31,5.5H1l15,11.5L31,5.5z M20.2,15.6L16,18.8
216
+ l-4.2-3.2L0.9,26.5H31L20.2,15.6z M21.5,14.8l9.6,9.6V7.3L21.5,14.8z"/>
217
+ </svg>
218
+ ';
219
+ }
220
+
221
+ public static function facebook() {
222
+ return
223
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
224
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
225
+ <path id="f_5_" fill="#231F20" d="M18,29V17.1h4l0.6-4.6H18v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0V3.2C22.3,3.1,20.9,3,19.2,3
226
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4V29H18z"/>
227
+ </svg>
228
+ ';
229
+ }
230
+
231
+ public static function flickr() {
232
+ return
233
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
234
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
235
+ <g>
236
+ <path fill="#231F20" d="M31.9,16c0,4.1-3.3,7.4-7.4,7.4c-4.1,0-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4C28.6,8.6,31.9,11.9,31.9,16z
237
+ "/>
238
+ <path fill="#231F20" d="M15,16c0,4.1-3.3,7.4-7.4,7.4S0.1,20.1,0.1,16c0-4.1,3.3-7.4,7.4-7.4S15,11.9,15,16z"/>
239
+ </g>
240
+ </svg>
241
+ ';
242
+ }
243
+
244
+ public static function flipboard() {
245
+ return
246
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
247
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
248
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
249
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
250
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
251
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
252
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
253
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
254
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
255
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
256
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
257
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
258
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
259
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
260
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
261
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
262
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
263
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
264
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
265
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
266
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
267
+ <g>
268
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
269
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
270
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
271
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
272
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
273
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
274
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
275
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
276
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
277
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
278
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
279
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
280
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
281
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
282
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
283
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
284
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
285
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
286
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
287
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
288
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
289
+ </g>
290
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
291
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
292
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
293
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
294
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
295
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
296
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
297
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
298
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
299
+ <g>
300
+ <circle fill="#231F20" cx="188.7" cy="13.3" r="7.4"/>
301
+ <circle fill="#231F20" cx="171.7" cy="13.3" r="7.4"/>
302
+ </g>
303
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
304
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
305
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
306
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
307
+ <g>
308
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
309
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
310
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
311
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
312
+ </g>
313
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
314
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
315
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
316
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
317
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
318
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
319
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
320
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
321
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
322
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
323
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
324
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
325
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
326
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
327
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
328
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
329
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
330
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
331
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
332
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
333
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
334
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
335
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
336
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
337
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
338
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
339
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
340
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
341
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
342
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
343
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
344
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
345
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
346
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
347
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
348
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
349
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
350
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
351
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
352
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
353
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
354
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
355
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
356
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
357
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
358
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
359
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
360
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
361
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
362
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
363
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
364
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
365
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
366
+ V89L186.7,101.8z"/>
367
+ <g>
368
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
369
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
370
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
371
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
372
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
373
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
374
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
375
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
376
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
377
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
378
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
379
+ </g>
380
+ <g>
381
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
382
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
383
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
384
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
385
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
386
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
387
+ </g>
388
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
389
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
390
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
391
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
392
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
393
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
394
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
395
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
396
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
397
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
398
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
399
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
400
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
401
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
402
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
403
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
404
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
405
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
406
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
407
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
408
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
409
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
410
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
411
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
412
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
413
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
414
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
415
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
416
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
417
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
418
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
419
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
420
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
421
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
422
+ z"/>
423
+ <g>
424
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
425
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
426
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
427
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
428
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
429
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
430
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
431
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
432
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
433
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
434
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
435
+ </g>
436
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
437
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
438
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
439
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
440
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
441
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
442
+ <path fill="#231F20" d="M6,41.4h3.8l4.9,10c0.7,1.5,1.3,2.9,1.3,2.9s0.6-1.4,1.4-2.9l5-10H26l-8.5,15.9v10.1h-3.2V57.1L6,41.4z"/>
443
+ <polygon fill="#231F20" points="4.3,4.3 4.3,27.7 12.1,27.7 12.1,19.9 19.9,19.9 19.9,12.1 27.7,12.1 27.7,4.3 "/>
444
+ </svg>
445
+ ';
446
+ }
447
+
448
+ public static function google_plus() {
449
+ return
450
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
451
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
452
+ <g>
453
+ <path fill="#231F20" d="M10.5,14.5v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
454
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8C4.6,5.5,0,10.2,0,16s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H10.5z"/>
455
+ <polyline fill="#231F20" points="32,14.5 29,14.5 29,11.5 26,11.5 26,14.5 23,14.5 23,17.5 26,17.5 26,20.5 29,20.5 29,17.5
456
+ 32,17.5 "/>
457
+ </g>
458
+ </svg>
459
+ ';
460
+ }
461
+
462
+ public static function hacker_news() {
463
+ return
464
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
465
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
466
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
467
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
468
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
469
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
470
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
471
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
472
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
473
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
474
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
475
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
476
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
477
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
478
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
479
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
480
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
481
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
482
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
483
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
484
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
485
+ <g>
486
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
487
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
488
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
489
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
490
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
491
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
492
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
493
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
494
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
495
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
496
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
497
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
498
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
499
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
500
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
501
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
502
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
503
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
504
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
505
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
506
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
507
+ </g>
508
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
509
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
510
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
511
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
512
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
513
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
514
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
515
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
516
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
517
+ <g>
518
+ <circle fill="#231F20" cx="188.7" cy="13.3" r="7.4"/>
519
+ <circle fill="#231F20" cx="171.7" cy="13.3" r="7.4"/>
520
+ </g>
521
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
522
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
523
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
524
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
525
+ <g>
526
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
527
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
528
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
529
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
530
+ </g>
531
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
532
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
533
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
534
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
535
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
536
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
537
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
538
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
539
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
540
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
541
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
542
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
543
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
544
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
545
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
546
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
547
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
548
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
549
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
550
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
551
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
552
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
553
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
554
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
555
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
556
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
557
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
558
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
559
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
560
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
561
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
562
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
563
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
564
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
565
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
566
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
567
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
568
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
569
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
570
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
571
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
572
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
573
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
574
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
575
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
576
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
577
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
578
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
579
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
580
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
581
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
582
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
583
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
584
+ V89L186.7,101.8z"/>
585
+ <g>
586
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
587
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
588
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
589
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
590
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
591
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
592
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
593
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
594
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
595
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
596
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
597
+ </g>
598
+ <g>
599
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
600
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
601
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
602
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
603
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
604
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
605
+ </g>
606
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
607
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
608
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
609
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
610
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
611
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
612
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
613
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
614
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
615
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
616
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
617
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
618
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
619
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
620
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
621
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
622
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
623
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
624
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
625
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
626
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
627
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
628
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
629
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
630
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
631
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
632
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
633
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
634
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
635
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
636
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
637
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
638
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
639
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
640
+ z"/>
641
+ <g>
642
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
643
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
644
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
645
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
646
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
647
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
648
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
649
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
650
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
651
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
652
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
653
+ </g>
654
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
655
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
656
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
657
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
658
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
659
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
660
+ <rect x="-69.8" y="-18.8" fill="#F16522" width="55.3" height="55.3"/>
661
+ <path fill="#231F20" d="M6,3h3.8l4.9,10c0.7,1.5,1.3,2.9,1.3,2.9s0.6-1.4,1.4-2.9l5-10H26l-8.5,15.9V29h-3.2V18.7L6,3z"/>
662
+ </svg>
663
+ ';
664
+ }
665
+
666
+ public static function instagram() {
667
+ return
668
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
669
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
670
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
671
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
672
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
673
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
674
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
675
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
676
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
677
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
678
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
679
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
680
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
681
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
682
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
683
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
684
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
685
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
686
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
687
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
688
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
689
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
690
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
691
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
692
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
693
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
694
+ <g>
695
+ <path fill="#231F20" d="M196.1,13.3c0,4.1-3.3,7.4-7.4,7.4c-4.1,0-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4
696
+ C192.8,5.9,196.1,9.2,196.1,13.3z"/>
697
+ <path fill="#231F20" d="M179.1,13.3c0,4.1-3.3,7.4-7.4,7.4s-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4S179.1,9.2,179.1,13.3z"/>
698
+ </g>
699
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
700
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
701
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
702
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
703
+ <g>
704
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
705
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
706
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
707
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
708
+ </g>
709
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
710
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
711
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
712
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
713
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
714
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
715
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
716
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
717
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
718
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
719
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
720
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
721
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
722
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
723
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
724
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
725
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
726
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
727
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
728
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
729
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
730
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
731
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
732
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
733
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
734
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
735
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
736
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
737
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
738
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
739
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
740
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
741
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
742
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
743
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
744
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
745
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
746
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
747
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
748
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
749
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
750
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
751
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
752
+ <g>
753
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
754
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
755
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
756
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
757
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
758
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
759
+ </g>
760
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
761
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
762
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
763
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
764
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
765
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
766
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
767
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
768
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
769
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
770
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
771
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
772
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
773
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
774
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
775
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
776
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
777
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
778
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
779
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
780
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
781
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
782
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
783
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
784
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
785
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
786
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
787
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
788
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
789
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
790
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
791
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
792
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
793
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
794
+ z"/>
795
+ <g>
796
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
797
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
798
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
799
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
800
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
801
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
802
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
803
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
804
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
805
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
806
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
807
+ </g>
808
+ <path fill="#231F20" d="M235.2,44.3c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2h-19.1c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8V53
809
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
810
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
811
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C235.3,44.8,235.3,44.6,235.2,44.3z M229.6,52.5l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
812
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
813
+ C230.4,50.7,230.4,51.8,229.6,52.5z"/>
814
+ <path fill="#231F20" d="M126.9,46.4v18c0,2.9,4.5,3,4.5,0V52.1c0.4-2.7,4.5-2.6,4.5,0.3v9c0,3,5,3,5,0v-6c0.3-2.8,4.5-2.7,4.5,0.2
815
+ v1.2c0,3.1,4.5,2.9,4.5,0V46.4H126.9z"/>
816
+ <path fill="#231F20" d="M28,11.2c-0.1-1.2-0.2-2.1-0.6-3C27.1,7.3,26.7,6.7,26,6c-0.7-0.7-1.3-1.1-2.2-1.4C22.9,4.2,22,4,20.8,4
817
+ c-1.3-0.1-1.7-0.1-4.8-0.1c-3.2,0-3.6,0-4.8,0.1C10,4,9.1,4.2,8.2,4.6C7.3,4.9,6.7,5.3,6,6C5.3,6.7,4.9,7.3,4.6,8.2
818
+ C4.2,9.1,4,10,4,11.2c-0.1,1.3-0.1,1.7-0.1,4.8c0,3.2,0,3.6,0.1,4.8c0.1,1.2,0.2,2.1,0.6,3C4.9,24.7,5.3,25.3,6,26
819
+ c0.7,0.7,1.3,1.1,2.2,1.4c0.9,0.3,1.8,0.5,3,0.6c1.2,0.1,1.7,0.1,4.8,0.1c3.2,0,3.6,0,4.8-0.1c1.2-0.1,2.1-0.2,3-0.6
820
+ c0.9-0.3,1.5-0.8,2.2-1.4c0.7-0.7,1.1-1.3,1.4-2.2c0.3-0.9,0.5-1.8,0.6-3c0.1-1.2,0.1-1.7,0.1-4.8C28.1,12.8,28.1,12.4,28,11.2z
821
+ M25.2,20.7c0,1.1-0.2,1.7-0.4,2.1c-0.2,0.5-0.4,0.8-0.8,1.2c-0.4,0.4-0.7,0.6-1.2,0.8c-0.4,0.1-1,0.3-2.1,0.4
822
+ c-1.2,0.1-1.6,0.1-4.7,0.1c-3.1,0-3.5,0-4.7-0.1c-1.1,0-1.7-0.2-2.1-0.4C8.7,24.6,8.4,24.4,8,24c-0.4-0.4-0.6-0.7-0.8-1.2
823
+ c-0.1-0.4-0.3-1-0.4-2.1c-0.1-1.2-0.1-1.6-0.1-4.7s0-3.5,0.1-4.7c0-1.1,0.2-1.7,0.4-2.1C7.4,8.7,7.6,8.4,8,8
824
+ c0.4-0.4,0.7-0.6,1.2-0.8c0.4-0.1,1-0.3,2.1-0.4c1.2-0.1,1.6-0.1,4.7-0.1s3.5,0,4.7,0.1c1.1,0,1.7,0.2,2.1,0.4
825
+ C23.3,7.4,23.6,7.6,24,8c0.4,0.4,0.6,0.7,0.8,1.2c0.1,0.4,0.3,1,0.4,2.1c0.1,1.2,0.1,1.6,0.1,4.7C25.2,19.1,25.2,19.5,25.2,20.7z
826
+ M16,9.6c-3.5,0-6.4,2.9-6.4,6.4c0,3.5,2.9,6.4,6.4,6.4c3.5,0,6.4-2.9,6.4-6.4C22.4,12.5,19.5,9.6,16,9.6z M16,19.5
827
+ c-1.9,0-3.5-1.6-3.5-3.5c0-1.9,1.6-3.5,3.5-3.5c1.9,0,3.5,1.6,3.5,3.5C19.5,17.9,17.9,19.5,16,19.5z M22.2,8c-1,0-1.8,0.8-1.8,1.8
828
+ s0.8,1.8,1.8,1.8S24,10.7,24,9.8S23.2,8,22.2,8z"/>
829
+ <g id="Monogram_1_">
830
+ <path id="Shape_1_" fill="#231F20" d="M170.8,88.7c0-0.3-0.1-0.6-0.3-0.8l-2.2-2.7v-0.4h7l5.4,11.8l4.7-11.8h6.7v0.4l-1.9,1.8
831
+ c-0.2,0.1-0.2,0.3-0.2,0.5v13.5c0,0.2,0,0.4,0.2,0.5l1.9,1.8v0.4h-9.4v-0.4l1.9-1.9c0.2-0.2,0.2-0.2,0.2-0.5V90.1l-5.4,13.7h-0.7
832
+ l-6.3-13.7v9.2c-0.1,0.4,0.1,0.8,0.3,1.1l2.5,3.1v0.4H168v-0.4l2.5-3.1c0.3-0.3,0.4-0.7,0.3-1.1V88.7z"/>
833
+ </g>
834
+ </svg>
835
+ ';
836
+ }
837
+
838
+ public static function linkedin() {
839
+ return
840
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
841
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
842
+ <path fill="#231F20" d="M7.2,4.3c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9C8.8,10,10,8.7,10,7.2C10,5.6,8.8,4.3,7.2,4.3z
843
+ M4.7,27.7h4.9V12.1H4.7V27.7z M22.3,11.6c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6h4.9v-8.3c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6
844
+ v8h4.8v-9C27.7,18.7,28.3,11.6,22.3,11.6z"/>
845
+ </svg>
846
+ ';
847
+ }
848
+
849
+ public static function medium() {
850
+ return
851
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
852
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
853
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
854
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
855
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
856
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
857
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
858
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
859
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
860
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
861
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
862
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
863
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
864
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
865
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
866
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
867
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
868
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
869
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
870
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
871
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
872
+ <g>
873
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
874
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
875
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
876
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
877
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
878
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
879
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
880
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
881
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
882
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
883
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
884
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
885
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
886
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
887
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
888
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
889
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
890
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
891
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
892
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
893
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
894
+ </g>
895
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
896
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
897
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
898
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
899
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
900
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
901
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
902
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
903
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
904
+ <g>
905
+ <path fill="#231F20" d="M196.1,13.3c0,4.1-3.3,7.4-7.4,7.4c-4.1,0-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4
906
+ C192.8,5.9,196.1,9.2,196.1,13.3z"/>
907
+ <path fill="#231F20" d="M179.1,13.3c0,4.1-3.3,7.4-7.4,7.4s-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4S179.1,9.2,179.1,13.3z"/>
908
+ </g>
909
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
910
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
911
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
912
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
913
+ <g>
914
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
915
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
916
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
917
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
918
+ </g>
919
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
920
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
921
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
922
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
923
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
924
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
925
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
926
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
927
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
928
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
929
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
930
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
931
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
932
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
933
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
934
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
935
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
936
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
937
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
938
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
939
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
940
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
941
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
942
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
943
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
944
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
945
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
946
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
947
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
948
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
949
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
950
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
951
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
952
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
953
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
954
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
955
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
956
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
957
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
958
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
959
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
960
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
961
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
962
+ <g>
963
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
964
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
965
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
966
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
967
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
968
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
969
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
970
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
971
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
972
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
973
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
974
+ </g>
975
+ <g>
976
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
977
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
978
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
979
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
980
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
981
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
982
+ </g>
983
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
984
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
985
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
986
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
987
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
988
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
989
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
990
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
991
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
992
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
993
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
994
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
995
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
996
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
997
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
998
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
999
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
1000
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
1001
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
1002
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
1003
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
1004
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
1005
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
1006
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
1007
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
1008
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
1009
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
1010
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
1011
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
1012
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
1013
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
1014
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
1015
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
1016
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
1017
+ z"/>
1018
+ <g>
1019
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
1020
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
1021
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
1022
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
1023
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
1024
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
1025
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
1026
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
1027
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
1028
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
1029
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
1030
+ </g>
1031
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
1032
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
1033
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
1034
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
1035
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
1036
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
1037
+ <path fill="#231F20" d="M125.6,162.8v18c0,2.9,4.5,3,4.5,0v-12.3c0.4-2.7,4.5-2.6,4.5,0.3v9c0,3,5,3,5,0v-6c0.3-2.8,4.5-2.7,4.5,0.2
1038
+ v1.2c0,3.1,4.5,2.9,4.5,0v-10.5H125.6z"/>
1039
+ <g>
1040
+ <path fill="#231F20" d="M52.3,84.3c3.1,0,3.5,0,4.7,0.1c1.1,0.1,1.8,0.2,2.2,0.4c0.5,0.2,0.9,0.5,1.3,0.9c0.4,0.4,0.7,0.8,0.9,1.3
1041
+ c0.2,0.4,0.4,1,0.4,2.2c0.1,1.2,0.1,1.6,0.1,4.7c0,3.1,0,3.5-0.1,4.7c-0.1,1.1-0.2,1.8-0.4,2.2c-0.2,0.5-0.5,0.9-0.9,1.3
1042
+ c-0.4,0.4-0.8,0.7-1.3,0.9c-0.4,0.2-1,0.4-2.2,0.4c-1.2,0.1-1.6,0.1-4.7,0.1c-3.1,0-3.5,0-4.7-0.1c-1.1-0.1-1.8-0.2-2.2-0.4
1043
+ c-0.5-0.2-0.9-0.5-1.3-0.9c-0.4-0.4-0.7-0.8-0.9-1.3c-0.2-0.4-0.4-1-0.4-2.2c-0.1-1.2-0.1-1.6-0.1-4.7c0-3.1,0-3.5,0.1-4.7
1044
+ c0.1-1.1,0.2-1.8,0.4-2.2c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.7,1.3-0.9c0.4-0.2,1-0.4,2.2-0.4C48.9,84.3,49.2,84.3,52.3,84.3
1045
+ M52.3,82.2c-3.2,0-3.6,0-4.8,0.1c-1.2,0.1-2.1,0.3-2.8,0.5c-0.8,0.3-1.4,0.7-2.1,1.3c-0.7,0.7-1.1,1.3-1.3,2.1
1046
+ c-0.3,0.7-0.5,1.6-0.5,2.8c-0.1,1.2-0.1,1.6-0.1,4.8s0,3.6,0.1,4.8c0.1,1.2,0.3,2.1,0.5,2.8c0.3,0.8,0.7,1.4,1.3,2.1
1047
+ c0.7,0.7,1.3,1.1,2.1,1.3c0.7,0.3,1.6,0.5,2.8,0.5c1.2,0.1,1.6,0.1,4.8,0.1c3.2,0,3.6,0,4.8-0.1c1.2-0.1,2.1-0.3,2.8-0.5
1048
+ c0.8-0.3,1.4-0.7,2.1-1.3c0.7-0.7,1.1-1.3,1.3-2.1c0.3-0.7,0.5-1.6,0.5-2.8c0.1-1.2,0.1-1.6,0.1-4.8c0-3.2,0-3.6-0.1-4.8
1049
+ c-0.1-1.2-0.3-2.1-0.5-2.8c-0.3-0.8-0.7-1.4-1.3-2.1c-0.7-0.7-1.3-1.1-2.1-1.3c-0.7-0.3-1.6-0.5-2.8-0.5
1050
+ C55.9,82.2,55.5,82.2,52.3,82.2L52.3,82.2z"/>
1051
+ <path fill="#231F20" d="M52.3,87.9c-3.3,0-6,2.7-6,6s2.7,6,6,6c3.3,0,6-2.7,6-6S55.7,87.9,52.3,87.9z M52.3,97.8
1052
+ c-2.2,0-3.9-1.7-3.9-3.9s1.7-3.9,3.9-3.9c2.2,0,3.9,1.7,3.9,3.9S54.5,97.8,52.3,97.8z"/>
1053
+ <circle fill="#231F20" cx="58.6" cy="87.7" r="1.4"/>
1054
+ </g>
1055
+ <g id="Monogram_1_">
1056
+ <path id="Shape_1_" fill="#231F20" d="M170.8,88.7c0-0.3-0.1-0.6-0.3-0.8l-2.2-2.7v-0.4h7l5.4,11.8l4.7-11.8h6.7v0.4l-1.9,1.8
1057
+ c-0.2,0.1-0.2,0.3-0.2,0.5v13.5c0,0.2,0,0.4,0.2,0.5l1.9,1.8v0.4h-9.4v-0.4l1.9-1.9c0.2-0.2,0.2-0.2,0.2-0.5V90.1l-5.4,13.7h-0.7
1058
+ l-6.3-13.7v9.2c-0.1,0.4,0.1,0.8,0.3,1.1l2.5,3.1v0.4H168v-0.4l2.5-3.1c0.3-0.3,0.4-0.7,0.3-1.1V88.7z"/>
1059
+ </g>
1060
+ <g id="Monogram_2_">
1061
+ <path id="Shape_2_" fill="#231F20" d="M6.8,10.3c0-0.3-0.1-0.6-0.3-0.8L4.3,6.8V6.4h7l5.4,11.8l4.7-11.8H28v0.4l-1.9,1.8
1062
+ C26,8.8,25.9,9,25.9,9.2v13.5c0,0.2,0,0.4,0.2,0.5l1.9,1.8v0.4h-9.4v-0.4l1.9-1.9c0.2-0.2,0.2-0.2,0.2-0.5V11.8l-5.4,13.7h-0.7
1063
+ L8.3,11.8V21c-0.1,0.4,0.1,0.8,0.3,1.1l2.5,3.1v0.4H4v-0.4L6.5,22c0.3-0.3,0.4-0.7,0.3-1.1V10.3z"/>
1064
+ </g>
1065
+ </svg>
1066
+ ';
1067
+ }
1068
+
1069
+ public static function meerkat() {
1070
+ return
1071
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1072
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1073
+ <g>
1074
+ <path fill="#231F20" d="M12.8,8c-0.7-0.6-1.5-0.8-2.4-0.5C9.8,7.6,9.3,8,8.9,8.4C8.3,9,8,9.7,8,10.5c0,0.2,0,0.3,0,0.5
1075
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1076
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7C9.1,11.5,9,11.1,9,10.7c0-0.2,0-0.3,0.1-0.5C9.1,10,9.2,9.7,9.4,9.5
1077
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1078
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1079
+ C13.7,8.9,13.3,8.4,12.8,8z M26.5,9.6C26,9.3,25.5,9.1,25,9c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1080
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
1081
+ C8.4,4.8,7.6,5.2,6.8,5.8c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1082
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1083
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1084
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1085
+ C27.4,10.5,27.1,9.9,26.5,9.6z M25,12.9c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1086
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1087
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
1088
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H7c0-0.1,0-0.1,0-0.2
1089
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1090
+ C6.3,11,6.2,10.4,6.2,9.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1091
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1092
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C25.2,12.8,25.1,12.8,25,12.9z M19.1,7.9c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1093
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1094
+ c0.7,0,1.3-0.6,1.3-1.3C20.4,8.5,19.8,7.9,19.1,7.9z"/>
1095
+ </g>
1096
+ </svg>
1097
+ ';
1098
+ }
1099
+
1100
+ public static function mix() {
1101
+ return
1102
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1103
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1104
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
1105
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
1106
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
1107
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
1108
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
1109
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
1110
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
1111
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
1112
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
1113
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
1114
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
1115
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
1116
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
1117
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
1118
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
1119
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
1120
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1121
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1122
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
1123
+ <g>
1124
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
1125
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1126
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
1127
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1128
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1129
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1130
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
1131
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1132
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1133
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1134
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1135
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1136
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1137
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
1138
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
1139
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1140
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1141
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1142
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1143
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1144
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
1145
+ </g>
1146
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
1147
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
1148
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
1149
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
1150
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
1151
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
1152
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
1153
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
1154
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
1155
+ <g>
1156
+ <path fill="#231F20" d="M196.1,13.3c0,4.1-3.3,7.4-7.4,7.4c-4.1,0-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4
1157
+ C192.8,5.9,196.1,9.2,196.1,13.3z"/>
1158
+ <path fill="#231F20" d="M179.1,13.3c0,4.1-3.3,7.4-7.4,7.4s-7.4-3.3-7.4-7.4c0-4.1,3.3-7.4,7.4-7.4S179.1,9.2,179.1,13.3z"/>
1159
+ </g>
1160
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
1161
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
1162
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
1163
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
1164
+ <g>
1165
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
1166
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
1167
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
1168
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
1169
+ </g>
1170
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
1171
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
1172
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
1173
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
1174
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
1175
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
1176
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
1177
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
1178
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
1179
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
1180
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
1181
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
1182
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
1183
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
1184
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
1185
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
1186
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
1187
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
1188
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
1189
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
1190
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
1191
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
1192
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
1193
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
1194
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
1195
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
1196
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
1197
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
1198
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
1199
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
1200
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
1201
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
1202
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
1203
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
1204
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
1205
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
1206
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
1207
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
1208
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
1209
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
1210
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
1211
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
1212
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
1213
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
1214
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
1215
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
1216
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
1217
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
1218
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
1219
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
1220
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
1221
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
1222
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
1223
+ V89L186.7,101.8z"/>
1224
+ <g>
1225
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
1226
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
1227
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
1228
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
1229
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
1230
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
1231
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
1232
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
1233
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
1234
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
1235
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
1236
+ </g>
1237
+ <g>
1238
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
1239
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
1240
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
1241
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
1242
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
1243
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
1244
+ </g>
1245
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
1246
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
1247
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
1248
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
1249
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
1250
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
1251
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
1252
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
1253
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
1254
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
1255
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
1256
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
1257
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
1258
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
1259
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
1260
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
1261
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
1262
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
1263
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
1264
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
1265
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
1266
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
1267
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
1268
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
1269
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
1270
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
1271
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
1272
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
1273
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
1274
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
1275
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
1276
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
1277
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
1278
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
1279
+ z"/>
1280
+ <g>
1281
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
1282
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
1283
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
1284
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
1285
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
1286
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
1287
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
1288
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
1289
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
1290
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
1291
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
1292
+ </g>
1293
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
1294
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
1295
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
1296
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
1297
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
1298
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
1299
+ <path fill="#231F20" d="M4.4,5.9v18c0,2.9,4.5,3,4.5,0V11.6c0.4-2.7,4.5-2.6,4.5,0.3v9c0,3,5,3,5,0v-6c0.3-2.8,4.5-2.7,4.5,0.2v1.2
1300
+ c0,3.1,4.5,2.9,4.5,0V5.9H4.4z"/>
1301
+ </svg>
1302
+ ';
1303
+ }
1304
+
1305
+ public static function periscope() {
1306
+ return
1307
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1308
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1309
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M16.1,3C10.3,3,5.7,7.8,5.7,13.7c0,6.1,8.1,15.3,10.4,15.3
1310
+ c2,0,10.1-9.2,10.1-15.3C26.3,7.8,21.7,3,16.1,3z M16.2,19.3c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1311
+ c0,1.3,1.1,2.4,2.5,2.4S16,10.7,16,9.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1312
+ C22.2,16.5,19.4,19.3,16.2,19.3z"/>
1313
+ </svg>
1314
+ ';
1315
+ }
1316
+
1317
+ public static function pin() {
1318
+ return
1319
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1320
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1321
+ <path fill="#231F20" d="M23.9,21.4c-1,0-1.9,0.4-2.6,1L12,17c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
1322
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S26,3,23.9,3s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
1323
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S6,20,8.1,20c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
1324
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26,21.4,23.9,21.4z"/>
1325
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
1326
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
1327
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
1328
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
1329
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
1330
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
1331
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
1332
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
1333
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
1334
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
1335
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
1336
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
1337
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1338
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1339
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
1340
+ <g>
1341
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
1342
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1343
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
1344
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1345
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1346
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1347
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
1348
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1349
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1350
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1351
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1352
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1353
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1354
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
1355
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
1356
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1357
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1358
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1359
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1360
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1361
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
1362
+ </g>
1363
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
1364
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
1365
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
1366
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
1367
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
1368
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
1369
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
1370
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
1371
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
1372
+ <g>
1373
+ <circle fill="#231F20" cx="188.7" cy="13.3" r="7.4"/>
1374
+ <circle fill="#231F20" cx="171.7" cy="13.3" r="7.4"/>
1375
+ </g>
1376
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
1377
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
1378
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
1379
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
1380
+ <g>
1381
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
1382
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
1383
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
1384
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
1385
+ </g>
1386
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
1387
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
1388
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
1389
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
1390
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
1391
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
1392
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
1393
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
1394
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
1395
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
1396
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
1397
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
1398
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
1399
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
1400
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
1401
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
1402
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
1403
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
1404
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
1405
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
1406
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
1407
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
1408
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
1409
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
1410
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
1411
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
1412
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
1413
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
1414
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
1415
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
1416
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
1417
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
1418
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
1419
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
1420
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
1421
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
1422
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
1423
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
1424
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
1425
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
1426
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
1427
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
1428
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
1429
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
1430
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
1431
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
1432
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
1433
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
1434
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
1435
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
1436
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
1437
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
1438
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
1439
+ V89L186.7,101.8z"/>
1440
+ <g>
1441
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
1442
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
1443
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
1444
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
1445
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
1446
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
1447
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
1448
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
1449
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
1450
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
1451
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
1452
+ </g>
1453
+ <g>
1454
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
1455
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
1456
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
1457
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
1458
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
1459
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
1460
+ </g>
1461
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
1462
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
1463
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
1464
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
1465
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
1466
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
1467
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
1468
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
1469
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
1470
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
1471
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
1472
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
1473
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
1474
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
1475
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
1476
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
1477
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
1478
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
1479
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
1480
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
1481
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
1482
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
1483
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
1484
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
1485
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
1486
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
1487
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
1488
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
1489
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
1490
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
1491
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
1492
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
1493
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
1494
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
1495
+ z"/>
1496
+ <g>
1497
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
1498
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
1499
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
1500
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
1501
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
1502
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
1503
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
1504
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
1505
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
1506
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
1507
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
1508
+ </g>
1509
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
1510
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
1511
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
1512
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
1513
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
1514
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
1515
+ <path fill="#231F20" d="M22.9,57.2c-0.1-2.4-1.3-4.4-3.1-5.6v-6.9c1.6-1.1,2.4-2.6,2.4-2.6H9.9c0,0,0.8,1.5,2.4,2.6v6.9
1516
+ c-1.9,1.2-3.1,3.3-3.1,5.6h5.6v7c0,0.7,0.6,3.9,1.3,3.9s1.3-3.2,1.3-3.9v-7H22.9z"/>
1517
+ </svg>
1518
+ ';
1519
+ }
1520
+
1521
+ public static function pinterest() {
1522
+ return
1523
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1524
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1525
+ <g>
1526
+ <path fill="#231F20" d="M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
1527
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
1528
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
1529
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
1530
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
1531
+ c6.7,0,12.1-5.4,12.1-12.1C28.1,9.3,22.7,3.9,16,3.9z"/>
1532
+ </g>
1533
+ </svg>
1534
+ ';
1535
+ }
1536
+
1537
+ public static function pocket() {
1538
+ return
1539
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1540
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1541
+ <path fill="#231F20" d="M23.9,21.4c-1,0-1.9,0.4-2.6,1L12,17c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
1542
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S26,3,23.9,3s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
1543
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S6,20,8.1,20c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
1544
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26,21.4,23.9,21.4z"/>
1545
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
1546
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
1547
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
1548
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
1549
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
1550
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
1551
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
1552
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
1553
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
1554
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
1555
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
1556
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
1557
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1558
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1559
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
1560
+ <g>
1561
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
1562
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1563
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
1564
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1565
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1566
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1567
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
1568
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1569
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1570
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1571
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1572
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1573
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1574
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
1575
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
1576
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1577
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1578
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1579
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1580
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1581
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
1582
+ </g>
1583
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
1584
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
1585
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
1586
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
1587
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
1588
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
1589
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
1590
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
1591
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
1592
+ <g>
1593
+ <circle fill="#231F20" cx="188.7" cy="13.3" r="7.4"/>
1594
+ <circle fill="#231F20" cx="171.7" cy="13.3" r="7.4"/>
1595
+ </g>
1596
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
1597
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
1598
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
1599
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
1600
+ <g>
1601
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
1602
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
1603
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
1604
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
1605
+ </g>
1606
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
1607
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
1608
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
1609
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
1610
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
1611
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
1612
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
1613
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
1614
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
1615
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
1616
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
1617
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
1618
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
1619
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
1620
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
1621
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
1622
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
1623
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
1624
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
1625
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
1626
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
1627
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
1628
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
1629
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
1630
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
1631
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
1632
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
1633
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
1634
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
1635
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
1636
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
1637
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
1638
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
1639
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
1640
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
1641
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
1642
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
1643
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
1644
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
1645
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
1646
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
1647
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
1648
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
1649
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
1650
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
1651
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
1652
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
1653
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
1654
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
1655
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
1656
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
1657
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
1658
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
1659
+ V89L186.7,101.8z"/>
1660
+ <g>
1661
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
1662
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
1663
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
1664
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
1665
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
1666
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
1667
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
1668
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
1669
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
1670
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
1671
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
1672
+ </g>
1673
+ <g>
1674
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
1675
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
1676
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
1677
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
1678
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
1679
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
1680
+ </g>
1681
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
1682
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
1683
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
1684
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
1685
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
1686
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
1687
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
1688
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
1689
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
1690
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
1691
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
1692
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
1693
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
1694
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
1695
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
1696
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
1697
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
1698
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
1699
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
1700
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
1701
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
1702
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
1703
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
1704
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
1705
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
1706
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
1707
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
1708
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
1709
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
1710
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
1711
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
1712
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
1713
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
1714
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
1715
+ z"/>
1716
+ <g>
1717
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
1718
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
1719
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
1720
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
1721
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
1722
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
1723
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
1724
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
1725
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
1726
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
1727
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
1728
+ </g>
1729
+ <path fill="#231F20" d="M111,164.5c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.4c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
1730
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
1731
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
1732
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111.2,165,111.1,164.8,111,164.5z M105.5,172.7l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
1733
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
1734
+ C106.2,170.9,106.2,172,105.5,172.7z"/>
1735
+ </svg>
1736
+ ';
1737
+ }
1738
+
1739
+ public static function print() {
1740
+ return
1741
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1742
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1743
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
1744
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
1745
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
1746
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
1747
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
1748
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
1749
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
1750
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
1751
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
1752
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
1753
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
1754
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
1755
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1756
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1757
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
1758
+ <g>
1759
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
1760
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1761
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
1762
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1763
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1764
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1765
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
1766
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1767
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1768
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1769
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1770
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1771
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1772
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
1773
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
1774
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1775
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1776
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1777
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1778
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1779
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
1780
+ </g>
1781
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
1782
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
1783
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
1784
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
1785
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
1786
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
1787
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
1788
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
1789
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
1790
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
1791
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
1792
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
1793
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
1794
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
1795
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
1796
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
1797
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
1798
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
1799
+ h11.1V87.3z"/>
1800
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
1801
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
1802
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
1803
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
1804
+ <g>
1805
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
1806
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
1807
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
1808
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
1809
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
1810
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
1811
+ </g>
1812
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
1813
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
1814
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
1815
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
1816
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
1817
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
1818
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
1819
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
1820
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
1821
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
1822
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
1823
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
1824
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
1825
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
1826
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
1827
+ <g>
1828
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
1829
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
1830
+ </g>
1831
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
1832
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
1833
+ <g>
1834
+ <path fill="#231F20" d="M159.8,14.6c-0.9-0.4-1.6-1.3-1.6-2.4c0-1.4,1.2-2.6,2.6-2.6c0.8,0,1.5,0.3,1.9,0.9
1835
+ c0.2-0.2,0.5-0.4,0.8-0.6c-0.7-0.8-1.6-1.3-2.7-1.3c-2,0-3.6,1.6-3.6,3.6c0,1.6,1,2.9,2.4,3.4C159.6,15.3,159.7,14.9,159.8,14.6z"
1836
+ />
1837
+ <path fill="#231F20" d="M185.9,8.7c-1.2,0-2.2,0.6-2.8,1.4c0.3,0.1,0.6,0.3,0.9,0.4c0.5-0.5,1.1-0.8,1.9-0.8c1.4,0,2.6,1.2,2.6,2.6
1838
+ c0,1.1-0.7,2.1-1.7,2.4c0.1,0.3,0.1,0.7,0.2,1c1.5-0.4,2.5-1.8,2.5-3.4C189.5,10.3,187.9,8.7,185.9,8.7z"/>
1839
+ <path fill="#231F20" d="M173.5,7.6c0,0-0.1,0-0.2,0c-0.3-0.1-0.4-0.4-0.3-0.6l2.3-7.2c0.1-0.2,0.3-0.4,0.6-0.3l6.2,1.4
1840
+ c0.3,0.1,0.4,0.3,0.4,0.6S182,2,181.8,1.9l-5.7-1.3l-2.1,6.7C173.9,7.5,173.7,7.6,173.5,7.6z"/>
1841
+ <path fill="#231F20" d="M184.4,4.9c-1.6,0-2.9-1.3-2.9-2.9c0-1.6,1.3-2.9,2.9-2.9c1.6,0,2.9,1.3,2.9,2.9
1842
+ C187.3,3.5,186,4.9,184.4,4.9z M184.4,0c-1.1,0-1.9,0.9-1.9,1.9s0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9S185.5,0,184.4,0z"/>
1843
+ <path fill="#231F20" d="M173.3,26.1c-8,0-14.4-4.3-14.4-9.6s6.5-9.6,14.4-9.6c8,0,14.4,4.3,14.4,9.6S181.2,26.1,173.3,26.1z
1844
+ M173.3,7.9c-7.4,0-13.5,3.9-13.5,8.6s6,8.6,13.5,8.6c7.4,0,13.5-3.9,13.5-8.6S180.7,7.9,173.3,7.9z"/>
1845
+ <path id="circle21826_6_" inkscape:connector-curvature="0" fill="#231F20" d="M168.4,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
1846
+ c1.2,0,2.2-1,2.2-2.2S169.7,12.4,168.4,12.4z"/>
1847
+ <path id="circle21828_6_" inkscape:connector-curvature="0" fill="#231F20" d="M178.3,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
1848
+ s2.2-1,2.2-2.2S179.5,12.4,178.3,12.4z"/>
1849
+ <path fill="#231F20" d="M173.3,22.6c-2.4,0-4.1-0.5-5.2-1.6c-0.2-0.2-0.2-0.5,0-0.7c0.2-0.2,0.5-0.2,0.7,0c0.9,0.9,2.3,1.3,4.4,1.3
1850
+ c0.3,0,0.5,0.2,0.5,0.5C173.8,22.4,173.6,22.6,173.3,22.6z"/>
1851
+ <path fill="#231F20" d="M173.4,22.6c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c2.1,0,3.6-0.4,4.5-1.3c0.2-0.2,0.5-0.2,0.7,0
1852
+ c0.2,0.2,0.2,0.5,0,0.7C177.4,22.1,175.8,22.6,173.4,22.6z"/>
1853
+ </g>
1854
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
1855
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
1856
+ <g>
1857
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
1858
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
1859
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
1860
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
1861
+ </g>
1862
+ <path fill="#231F20" d="M22.2-15.5c-1,0-1.9,0.4-2.6,1L10.3-20c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
1863
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S24.4-34,22.2-34s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
1864
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S4.4-17,6.5-17c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
1865
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S24.4-15.5,22.2-15.5z"/>
1866
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M101.5,129.4c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
1867
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C105.2,135,103.9,131.8,101.5,129.4z
1868
+ M92.6,148.9L92.6,148.9c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
1869
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C103.1,144.2,98.4,148.9,92.6,148.9z M98.4,141c-0.3-0.2-1.9-0.9-2.2-1
1870
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
1871
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
1872
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
1873
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C98.9,141.3,98.7,141.2,98.4,141
1874
+ z"/>
1875
+ <path fill="#231F20" d="M124.2,125.9c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
1876
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
1877
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
1878
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
1879
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
1880
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
1881
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
1882
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
1883
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
1884
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
1885
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
1886
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C124.2,126.1,124.2,126,124.2,125.9z M133.2,142.9c-1.1,0.2-2,0.5-2.8,1.3
1887
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9
1888
+ C133.1,143.6,133.1,143.3,133.2,142.9z"/>
1889
+ <path fill="#231F20" d="M23.6,11.6V5H8.4v6.6H5.6v11.3h2.5V27h15.8v-4.1h2.5V11.6H23.6z M22,25.1H10v-2.2h12V25.1z M22.3,16.8H9.7
1890
+ V6.3h12.6V16.8z M23.9,21.6c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1c-0.1-0.1-0.1-0.1-0.2-0.2
1891
+ c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4c0.8,0,1.4,0.6,1.4,1.4
1892
+ S24.7,21.6,23.9,21.6z M21.1,8.9H10.9v1.3h10.2V8.9z M21.1,11.2H10.9v1.3h10.2V11.2z M21.1,13.6H10.9v1.3h10.2V13.6z"/>
1893
+ </svg>
1894
+ ';
1895
+ }
1896
+
1897
+ public static function reddit() {
1898
+ return
1899
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1900
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1901
+ <g>
1902
+ <path fill="#231F20" d="M2.4,18.1c-0.9-0.4-1.6-1.3-1.6-2.4c0-1.4,1.2-2.6,2.6-2.6c0.8,0,1.5,0.3,1.9,0.9c0.2-0.2,0.5-0.4,0.8-0.6
1903
+ c-0.7-0.8-1.6-1.3-2.7-1.3c-2,0-3.6,1.6-3.6,3.6c0,1.6,1,2.9,2.4,3.4C2.2,18.7,2.3,18.4,2.4,18.1z"/>
1904
+ <path fill="#231F20" d="M28.6,12.1c-1.2,0-2.2,0.6-2.8,1.4c0.3,0.1,0.6,0.3,0.9,0.4c0.5-0.5,1.1-0.8,1.9-0.8c1.4,0,2.6,1.2,2.6,2.6
1905
+ c0,1.1-0.7,2.1-1.7,2.4c0.1,0.3,0.1,0.7,0.2,1c1.5-0.4,2.5-1.8,2.5-3.4C32.2,13.7,30.6,12.1,28.6,12.1z"/>
1906
+ <path fill="#231F20" d="M16.1,11.1c0,0-0.1,0-0.2,0c-0.3-0.1-0.4-0.4-0.3-0.6l2.3-7.2C18,3,18.2,2.9,18.5,3l6.2,1.4
1907
+ C24.9,4.5,25.1,4.7,25,5s-0.3,0.4-0.6,0.4L18.7,4l-2.1,6.7C16.5,11,16.3,11.1,16.1,11.1z"/>
1908
+ <path fill="#231F20" d="M27.1,8.3c-1.6,0-2.9-1.3-2.9-2.9c0-1.6,1.3-2.9,2.9-2.9c1.6,0,2.9,1.3,2.9,2.9C30,7,28.7,8.3,27.1,8.3z
1909
+ M27.1,3.5c-1.1,0-1.9,0.9-1.9,1.9s0.9,1.9,1.9,1.9S29,6.5,29,5.4S28.1,3.5,27.1,3.5z"/>
1910
+ <path fill="#231F20" d="M15.9,29.5c-8,0-14.4-4.3-14.4-9.6s6.5-9.6,14.4-9.6c8,0,14.4,4.3,14.4,9.6S23.9,29.5,15.9,29.5z
1911
+ M15.9,11.3c-7.4,0-13.5,3.9-13.5,8.6s6,8.6,13.5,8.6s13.5-3.9,13.5-8.6S23.4,11.3,15.9,11.3z"/>
1912
+ <path id="circle21826_6_" inkscape:connector-curvature="0" fill="#231F20" d="M11.1,15.9c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
1913
+ s2.2-1,2.2-2.2S12.3,15.9,11.1,15.9z"/>
1914
+ <path id="circle21828_6_" inkscape:connector-curvature="0" fill="#231F20" d="M20.9,15.9c-1.2,0-2.3,1-2.3,2.3
1915
+ c0,1.2,1,2.2,2.3,2.2c1.2,0,2.2-1,2.2-2.2C23.2,16.9,22.2,15.9,20.9,15.9z"/>
1916
+ <path fill="#231F20" d="M16,26.1c-2.4,0-4.1-0.5-5.2-1.6c-0.2-0.2-0.2-0.5,0-0.7c0.2-0.2,0.5-0.2,0.7,0c0.9,0.9,2.3,1.3,4.4,1.3
1917
+ c0.3,0,0.5,0.2,0.5,0.5C16.5,25.9,16.3,26.1,16,26.1z"/>
1918
+ <path fill="#231F20" d="M16,26.1c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c2.1,0,3.6-0.4,4.5-1.3c0.2-0.2,0.5-0.2,0.7,0
1919
+ c0.2,0.2,0.2,0.5,0,0.7C20.1,25.6,18.4,26.1,16,26.1z"/>
1920
+ </g>
1921
+ </svg>
1922
+ ';
1923
+ }
1924
+
1925
+ public static function rss() {
1926
+ return
1927
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1928
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1929
+ <path id="rss-icon_22_" fill="#231F20" d="M10.4,24.9c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
1930
+ C9,21.6,10.4,23,10.4,24.9z M3.9,12.1V17C10,17.1,15,22,15,28.1h4.9C19.8,19.3,12.7,12.2,3.9,12.1z M3.9,8.7c5.2,0,10,2,13.7,5.7
1931
+ c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V8.7z"/>
1932
+ </svg>
1933
+ ';
1934
+ }
1935
+
1936
+ public static function share() {
1937
+ return
1938
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1939
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1940
+ <path fill="#231F20" d="M23.9,21.4c-1,0-1.9,0.4-2.6,1L12,17c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
1941
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S26,3,23.9,3s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
1942
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S6,20,8.1,20c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
1943
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26,21.4,23.9,21.4z"/>
1944
+ </svg>
1945
+ ';
1946
+ }
1947
+
1948
+ public static function snapchat() {
1949
+ return
1950
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
1951
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
1952
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
1953
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
1954
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
1955
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
1956
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
1957
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
1958
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
1959
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
1960
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
1961
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
1962
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
1963
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
1964
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
1965
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
1966
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
1967
+ <g>
1968
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
1969
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
1970
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
1971
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
1972
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
1973
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
1974
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
1975
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
1976
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
1977
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
1978
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
1979
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
1980
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
1981
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
1982
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
1983
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
1984
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
1985
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
1986
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
1987
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
1988
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
1989
+ </g>
1990
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
1991
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
1992
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
1993
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
1994
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
1995
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
1996
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
1997
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
1998
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
1999
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
2000
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
2001
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
2002
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
2003
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
2004
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
2005
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
2006
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
2007
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
2008
+ h11.1V87.3z"/>
2009
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
2010
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
2011
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
2012
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
2013
+ <g>
2014
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
2015
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
2016
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
2017
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
2018
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
2019
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
2020
+ </g>
2021
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
2022
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
2023
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
2024
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
2025
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
2026
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
2027
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
2028
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
2029
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
2030
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
2031
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
2032
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2033
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2034
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2035
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
2036
+ <g>
2037
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
2038
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
2039
+ </g>
2040
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
2041
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
2042
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
2043
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
2044
+ <g>
2045
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
2046
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
2047
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
2048
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
2049
+ </g>
2050
+ <path fill="#231F20" d="M23.9-11.8c-1,0-1.9,0.4-2.6,1L12-16.2c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
2051
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9L10.8-20
2052
+ C10.1-20.6,9.2-21,8.1-21c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4C20.1-8.5,20-8.2,20-7.9
2053
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-11.8,23.9-11.8z"/>
2054
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M101.5,129.4c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
2055
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C105.2,135,103.9,131.8,101.5,129.4z
2056
+ M92.6,148.9L92.6,148.9c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
2057
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C103.1,144.2,98.4,148.9,92.6,148.9z M98.4,141c-0.3-0.2-1.9-0.9-2.2-1
2058
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
2059
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
2060
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
2061
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C98.9,141.3,98.7,141.2,98.4,141
2062
+ z"/>
2063
+ <path fill="#231F20" d="M124.2,125.9c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
2064
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
2065
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
2066
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
2067
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
2068
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
2069
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
2070
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
2071
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
2072
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
2073
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
2074
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C124.2,126.1,124.2,126,124.2,125.9z M133.2,142.9c-1.1,0.2-2,0.5-2.8,1.3
2075
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9
2076
+ C133.1,143.6,133.1,143.3,133.2,142.9z"/>
2077
+ <path fill="#231F20" d="M181.4,50.2v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V50.2H181.4z M179.8,63.7h-12v-2.2h12V63.7z
2078
+ M180.1,55.3h-12.6V44.8h12.6V55.3z M181.7,60.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
2079
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
2080
+ c0.8,0,1.4,0.6,1.4,1.4C183.1,59.6,182.5,60.2,181.7,60.2z M178.9,47.4h-10.2v1.3h10.2V47.4z M178.9,49.8h-10.2v1.3h10.2V49.8z
2081
+ M178.9,52.1h-10.2v1.3h10.2V52.1z"/>
2082
+ <path fill="#231F20" d="M184.9,10.1c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
2083
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
2084
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
2085
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C188.9,11.9,187.1,10.1,184.9,10.1z M182.4,4.8c0.7,0,1.2,0.6,1.2,1.2
2086
+ c0,0.7-0.6,1.3-1.2,1.3c-0.7,0-1.2-0.6-1.2-1.3C181.2,5.3,181.7,4.8,182.4,4.8z M160.2,15.8c-0.7-0.3-1.1-1-1.1-1.7
2087
+ c0-1,0.8-1.9,1.9-1.9c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L160.2,15.8z M172.8,24.6c-5.8,0-10.5-2.9-10.5-6.5
2088
+ s4.7-6.5,10.5-6.5c5.8,0,10.5,2.9,10.5,6.5S178.6,24.6,172.8,24.6z M185.5,15.9L185,16c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4
2089
+ c0.4-0.4,0.8-0.6,1.4-0.6c1,0,1.9,0.8,1.9,1.9C186.7,14.9,186.2,15.6,185.5,15.9z M170.7,16.1c0-1-0.8-1.9-1.9-1.9
2090
+ c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9C169.8,18,170.7,17.1,170.7,16.1z M176.9,14.2c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
2091
+ c1,0,1.9-0.8,1.9-1.9C178.8,15.1,178,14.2,176.9,14.2z M176.9,20C176.9,20,176.9,20,176.9,20c-0.3,0-0.5,0.1-0.7,0.3
2092
+ c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7
2093
+ c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7
2094
+ c0-0.3-0.1-0.5-0.3-0.7C177.4,20.1,177.1,20,176.9,20z"/>
2095
+ <path fill="#231F20" d="M163.5,88l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0l-10.6,5
2096
+ C163.3,87.7,163.3,87.9,163.5,88z M186.6,94.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
2097
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C186.8,94.5,186.8,94.2,186.6,94.1z
2098
+ M186.6,100.5l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
2099
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C186.8,101,186.8,100.6,186.6,100.5z"/>
2100
+ <path fill="#231F20" d="M16.2,28c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
2101
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
2102
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
2103
+ C9.1,17.4,9.1,17,9,16.7c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
2104
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8C9.1,11.4,9,9.2,9.5,8c1.7-3.7,5.2-4,6.2-4
2105
+ c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7c0,0,0.2,0.2,0.7,0.2h0
2106
+ c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7c0,0.3-0.2,0.6-1.1,1
2107
+ c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
2108
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
2109
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
2110
+ C18.6,27.3,17.7,28,16.2,28z"/>
2111
+ <path fill="#231F20" d="M114-31.5c0,2.3,0,4.5,0,6.8c0.6,0.3,1.2,0.6,1.8,0.9l4.9,2.4L114-32.2V-31.5z M129.3-34.2
2112
+ C129.2-34.2,129.2-34.2,129.3-34.2L129.3-34.2l-7.6-3.8c-0.2-0.1-0.2-0.1-0.2-0.1c0,0,0,0-0.1,0.2l-1,1.6c-1.2,2-2.4,3.9-3.6,5.9
2113
+ c0,0.1-0.1,0.1,0,0.2c1.1,1.7,2.1,3.5,3.2,5.2l1.9,3L129.3-34.2C129.2-34.1,129.2-34.1,129.3-34.2z M112.7-34.2c-2-1-4-2-6.1-3
2114
+ l-1.4-0.7C105.1-38,105-38,105-38c0,0,0,0.1,0,0.2l0,16.4c0,0.3,0.1,0.5,0.4,0.7l7,3.5c0.2,0.1,0.3,0.1,0.3,0.1c0,0,0.1-0.1,0.1-0.3
2115
+ v-9.9c0-2.2,0-4.4,0-6.6C112.8-34.1,112.8-34.1,112.7-34.2z M122.3-20.5L122.3-20.5l6.5,3.2c0.4,0.2,0.5,0.1,0.5,0.1
2116
+ c0,0,0.1-0.1,0.1-0.5V-32L122.3-20.5z"/>
2117
+ <g>
2118
+ <path fill="#231F20" d="M67.2-27.2c0-8,6.5-14.6,14.7-14.5c7.9,0.1,14.5,6.5,14.4,14.8c-0.1,8-6.7,14.5-14.9,14.3
2119
+ C73.4-12.8,67.1-19.3,67.2-27.2z M81.7-30.1c-0.1,0-0.1-0.1-0.1-0.1c-2.4-3.6-7.5-3.9-10.4-0.8c-1.2,1.3-1.8,2.7-1.8,4.5
2120
+ c0,1.3,0.3,2.5,0.8,3.6c0.8,2,2.2,3.5,4,4.6c2.3,1.5,4.9,2.1,7.7,2.1c1.2,0,2.3-0.1,3.4-0.4c2.5-0.6,4.7-1.8,6.4-3.8
2121
+ c1.6-1.9,2.4-4.1,2.2-6.6c-0.1-1.6-0.8-3-2-4.2c-1.5-1.4-3.2-2.1-5.3-1.9c-1.7,0.1-3.1,0.9-4.3,2.1C82.2-30.7,81.9-30.4,81.7-30.1z
2122
+ "/>
2123
+ <path fill="#231F20" d="M75.6-26.6c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2C73.6-25.8,74.5-26.6,75.6-26.6z"/>
2124
+ <path fill="#231F20" d="M89.8-24.7c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2C88.9-26.6,89.8-25.8,89.8-24.7z"/>
2125
+ <path fill="#231F20" d="M80.7-20.7c0-0.6,0.3-1,0.8-1.1c0.4-0.1,0.8,0.2,1,0.6c0.1,0.3,0.1,0.6,0,0.8c-0.2,0.6-0.5,1.2-0.8,1.7
2126
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.6-0.7-1.1-0.9-1.8c0,0,0-0.1,0-0.1C80.7-20.6,80.7-20.7,80.7-20.7z"/>
2127
+ </g>
2128
+ <g>
2129
+ <path fill="#231F20" d="M145.8-30c0,5,2.9,9.3,7.1,11.4l-6-16.6C146.2-33.6,145.8-31.8,145.8-30z"/>
2130
+ <path fill="#231F20" d="M167-30.6c0-1.6-0.6-2.7-1-3.5c-0.6-1-1.2-1.9-1.2-3c0-1.2,0.9-2.2,2.1-2.2c0.1,0,0.1,0,0.2,0
2131
+ c-2.3-2.1-5.3-3.3-8.6-3.3c-4.4,0-8.3,2.3-10.6,5.7c0.3,0,0.6,0,0.8,0c1.3,0,3.4-0.2,3.4-0.2c0.7,0,0.8,1,0.1,1
2132
+ c0,0-0.7,0.1-1.5,0.1l4.6,13.7l2.8-8.3l-2-5.4c-0.7,0-1.3-0.1-1.3-0.1c-0.7,0-0.6-1.1,0.1-1c0,0,2.1,0.2,3.3,0.2
2133
+ c1.3,0,3.4-0.2,3.4-0.2c0.7,0,0.8,1,0.1,1c0,0-0.7,0.1-1.5,0.1l4.6,13.6l1.3-4.2C166.6-28.3,167-29.6,167-30.6z"/>
2134
+ <path fill="#231F20" d="M158.7-28.9l-3.8,11c1.1,0.3,2.3,0.5,3.6,0.5c1.5,0,2.9-0.3,4.2-0.7c0-0.1-0.1-0.1-0.1-0.2L158.7-28.9z"/>
2135
+ <path fill="#231F20" d="M169.6-36.1c0.1,0.4,0.1,0.8,0.1,1.3c0,1.3-0.2,2.7-1,4.5l-3.9,11.2c3.8-2.2,6.3-6.3,6.3-11
2136
+ C171.1-32.2,170.6-34.3,169.6-36.1z"/>
2137
+ <path fill="#231F20" d="M158.4-44.8c-8.1,0-14.8,6.6-14.8,14.8c0,8.1,6.6,14.8,14.8,14.8c8.1,0,14.8-6.6,14.8-14.8
2138
+ C173.2-38.1,166.6-44.8,158.4-44.8z M158.4-15.9c-7.8,0-14.1-6.3-14.1-14.1c0-7.8,6.3-14.1,14.1-14.1c7.8,0,14.1,6.3,14.1,14.1
2139
+ C172.5-22.2,166.2-15.9,158.4-15.9z"/>
2140
+ </g>
2141
+ </svg>
2142
+ ';
2143
+ }
2144
+
2145
+ public static function social_warfare() {
2146
+ return
2147
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2148
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2149
+ <path fill="#231F20" d="M8.6,9.9c0.2-0.8,1.8-4.2,5.5-6.3C8.1,4.5,3.5,9.7,3.5,15.9c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
2150
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C17.1,17.8,5.5,18.5,8.6,9.9z M27.2,10.4
2151
+ c-0.3,0.3-0.6,0.6-1.1,0.7L21.4,12c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
2152
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C28.5,14,28,12.1,27.2,10.4z"/>
2153
+ </svg>
2154
+ ';
2155
+ }
2156
+
2157
+ public static function tumblr() {
2158
+ return
2159
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2160
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2161
+ <path fill="#231F20" d="M22.2,23.7c-4.1,1.8-4.6-1.5-4.6-1.5V14h4.9V9.6h-4.9V3h-4c0,0-0.5,5.9-5.1,7.2V14h2.9v8.5
2162
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L22.2,23.7z"/>
2163
+ </svg>
2164
+ ';
2165
+ }
2166
+
2167
+ public static function twitter() {
2168
+ return
2169
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2170
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2171
+ <path id="twitter-icon_28_" fill="#231F20" d="M30.7,6.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2172
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2173
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2174
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C28.9,9.2,29.9,8.1,30.7,6.9z"/>
2175
+ </svg>
2176
+ ';
2177
+ }
2178
+
2179
+ public static function upgrade() {
2180
+ return
2181
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2182
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2183
+ <path fill="#231F20" d="M23.9-17c-1,0-1.9,0.4-2.6,1L12-21.4c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
2184
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
2185
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
2186
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-17,23.9-17z"/>
2187
+ <path fill="#231F20" d="M232,53.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
2188
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
2189
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
2190
+ c0.9,0,2-0.1,3.1-0.4V53.5z"/>
2191
+ <path fill="#231F20" d="M247.4,47.5l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
2192
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
2193
+ c-1-4-1-11.3-5.2-10.5C252.6,41.3,247.4,47.5,247.4,47.5z"/>
2194
+ <path fill="#231F20" d="M100.3,61.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
2195
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L100.3,61.3z"/>
2196
+ <path id="f_5_" fill="#231F20" d="M54,66.6V54.8h4l0.6-4.6H54v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
2197
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H54z"/>
2198
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M178.5,40.6c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
2199
+ c2,0,10.1-9.2,10.1-15.3C188.7,45.5,184.1,40.6,178.5,40.6z M178.6,56.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
2200
+ c0,1.3,1.1,2.4,2.5,2.4s2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
2201
+ C184.6,54.2,181.8,56.9,178.6,56.9z"/>
2202
+ <g>
2203
+ <path fill="#231F20" d="M133.1,45.6c-0.7-0.6-1.5-0.8-2.4-0.5c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
2204
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
2205
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
2206
+ c0.3-0.3,0.6-0.7,1-0.9c0.2-0.1,0.4-0.2,0.6-0.2c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
2207
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
2208
+ C134,46.5,133.6,46,133.1,45.6z M146.7,47.2c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
2209
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2c-1.3,0.3-2.5,0.7-3.6,1.2
2210
+ c-0.9,0.4-1.7,0.8-2.4,1.4c-1.4,1.1-2.2,2.6-2.2,4.4c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
2211
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
2212
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
2213
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
2214
+ C147.6,48.1,147.3,47.6,146.7,47.2z M145.2,50.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
2215
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
2216
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3c-0.8,0.2-1.3,0.7-1.5,1.5
2217
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7h-10.3c0-0.1,0-0.1,0-0.2
2218
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
2219
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
2220
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
2221
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C145.5,50.4,145.3,50.5,145.2,50.5z M139.3,45.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
2222
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
2223
+ c0.7,0,1.3-0.6,1.3-1.3C140.6,46.1,140,45.5,139.3,45.5z"/>
2224
+ </g>
2225
+ <path fill="#231F20" d="M312.4,49.3v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V49.3H312.4z M310.8,62.7h-12v-2.2h12V62.7z
2226
+ M311.1,54.4h-12.6V43.9h12.6V54.4z M312.7,59.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
2227
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
2228
+ c0.8,0,1.4,0.6,1.4,1.4C314.1,58.6,313.5,59.2,312.7,59.2z M309.9,46.5h-10.2v1.3h10.2V46.5z M309.9,48.8h-10.2v1.3h10.2V48.8z
2229
+ M309.9,51.2h-10.2v1.3h10.2V51.2z"/>
2230
+ <path id="twitter-icon_28_" fill="#231F20" d="M115.6,4.2c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2231
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2232
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2233
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C113.7,6.5,114.8,5.4,115.6,4.2z"/>
2234
+ <g>
2235
+ <circle fill="#231F20" cx="188.7" cy="13.3" r="7.4"/>
2236
+ <circle fill="#231F20" cx="171.7" cy="13.3" r="7.4"/>
2237
+ </g>
2238
+ <path fill="#231F20" d="M226.6,2h-13.5c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9V9.9
2239
+ C235.5,2.4,234.3,2,226.6,2z M216.6,18.9V7.2l8.9,5.9L216.6,18.9z"/>
2240
+ <path id="email-icon_10_" fill="#231F20" d="M253.9,12l-9.5-7.5v17.2L253.9,12z M274.5,2.9h-30l15,11.5L274.5,2.9z M263.7,12.9
2241
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L263.7,12.9z M265,12.1l9.6,9.6V4.6L265,12.1z"/>
2242
+ <g>
2243
+ <path fill="#231F20" d="M55.7,11.8v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
2244
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H55.7z"/>
2245
+ <polyline fill="#231F20" points="77.2,11.8 74.2,11.8 74.2,8.9 71.2,8.9 71.2,11.8 68.2,11.8 68.2,14.8 71.2,14.8 71.2,17.8
2246
+ 74.2,17.8 74.2,14.8 77.2,14.8 "/>
2247
+ </g>
2248
+ <path fill="#231F20" d="M311.2,8.8c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
2249
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
2250
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
2251
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C315.2,10.6,313.4,8.8,311.2,8.8z M308.7,3.5c0.7,0,1.2,0.6,1.2,1.2
2252
+ c0,0.7-0.6,1.3-1.2,1.3s-1.2-0.6-1.2-1.3C307.4,4.1,308,3.5,308.7,3.5z M286.5,14.6c-0.7-0.3-1.1-1-1.1-1.7c0-1,0.8-1.9,1.9-1.9
2253
+ c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L286.5,14.6z M299.1,23.3c-5.8,0-10.5-2.9-10.5-6.5s4.7-6.5,10.5-6.5
2254
+ c5.8,0,10.5,2.9,10.5,6.5S304.9,23.3,299.1,23.3z M311.8,14.6l-0.5,0.2c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4c0.4-0.4,0.8-0.6,1.4-0.6
2255
+ c1,0,1.9,0.8,1.9,1.9C313,13.6,312.5,14.3,311.8,14.6z M297,14.8c0-1-0.8-1.9-1.9-1.9s-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
2256
+ S297,15.9,297,14.8z M303.2,13c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9c1,0,1.9-0.8,1.9-1.9C305.1,13.8,304.3,13,303.2,13z
2257
+ M303.2,18.8C303.2,18.8,303.2,18.8,303.2,18.8c-0.3,0-0.5,0.1-0.7,0.3c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0
2258
+ c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0
2259
+ c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C303.7,18.9,303.4,18.8,303.2,18.8z"/>
2260
+ <path fill="#231F20" d="M140.7,25.3c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
2261
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
2262
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
2263
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
2264
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
2265
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
2266
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
2267
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
2268
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2c-0.2,0.4-0.8,0.9-3.2,1.2c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
2269
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
2270
+ C143.2,24.6,142.2,25.3,140.7,25.3z"/>
2271
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M65.9,92.1h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
2272
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V92.1z M65.9,85.8
2273
+ c0-0.5-0.4-0.9-0.9-0.9h-2.7c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9H65c0.5,0,0.9-0.4,0.9-0.9V85.8z M56.9,89.4
2274
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5C61.4,91.4,59.4,89.4,56.9,89.4 M65.9,105.6h-18
2275
+ c-1.5,0-2.7-1.2-2.7-2.7v-18c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C68.6,104.4,67.4,105.6,65.9,105.6"/>
2276
+ <path fill="#231F20" d="M212.5,82.2c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
2277
+ C215.3,83.5,214,82.2,212.5,82.2z M210,105.6h4.9V90H210V105.6z M227.6,89.5c0,0-3.9-0.3-4.8,2.6V90h-4.9v15.6h4.9v-8.3
2278
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C233,96.6,233.6,89.5,227.6,89.5z"/>
2279
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M109.6,91.9l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
2280
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
2281
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L109.6,91.9z M93.8,88.2h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
2282
+ C92.4,88.9,93,88.2,93.8,88.2z M102.2,99.5h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
2283
+ C103.6,98.9,102.9,99.5,102.2,99.5z"/>
2284
+ <path id="rss-icon_22_" fill="#231F20" d="M256.8,102.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
2285
+ C255.4,99.5,256.8,100.9,256.8,102.8z M250.3,90v4.9c6.1,0.1,11.1,5,11.1,11.1h4.9C266.2,97.2,259.1,90.1,250.3,90z M250.3,86.6
2286
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V86.6z"/>
2287
+ <path id="icon" fill="#231F20" d="M140.7,91l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
2288
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
2289
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V91z M149.2,94.5v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
2290
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H149.2z"/>
2291
+ <path fill="#231F20" d="M291.9,87.6l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0
2292
+ l-10.6,5C291.7,87.3,291.7,87.5,291.9,87.6z M315,93.7l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
2293
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,94.1,315.2,93.8,315,93.7z
2294
+ M315,100.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
2295
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C315.2,100.6,315.2,100.2,315,100.1z"/>
2296
+ <path fill="#231F20" d="M177.3,89.5c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1l5.5,2.7l-7.4-12.1V89.5z M194.4,86.6c0,0-0.1,0-0.1-0.1h0
2297
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
2298
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C194.4,86.6,194.4,86.6,194.4,86.6z M175.9,86.6c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
2299
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
2300
+ c0-2.5,0-4.9,0-7.4C176,86.6,176,86.6,175.9,86.6z M186.7,101.8L186.7,101.8l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5
2301
+ V89L186.7,101.8z"/>
2302
+ <g>
2303
+ <path fill="#231F20" d="M45.2,174.5c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3c-0.1,6.7-5.6,12.1-12.4,11.9
2304
+ C50.4,186.4,45.2,181,45.2,174.5z M57.3,172.1c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7
2305
+ c0,1.1,0.2,2.1,0.6,3c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2
2306
+ c1.4-1.6,2-3.4,1.9-5.5c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7
2307
+ C57.7,171.5,57.5,171.8,57.3,172.1z"/>
2308
+ <path fill="#231F20" d="M52.2,174.9c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7
2309
+ C50.6,175.7,51.3,174.9,52.2,174.9z"/>
2310
+ <path fill="#231F20" d="M64.1,176.6c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6
2311
+ C63.3,174.9,64.1,175.6,64.1,176.6z"/>
2312
+ <path fill="#231F20" d="M56.5,179.9c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
2313
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C56.5,180,56.5,179.9,56.5,179.9z"/>
2314
+ </g>
2315
+ <g>
2316
+ <path fill="#231F20" d="M57.3,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
2317
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
2318
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
2319
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
2320
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
2321
+ c6.7,0,12.1-5.4,12.1-12.1C69.3,127.5,63.9,122.1,57.3,122.1z"/>
2322
+ </g>
2323
+ <path fill="#231F20" d="M98.2,121.8c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4c6.8,0,12.4-5.5,12.4-12.4S105.1,121.8,98.2,121.8
2324
+ z M98.1,141.9c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
2325
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C105.3,137.8,103.2,141.9,98.1,141.9z"/>
2326
+ <path fill="#231F20" d="M190.7,127.4l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C192,129.7,191.4,128.5,190.7,127.4z M181,122
2327
+ l-3.4,15.6c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C181,121.9,181,121.9,181,122z M183.4,137l-5.3,9.2
2328
+ c0,0-0.1,0.1-0.1,0.1c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C183.9,136.6,183.6,136.6,183.4,137z
2329
+ M168,134.2c0,3.1,1.1,5.9,3,8.1l3-18.7C170.4,125.7,168,129.7,168,134.2z"/>
2330
+ <path fill="#231F20" d="M131.8,128.1c0.2-0.8,1.8-4.2,5.5-6.3c-6,0.9-10.6,6.1-10.6,12.3c0,1.6,0.3,3.2,0.9,4.6
2331
+ c0.2-0.2,0.5-0.3,0.8-0.3l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1
2332
+ C140.3,136,128.7,136.7,131.8,128.1z M150.4,128.6c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9
2333
+ c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4
2334
+ C151.7,132.1,151.2,130.3,150.4,128.6z"/>
2335
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M230.1,125.1c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
2336
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C233.8,130.7,232.5,127.5,230.1,125.1z
2337
+ M221.2,144.6L221.2,144.6c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6
2338
+ c0-5.8,4.7-10.5,10.5-10.5c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C231.7,139.9,227,144.6,221.2,144.6z M226.9,136.7
2339
+ c-0.3-0.2-1.9-0.9-2.2-1c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6
2340
+ c-0.9-0.8-1.6-1.9-1.8-2.2c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6
2341
+ c-0.1-0.2-0.7-1.7-1-2.3c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6
2342
+ c0,1.6,1.1,3.1,1.3,3.3c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5
2343
+ C227.5,137,227.3,136.9,226.9,136.7z"/>
2344
+ <path fill="#231F20" d="M251.8,123.3c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
2345
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
2346
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
2347
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
2348
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
2349
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
2350
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
2351
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
2352
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
2353
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
2354
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
2355
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C251.8,123.5,251.8,123.4,251.8,123.3z M260.8,140.4c-1.1,0.2-2,0.5-2.8,1.3
2356
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C260.6,141,260.7,140.7,260.8,140.4
2357
+ z"/>
2358
+ <g>
2359
+ <path fill="#231F20" d="M292.6,134.2c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C293,131.2,292.6,132.7,292.6,134.2z"/>
2360
+ <path fill="#231F20" d="M310.1,133.7c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
2361
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
2362
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4c-0.6,0-1.1-0.1-1.1-0.1c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
2363
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C309.7,135.6,310.1,134.5,310.1,133.7z"/>
2364
+ <path fill="#231F20" d="M303.2,135.1l-3.1,9.1c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L303.2,135.1z"/>
2365
+ <path fill="#231F20" d="M312.2,129.2c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7l-3.2,9.2c3.1-1.8,5.2-5.2,5.2-9
2366
+ C313.4,132.4,313,130.7,312.2,129.2z"/>
2367
+ <path fill="#231F20" d="M303,122.1c-6.7,0-12.1,5.4-12.1,12.1c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
2368
+ C315.2,127.5,309.7,122.1,303,122.1z M303,145.7c-6.4,0-11.6-5.2-11.6-11.6c0-6.4,5.2-11.6,11.6-11.6c6.4,0,11.6,5.2,11.6,11.6
2369
+ C314.6,140.6,309.4,145.7,303,145.7z"/>
2370
+ </g>
2371
+ <path fill="#231F20" d="M110.9,164.1c-0.3-0.9-1.2-1.6-2.2-1.6h0h-2.2H87.3c-1,0-1.9,0.6-2.2,1.5c-0.1,0.3-0.2,0.6-0.2,0.8v7.9
2372
+ l0.1,1.6c0.4,3.6,2.2,6.7,5.1,8.8c0.1,0,0.1,0.1,0.2,0.1l0,0c1.5,1.1,3.3,1.9,5.1,2.3c0.9,0.2,1.7,0.3,2.6,0.3
2373
+ c0.8,0,1.6-0.1,2.4-0.2c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1,0c1.8-0.4,3.4-1.1,4.9-2.2l0,0c0.1,0,0.1-0.1,0.2-0.1
2374
+ c2.9-2.2,4.7-5.3,5.1-8.8l0.1-1.6v-7.9C111,164.6,111,164.3,110.9,164.1z M105.4,172.3l-6.1,5.9c-0.3,0.3-0.8,0.5-1.2,0.5
2375
+ c-0.4,0-0.9-0.2-1.2-0.5l-6.1-5.9c-0.7-0.7-0.7-1.8-0.1-2.5c0.7-0.7,1.8-0.7,2.5-0.1l4.9,4.7l4.9-4.7c0.7-0.7,1.8-0.7,2.5,0.1
2376
+ C106.1,170.5,106.1,171.6,105.4,172.3z"/>
2377
+ <path fill="#231F20" d="M6,41.4h3.8l4.9,10c0.7,1.5,1.3,2.9,1.3,2.9s0.6-1.4,1.4-2.9l5-10H26l-8.5,15.9v10.1h-3.2V57.1L6,41.4z"/>
2378
+ <polygon fill="#231F20" points="4.3,82.2 4.3,105.6 12.1,105.6 12.1,97.8 19.9,97.8 19.9,90 27.7,90 27.7,82.2 "/>
2379
+ <path fill="#231F20" d="M23.5,13.4C23.5,13.4,23.5,13.4,23.5,13.4l0-2.5c0-3.9-2.9-7.4-6.8-7.7c-4-0.3-7.4,2.5-8,6.2c0,0,0,0,0,0
2380
+ c0.3,0,2.8,0,3,0c0,0,0,0,0,0c0.6-2.2,2.9-3.8,5.4-3.1c2,0.5,3.3,2.4,3.3,4.5v2.5c0,0.1,0,0.1,0,0.1H8.5v0c-1.6,0.1-2.8,1.4-2.8,3
2381
+ v9.5c0,1.7,1.4,3,3,3h14.4c1.7,0,3-1.4,3-3v-9.5C26.2,14.8,25,13.5,23.5,13.4z M21.3,23.3c-0.4,0.4-1.1,0.4-1.6,0L16,19.6l-3.8,3.8
2382
+ c-0.2,0.2-0.5,0.3-0.8,0.3s-0.6-0.1-0.8-0.3c-0.4-0.4-0.4-1.1,0-1.6l4.6-4.6c0.4-0.4,1.1-0.4,1.6,0l4.5,4.5
2383
+ C21.8,22.2,21.8,22.9,21.3,23.3z"/>
2384
+ <path fill="#231F20" d="M-75.6,23.8h-14.5c-1.7,0-3-1.3-3-3v-9.5c0-1.7,1.3-3,3-3h14.5c1.7,0,3,1.3,3,3v9.5
2385
+ C-72.6,22.4-74,23.8-75.6,23.8z"/>
2386
+ <path fill="none" stroke="#231F20" stroke-width="3" stroke-miterlimit="10" d="M-82.9,16.8L-82.9,16.8c-3.3,0-6-2.7-6-6V3.5
2387
+ c0-3.3,2.7-6,6-6h0c3.3,0,6,2.7,6,6v7.3C-76.9,14.1-79.6,16.8-82.9,16.8z"/>
2388
+ <rect x="-99.8" y="4.3" fill="#FFFFFF" width="16.9" height="4"/>
2389
+ <polyline fill="none" stroke="#FFFFFF" stroke-width="2.2121" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
2390
+ -87.4,17.5 -82.9,12.9 -78.3,17.4 "/>
2391
+ </svg>
2392
+ ';
2393
+ }
2394
+
2395
+ public static function vimeo() {
2396
+ return
2397
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2398
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2399
+ <path fill="#231F20" d="M0.7,9.9l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7c2.9-1.9,12.4-10,14.2-19.7
2400
+ c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1c-1-4-1-11.3-5.2-10.5
2401
+ C5.9,3.7,0.7,9.9,0.7,9.9z"/>
2402
+ </svg>
2403
+ ';
2404
+ }
2405
+
2406
+ public static function vine() {
2407
+ return
2408
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2409
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2410
+ <path fill="#231F20" d="M27.4,15.9c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
2411
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
2412
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18H4.6c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
2413
+ c0.9,0,2-0.1,3.1-0.4V15.9z"/>
2414
+ </svg>
2415
+ ';
2416
+ }
2417
+
2418
+ public static function warfare_plugins() {
2419
+ return
2420
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2421
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2422
+ <path fill="#231F20" d="M26.5,9.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C27.9,11.6,27.3,10.3,26.5,9.2z M16.8,3.8l-3.4,15.6
2423
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C16.8,3.7,16.8,3.7,16.8,3.8z M19.2,18.8L13.9,28c0,0-0.1,0.1-0.1,0.1
2424
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C19.7,18.5,19.4,18.5,19.2,18.8z M3.8,16
2425
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C6.2,7.5,3.8,11.5,3.8,16z"/>
2426
+ </svg>
2427
+ ';
2428
+ }
2429
+
2430
+ public static function whatsapp() {
2431
+ return
2432
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2433
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2434
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
2435
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
2436
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
2437
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
2438
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
2439
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
2440
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
2441
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
2442
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
2443
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
2444
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
2445
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
2446
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
2447
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
2448
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
2449
+ <g>
2450
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
2451
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
2452
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
2453
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
2454
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
2455
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
2456
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
2457
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
2458
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
2459
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
2460
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
2461
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
2462
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
2463
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
2464
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
2465
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
2466
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
2467
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
2468
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
2469
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
2470
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
2471
+ </g>
2472
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
2473
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
2474
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
2475
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
2476
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
2477
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
2478
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
2479
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
2480
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
2481
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
2482
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
2483
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
2484
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
2485
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
2486
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
2487
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
2488
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
2489
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
2490
+ h11.1V87.3z"/>
2491
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
2492
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
2493
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
2494
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
2495
+ <g>
2496
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
2497
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
2498
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
2499
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
2500
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
2501
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
2502
+ </g>
2503
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
2504
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
2505
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
2506
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
2507
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
2508
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
2509
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
2510
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
2511
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
2512
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
2513
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
2514
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2515
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2516
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2517
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
2518
+ <g>
2519
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
2520
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
2521
+ </g>
2522
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
2523
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
2524
+ <g>
2525
+ <path fill="#231F20" d="M159.8,14.6c-0.9-0.4-1.6-1.3-1.6-2.4c0-1.4,1.2-2.6,2.6-2.6c0.8,0,1.5,0.3,1.9,0.9
2526
+ c0.2-0.2,0.5-0.4,0.8-0.6c-0.7-0.8-1.6-1.3-2.7-1.3c-2,0-3.6,1.6-3.6,3.6c0,1.6,1,2.9,2.4,3.4C159.6,15.3,159.7,14.9,159.8,14.6z"
2527
+ />
2528
+ <path fill="#231F20" d="M185.9,8.7c-1.2,0-2.2,0.6-2.8,1.4c0.3,0.1,0.6,0.3,0.9,0.4c0.5-0.5,1.1-0.8,1.9-0.8c1.4,0,2.6,1.2,2.6,2.6
2529
+ c0,1.1-0.7,2.1-1.7,2.4c0.1,0.3,0.1,0.7,0.2,1c1.5-0.4,2.5-1.8,2.5-3.4C189.5,10.3,187.9,8.7,185.9,8.7z"/>
2530
+ <path fill="#231F20" d="M173.5,7.6c0,0-0.1,0-0.2,0c-0.3-0.1-0.4-0.4-0.3-0.6l2.3-7.2c0.1-0.2,0.3-0.4,0.6-0.3l6.2,1.4
2531
+ c0.3,0.1,0.4,0.3,0.4,0.6S182,2,181.8,1.9l-5.7-1.3l-2.1,6.7C173.9,7.5,173.7,7.6,173.5,7.6z"/>
2532
+ <path fill="#231F20" d="M184.4,4.9c-1.6,0-2.9-1.3-2.9-2.9c0-1.6,1.3-2.9,2.9-2.9c1.6,0,2.9,1.3,2.9,2.9
2533
+ C187.3,3.5,186,4.9,184.4,4.9z M184.4,0c-1.1,0-1.9,0.9-1.9,1.9s0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9S185.5,0,184.4,0z"/>
2534
+ <path fill="#231F20" d="M173.3,26.1c-8,0-14.4-4.3-14.4-9.6s6.5-9.6,14.4-9.6c8,0,14.4,4.3,14.4,9.6S181.2,26.1,173.3,26.1z
2535
+ M173.3,7.9c-7.4,0-13.5,3.9-13.5,8.6s6,8.6,13.5,8.6c7.4,0,13.5-3.9,13.5-8.6S180.7,7.9,173.3,7.9z"/>
2536
+ <path id="circle21826_6_" inkscape:connector-curvature="0" fill="#231F20" d="M168.4,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
2537
+ c1.2,0,2.2-1,2.2-2.2S169.7,12.4,168.4,12.4z"/>
2538
+ <path id="circle21828_6_" inkscape:connector-curvature="0" fill="#231F20" d="M178.3,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
2539
+ s2.2-1,2.2-2.2S179.5,12.4,178.3,12.4z"/>
2540
+ <path fill="#231F20" d="M173.3,22.6c-2.4,0-4.1-0.5-5.2-1.6c-0.2-0.2-0.2-0.5,0-0.7c0.2-0.2,0.5-0.2,0.7,0c0.9,0.9,2.3,1.3,4.4,1.3
2541
+ c0.3,0,0.5,0.2,0.5,0.5C173.8,22.4,173.6,22.6,173.3,22.6z"/>
2542
+ <path fill="#231F20" d="M173.4,22.6c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c2.1,0,3.6-0.4,4.5-1.3c0.2-0.2,0.5-0.2,0.7,0
2543
+ c0.2,0.2,0.2,0.5,0,0.7C177.4,22.1,175.8,22.6,173.4,22.6z"/>
2544
+ </g>
2545
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
2546
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
2547
+ <g>
2548
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
2549
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
2550
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
2551
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
2552
+ </g>
2553
+ <path fill="#231F20" d="M22.2-15.5c-1,0-1.9,0.4-2.6,1L10.3-20c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
2554
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S24.4-34,22.2-34s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
2555
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S4.4-17,6.5-17c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
2556
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S24.4-15.5,22.2-15.5z"/>
2557
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M25,6.9c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
2558
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6L10,27c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C28.7,12.5,27.4,9.3,25,6.9z M16.1,26.4
2559
+ L16.1,26.4c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
2560
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C26.6,21.7,21.9,26.4,16.1,26.4z M21.8,18.5c-0.3-0.2-1.9-0.9-2.2-1
2561
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
2562
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
2563
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
2564
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C22.4,18.8,22.1,18.7,21.8,18.5z
2565
+ "/>
2566
+ </svg>
2567
+ ';
2568
+ }
2569
+
2570
+ public static function wordpress() {
2571
+ return
2572
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2573
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2574
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
2575
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
2576
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
2577
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
2578
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
2579
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
2580
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
2581
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
2582
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
2583
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
2584
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
2585
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
2586
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
2587
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
2588
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
2589
+ <g>
2590
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
2591
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
2592
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
2593
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
2594
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
2595
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
2596
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
2597
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
2598
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
2599
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
2600
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
2601
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
2602
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
2603
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
2604
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
2605
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
2606
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
2607
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
2608
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
2609
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
2610
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
2611
+ </g>
2612
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
2613
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
2614
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
2615
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
2616
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
2617
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
2618
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
2619
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
2620
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
2621
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
2622
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
2623
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
2624
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
2625
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
2626
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
2627
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
2628
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
2629
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
2630
+ h11.1V87.3z"/>
2631
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
2632
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
2633
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
2634
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
2635
+ <g>
2636
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
2637
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
2638
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
2639
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
2640
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
2641
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
2642
+ </g>
2643
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
2644
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
2645
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
2646
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
2647
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
2648
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
2649
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
2650
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
2651
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
2652
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
2653
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
2654
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2655
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2656
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2657
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
2658
+ <g>
2659
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
2660
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
2661
+ </g>
2662
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
2663
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
2664
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
2665
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
2666
+ <g>
2667
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
2668
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
2669
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
2670
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
2671
+ </g>
2672
+ <path fill="#231F20" d="M23.9-11.8c-1,0-1.9,0.4-2.6,1L12-16.2c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
2673
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9s-1.8-3.9-3.9-3.9s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9L10.8-20
2674
+ C10.1-20.6,9.2-21,8.1-21c-2.2,0-3.9,1.8-3.9,3.9s1.8,3.9,3.9,3.9c1,0,2-0.4,2.7-1.1l9.3,5.4C20.1-8.5,20-8.2,20-7.9
2675
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S26-11.8,23.9-11.8z"/>
2676
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M101.5,129.4c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
2677
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C105.2,135,103.9,131.8,101.5,129.4z
2678
+ M92.6,148.9L92.6,148.9c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
2679
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C103.1,144.2,98.4,148.9,92.6,148.9z M98.4,141c-0.3-0.2-1.9-0.9-2.2-1
2680
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
2681
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
2682
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
2683
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C98.9,141.3,98.7,141.2,98.4,141
2684
+ z"/>
2685
+ <path fill="#231F20" d="M124.2,125.9c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
2686
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
2687
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
2688
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
2689
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
2690
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
2691
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
2692
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
2693
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
2694
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
2695
+ c0.4-1.7,0.9-3.5,1.4-5.2c0.2-0.9,0.5-1.8,0.7-2.7c0.1-0.7-0.1-1.2-1-0.9c-0.6,0.2-1.1,0.5-1.5,0.9c-0.2,0.2-0.3,0.2-0.6,0
2696
+ c-0.3-0.3-0.6-0.6-0.8-1c-0.1-0.2-0.2-0.4-0.3-0.7C124.2,126.1,124.2,126,124.2,125.9z M133.2,142.9c-1.1,0.2-2,0.5-2.8,1.3
2697
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9
2698
+ C133.1,143.6,133.1,143.3,133.2,142.9z"/>
2699
+ <path fill="#231F20" d="M181.4,50.2v-6.6h-15.2v6.6h-2.8v11.3h2.5v4.1h15.8v-4.1h2.5V50.2H181.4z M179.8,63.7h-12v-2.2h12V63.7z
2700
+ M180.1,55.3h-12.6V44.8h12.6V55.3z M181.7,60.2c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.2-0.1c-0.1,0-0.1-0.1-0.2-0.1
2701
+ c-0.1-0.1-0.1-0.1-0.2-0.2c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.2-0.2-0.3c0-0.1-0.1-0.3-0.1-0.4c0-0.8,0.6-1.4,1.4-1.4
2702
+ c0.8,0,1.4,0.6,1.4,1.4C183.1,59.6,182.5,60.2,181.7,60.2z M178.9,47.4h-10.2v1.3h10.2V47.4z M178.9,49.8h-10.2v1.3h10.2V49.8z
2703
+ M178.9,52.1h-10.2v1.3h10.2V52.1z"/>
2704
+ <path fill="#231F20" d="M184.9,10.1c-1.2,0-2.4,0.6-3.2,1.6l-0.2,0.2c-1.9-1.3-4.5-2.1-7.3-2.3l1.3-4l3.5,0.8c0.2,1.7,1.6,3,3.4,3
2705
+ c1.9,0,3.4-1.5,3.4-3.4c0-1.9-1.5-3.4-3.4-3.4c-1.3,0-2.4,0.7-3,1.8l-4.3-1c-0.5-0.1-1,0.2-1.2,0.7l-1.7,5.4c-3.1,0.1-5.9,1-8,2.3
2706
+ l-0.2-0.3c-0.8-0.9-1.9-1.5-3.1-1.5c-2.2,0-4,1.8-4,4c0,1.7,1.1,3.2,2.7,3.8l0.7,0.3l0-0.2c0,0,0,0.1,0,0.1c0,4.7,5.6,8.5,12.6,8.5
2707
+ c6.9,0,12.5-3.8,12.6-8.5l0.7-0.2c1.7-0.5,2.8-2.1,2.8-3.8C188.9,11.9,187.1,10.1,184.9,10.1z M182.4,4.8c0.7,0,1.2,0.6,1.2,1.2
2708
+ c0,0.7-0.6,1.3-1.2,1.3c-0.7,0-1.2-0.6-1.2-1.3C181.2,5.3,181.7,4.8,182.4,4.8z M160.2,15.8c-0.7-0.3-1.1-1-1.1-1.7
2709
+ c0-1,0.8-1.9,1.9-1.9c0.5,0,1,0.2,1.4,0.6l0.2,0.3c-0.9,0.8-1.5,1.8-1.9,2.8L160.2,15.8z M172.8,24.6c-5.8,0-10.5-2.9-10.5-6.5
2710
+ s4.7-6.5,10.5-6.5c5.8,0,10.5,2.9,10.5,6.5S178.6,24.6,172.8,24.6z M185.5,15.9L185,16c-0.4-1-1-2-1.8-2.8l0,0l0.3-0.4
2711
+ c0.4-0.4,0.8-0.6,1.4-0.6c1,0,1.9,0.8,1.9,1.9C186.7,14.9,186.2,15.6,185.5,15.9z M170.7,16.1c0-1-0.8-1.9-1.9-1.9
2712
+ c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9C169.8,18,170.7,17.1,170.7,16.1z M176.9,14.2c-1,0-1.9,0.9-1.9,1.9c0,1,0.9,1.9,1.9,1.9
2713
+ c1,0,1.9-0.8,1.9-1.9C178.8,15.1,178,14.2,176.9,14.2z M176.9,20C176.9,20,176.9,20,176.9,20c-0.3,0-0.5,0.1-0.7,0.3
2714
+ c-0.6,0.6-1.7,0.9-3.3,0.9c0,0,0,0,0,0c0,0,0,0,0,0c-1.6,0-2.6-0.3-3.3-0.9c-0.4-0.4-1.1-0.4-1.4,0c-0.2,0.2-0.3,0.4-0.3,0.7
2715
+ c0,0.3,0.1,0.5,0.3,0.7c1,1,2.5,1.5,4.7,1.5c0,0,0,0,0,0c0,0,0,0,0,0c2.1,0,3.7-0.5,4.7-1.5c0.2-0.2,0.3-0.4,0.3-0.7
2716
+ c0-0.3-0.1-0.5-0.3-0.7C177.4,20.1,177.1,20,176.9,20z"/>
2717
+ <path fill="#231F20" d="M163.5,88l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5c0.2-0.1,0.2-0.4,0-0.5l-10.5-5c-0.6-0.3-1.4-0.3-2,0l-10.6,5
2718
+ C163.3,87.7,163.3,87.9,163.5,88z M186.6,94.1l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3
2719
+ c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C186.8,94.5,186.8,94.2,186.6,94.1z
2720
+ M186.6,100.5l-2.2-1c-0.4-0.2-0.9-0.2-1.4,0l-7,3.3c-0.6,0.3-1.3,0.3-1.8,0l-7-3.3c-0.4-0.2-0.9-0.2-1.3,0l-2.3,1.1
2721
+ c-0.2,0.1-0.2,0.4,0,0.5l10.6,5c0.6,0.3,1.3,0.3,1.8,0l10.6-5C186.8,101,186.8,100.6,186.6,100.5z"/>
2722
+ <path fill="#231F20" d="M-24.3-3.2c-0.1,0-0.1,0-0.2,0h0c0,0-0.1,0-0.1,0c-1.5,0-2.5-0.7-3.4-1.4c-0.6-0.5-1.3-0.9-2-1
2723
+ c-0.4-0.1-0.7-0.1-1-0.1c-0.6,0-1.1,0.1-1.4,0.2c-0.2,0-0.4,0.1-0.5,0.1c-0.1,0-0.3,0-0.4-0.3c-0.1-0.2-0.1-0.4-0.1-0.6
2724
+ c-0.1-0.5-0.2-0.8-0.4-0.8c-2.4-0.4-3.1-0.9-3.2-1.2c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.3,0.2-0.3c3.7-0.6,5.3-4.4,5.4-4.5c0,0,0,0,0,0
2725
+ c0.2-0.5,0.3-0.9,0.1-1.2c-0.3-0.6-1.1-0.9-1.6-1c-0.1,0-0.3-0.1-0.4-0.1c-1.1-0.4-1.2-0.9-1.1-1.1c0.1-0.4,0.6-0.7,1-0.7
2726
+ c0.1,0,0.2,0,0.3,0.1c0.5,0.2,0.9,0.3,1.3,0.3c0.5,0,0.8-0.2,0.8-0.3c0-0.2,0-0.5,0-0.8c-0.1-1.7-0.2-3.9,0.3-5.2
2727
+ c1.7-3.7,5.2-4,6.2-4c0,0,0.5,0,0.5,0l0.1,0c1,0,4.6,0.3,6.2,4c0.6,1.2,0.4,3.4,0.3,5.2l0,0.1c0,0.2,0,0.5,0,0.7
2728
+ c0,0,0.2,0.2,0.7,0.2h0c0.4,0,0.8-0.1,1.2-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.3,0,0.4,0.1l0,0c0.4,0.1,0.6,0.4,0.6,0.7
2729
+ c0,0.3-0.2,0.6-1.1,1c-0.1,0-0.2,0.1-0.4,0.1c-0.5,0.2-1.4,0.4-1.6,1c-0.1,0.3-0.1,0.7,0.1,1.2c0,0,0,0,0,0c0.1,0.2,1.7,3.9,5.4,4.5
2730
+ c0.1,0,0.2,0.1,0.2,0.3c0,0.1,0,0.1,0,0.2C-11.9-8-12.6-7.5-15-7.1c-0.2,0-0.3,0.3-0.4,0.8c0,0.2-0.1,0.4-0.1,0.6
2731
+ c-0.1,0.2-0.2,0.3-0.3,0.3h0c-0.1,0-0.3,0-0.5-0.1c-0.4-0.1-0.9-0.2-1.4-0.2c-0.3,0-0.7,0-1,0.1c-0.7,0.1-1.3,0.6-2,1
2732
+ C-21.8-3.9-22.8-3.2-24.3-3.2z"/>
2733
+ <path fill="#231F20" d="M49.5-19.4c0,2.5,0,5,0,7.6c0.7,0.4,1.3,0.7,2,1L57-8.1l-7.4-12.1V-19.4z M66.6-22.4c0,0-0.1,0-0.1-0.1h0
2734
+ l-8.4-4.2c-0.2-0.1-0.2-0.1-0.3-0.1c0,0,0,0.1-0.1,0.2l-1.1,1.8c-1.3,2.2-2.7,4.4-4.1,6.6c-0.1,0.1-0.1,0.1,0,0.2
2735
+ c1.2,1.9,2.4,3.9,3.6,5.8l2.1,3.4l8.3-13.6C66.6-22.3,66.6-22.3,66.6-22.4z M48.1-22.4c-2.3-1.1-4.5-2.3-6.8-3.4l-1.6-0.8
2736
+ c-0.1-0.1-0.2-0.1-0.2-0.1c0,0,0,0.1,0,0.2l0,18.4c0,0.4,0.1,0.6,0.5,0.7l7.8,3.9c0.2,0.1,0.3,0.1,0.4,0.1c0,0,0.1-0.1,0.1-0.4v-11
2737
+ c0-2.5,0-4.9,0-7.4C48.2-22.3,48.2-22.3,48.1-22.4z M58.9-7.1L58.9-7.1l7.3,3.6c0.4,0.2,0.5,0.2,0.5,0.2c0,0,0.1-0.1,0.1-0.5v-16.1
2738
+ L58.9-7.1z"/>
2739
+ <g>
2740
+ <path fill="#231F20" d="M-76-17.1c0-6.7,5.4-12.2,12.2-12.1c6.6,0.1,12.1,5.5,12,12.3C-51.9-10.3-57.3-4.9-64.2-5
2741
+ C-70.8-5.2-76-10.6-76-17.1z M-63.9-19.6c-0.1,0-0.1-0.1-0.1-0.1c-2-3-6.3-3.3-8.7-0.6c-1,1-1.5,2.3-1.5,3.7c0,1.1,0.2,2.1,0.6,3
2742
+ c0.7,1.6,1.9,2.9,3.4,3.8c2,1.2,4.1,1.8,6.4,1.8c1,0,1.9-0.1,2.8-0.4c2.1-0.5,3.9-1.5,5.4-3.2c1.4-1.6,2-3.4,1.9-5.5
2743
+ c-0.1-1.4-0.7-2.5-1.6-3.5c-1.2-1.2-2.7-1.7-4.4-1.6c-1.4,0.1-2.6,0.7-3.6,1.7C-63.5-20.1-63.7-19.8-63.9-19.6z"/>
2744
+ <path fill="#231F20" d="M-69-16.7c0.9,0,1.6,0.7,1.6,1.7c0,0.9-0.7,1.6-1.7,1.6c-0.9,0-1.6-0.7-1.6-1.7C-70.6-16-69.9-16.7-69-16.7
2745
+ z"/>
2746
+ <path fill="#231F20" d="M-57.2-15c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.7-1.6C-57.9-16.7-57.2-16-57.2-15
2747
+ z"/>
2748
+ <path fill="#231F20" d="M-64.7-11.7c0-0.5,0.3-0.9,0.7-0.9c0.3-0.1,0.7,0.2,0.8,0.5c0.1,0.2,0.1,0.5,0,0.7c-0.2,0.5-0.4,1-0.7,1.4
2749
+ c0,0.1-0.1,0.1-0.1,0c-0.3-0.5-0.6-1-0.7-1.5c0,0,0-0.1,0-0.1C-64.7-11.7-64.7-11.7-64.7-11.7z"/>
2750
+ </g>
2751
+ <g>
2752
+ <path fill="#231F20" d="M5.6,16c0,4.1,2.4,7.7,5.9,9.4l-5-13.6C5.9,13.1,5.6,14.5,5.6,16z"/>
2753
+ <path fill="#231F20" d="M23,15.5c0-1.3-0.5-2.2-0.9-2.9c-0.5-0.9-1-1.6-1-2.4c0-1,0.7-1.8,1.7-1.8c0,0,0.1,0,0.1,0
2754
+ c-1.8-1.7-4.3-2.7-7-2.7c-3.6,0-6.8,1.9-8.7,4.7c0.2,0,0.5,0,0.7,0c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9
2755
+ c0,0-0.6,0.1-1.2,0.1l3.8,11.3l2.3-6.8l-1.6-4.4C13.5,11.1,13,11,13,11c-0.6,0-0.5-0.9,0.1-0.9c0,0,1.7,0.1,2.7,0.1
2756
+ c1.1,0,2.8-0.1,2.8-0.1c0.6,0,0.6,0.8,0.1,0.9c0,0-0.6,0.1-1.2,0.1l3.8,11.2l1-3.5C22.7,17.4,23,16.4,23,15.5z"/>
2757
+ <path fill="#231F20" d="M16.2,16.9L13.1,26c0.9,0.3,1.9,0.4,2.9,0.4c1.2,0,2.4-0.2,3.5-0.6c0,0-0.1-0.1-0.1-0.1L16.2,16.9z"/>
2758
+ <path fill="#231F20" d="M25.1,11c0,0.3,0.1,0.7,0.1,1.1c0,1.1-0.2,2.2-0.8,3.7L21.2,25c3.1-1.8,5.2-5.2,5.2-9
2759
+ C26.4,14.2,25.9,12.5,25.1,11z"/>
2760
+ <path fill="#231F20" d="M16,3.9C9.3,3.9,3.9,9.3,3.9,16c0,6.7,5.4,12.1,12.1,12.1c6.7,0,12.1-5.4,12.1-12.1
2761
+ C28.1,9.3,22.7,3.9,16,3.9z M16,27.6C9.6,27.6,4.4,22.4,4.4,16C4.4,9.6,9.6,4.4,16,4.4c6.4,0,11.6,5.2,11.6,11.6
2762
+ C27.6,22.4,22.4,27.6,16,27.6z"/>
2763
+ </g>
2764
+ </svg>
2765
+ ';
2766
+ }
2767
+
2768
+ public static function youtube() {
2769
+ return
2770
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2771
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2772
+ <path fill="#231F20" d="M22.8,4.7H9.2c-7.7,0-8.9,0.4-8.9,7.9v6.8c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
2773
+ C31.7,5.1,30.5,4.7,22.8,4.7z M12.8,21.6V9.9l8.9,5.9L12.8,21.6z"/>
2774
+ </svg>
2775
+ ';
2776
+ }
2777
+
2778
+ public static function yummly() {
2779
+ return
2780
+ '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2781
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
2782
+ <path fill="#231F20" d="M103.5,54.5c-0.7,0.2-1.3,0.2-1.9,0.2c-3.3,0-5.8-2.3-5.8-6.3c0-2,0.8-3,1.8-3c1,0,1.7,0.9,1.7,2.8
2783
+ c0,1.1-0.3,2.2-0.5,2.9c0,0,1,1.8,3.8,1.2c0.6-1.3,0.9-3,0.9-4.5c0-4-2-6.3-5.8-6.3c-3.8,0-6.1,3-6.1,6.8c0,3.9,1.8,7.2,4.8,8.7
2784
+ c-1.3,2.5-2.8,4.7-4.5,6.4c-3-3.6-5.7-8.5-6.8-18h-4.4c2.1,15.8,8.2,20.8,9.8,21.8c0.9,0.5,1.7,0.5,2.5,0.1c1.3-0.7,5.3-4.7,7.4-9.3
2785
+ c0.9,0,2-0.1,3.1-0.4V54.5z"/>
2786
+ <path fill="#231F20" d="M118.1,48.8l1.2,1.6c0,0,2.6-2,3.4-1c0.9,1,4.1,13.2,5.2,15.5c1,2,3.6,4.6,6.5,2.7
2787
+ c2.9-1.9,12.4-10,14.2-19.7c1.7-9.6-11.5-7.6-12.9,0.8c3.5-2.1,5.4,0.9,3.6,4.2c-1.8,3.3-3.4,5.5-4.3,5.5c-0.9,0-1.5-2.2-2.5-6.1
2788
+ c-1-4-1-11.3-5.2-10.5C123.3,42.6,118.1,48.8,118.1,48.8z"/>
2789
+ <path fill="#231F20" d="M-25.8,62.3c-4.1,1.8-4.6-1.5-4.6-1.5v-8.2h4.9v-4.4h-4.9v-6.7h-4c0,0-0.5,5.9-5.1,7.2v3.9h2.9v8.5
2790
+ c0,4.2,3.5,6.5,7.2,6.5c3.7,0,4.9-1.6,4.9-1.6L-25.8,62.3z"/>
2791
+ <path id="f_5_" fill="#231F20" d="M-71.3,67.6V55.7h4l0.6-4.6h-4.6v-3c0-1.3,0.4-2.3,2.3-2.3l2.5,0v-4.1c-0.4-0.1-1.9-0.2-3.6-0.2
2792
+ c-3.5,0-6,2.2-6,6.1v3.4h-4v4.6h4v11.9H-71.3z"/>
2793
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M50.8,41.5c-5.8,0-10.4,4.9-10.4,10.8c0,6.1,8.1,15.3,10.4,15.3
2794
+ c2,0,10.1-9.2,10.1-15.3C61,46.4,56.4,41.5,50.8,41.5z M50.9,57.9c-3.6,0-6.4-2.8-6.4-6c0-1.5,0.5-2.9,1.3-3.9c0,0,0,0,0,0
2795
+ c0,1.3,1.1,2.4,2.5,2.4c1.4,0,2.5-1.1,2.5-2.4c0-1-0.6-1.8-1.5-2.2c0.5-0.1,1.1-0.2,1.6-0.2c3.3,0,6.1,2.8,6.1,6.4
2796
+ C56.9,55.1,54.2,57.9,50.9,57.9z"/>
2797
+ <g>
2798
+ <path fill="#231F20" d="M6.2,46.5C5.5,46,4.7,45.8,3.8,46c-0.6,0.2-1.1,0.5-1.5,1c-0.5,0.6-0.9,1.3-0.9,2.1c0,0.2,0,0.3,0,0.5
2799
+ c0.1,0.3,0.2,0.6,0.3,0.9c0.2,0.5,0.5,0.8,0.9,1.1c0.2,0.2,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.1,0.4,0c0.2-0.1,0.2-0.4,0-0.5
2800
+ c-0.2-0.1-0.4-0.3-0.5-0.5c-0.2-0.2-0.3-0.4-0.5-0.7c-0.2-0.4-0.3-0.8-0.3-1.2c0-0.2,0-0.3,0.1-0.5c0.1-0.2,0.2-0.4,0.4-0.6
2801
+ c0.3-0.3,0.6-0.7,1-0.9C3.9,47.1,4.1,47,4.3,47c0.3-0.1,0.7,0,1,0.2c0.5,0.2,0.9,0.5,1.2,1c0.1,0.2,0.2,0.3,0.4,0.5
2802
+ c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.1-0.6
2803
+ C7.1,47.4,6.7,46.9,6.2,46.5z M19.8,48.1c-0.5-0.3-1-0.5-1.5-0.6c-0.4-0.1-0.9-0.2-1.2-0.4c-0.3-0.2-0.6-0.4-0.9-0.6
2804
+ c-0.5-0.4-1-0.9-1.5-1.4c-0.7-0.7-1.5-1.4-2.3-2.1c-0.9-0.8-2-1.2-3.2-1.4c-1-0.1-1.9,0-2.9,0.2C5,42,3.8,42.5,2.6,43
2805
+ c-0.9,0.4-1.7,0.8-2.4,1.4C-1.3,45.5-2,46.9-2,48.7c0,0.7,0.1,1.5,0.3,2.2c0.2,1.1,0.5,2.2,0.6,3.4c0.2,1.4,0.2,2.7,0.2,4.1
2806
+ c0,1.3,0,2.5-0.1,3.8c0,1.1-0.1,2.3-0.2,3.4c0,0.7-0.1,1.3-0.2,2h1.5h11h1.6c-0.1-0.2-0.2-0.4-0.3-0.6c-0.6-1.2-1.2-2.5-1.8-3.7
2807
+ c-0.4-0.8-0.7-1.7-0.8-2.6c-0.1-0.7-0.1-1.4-0.1-2c0-0.9,0.1-1.8,0.3-2.7c0.1-0.4,0.3-0.6,0.6-0.6c0.3,0,0.6-0.1,0.9-0.1
2808
+ c0.7-0.1,1.4-0.1,2.1-0.1c1.5-0.1,3-0.6,4.3-1.5c0.4-0.3,0.8-0.6,1.2-0.9c0.3-0.2,0.6-0.5,0.8-0.8c0.4-0.7,0.6-1.4,0.6-2.2
2809
+ C20.7,49,20.4,48.5,19.8,48.1z M18.3,51.5c-0.6,0.4-1.2,0.8-1.9,1.1c-0.1,0-0.1,0-0.2,0c-1-0.3-1.9-0.7-2.8-1.3
2810
+ c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0,0.3,0.1,0.3c0.2,0.2,0.5,0.3,0.7,0.5c0.5,0.2,1,0.5,1.5,0.7
2811
+ c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.4,0.1-0.8,0.2-1.2,0.3c-0.6,0.1-1.3,0.1-1.9,0.2c-0.7,0.1-1.4,0.1-2,0.3C9.5,54,9,54.5,8.8,55.2
2812
+ c-0.2,0.7-0.3,1.4-0.4,2.2c0,1,0,2.1,0.1,3.1c0.1,1.1,0.4,2.1,0.8,3.2c0.4,0.9,0.8,1.8,1.3,2.7H0.3c0-0.1,0-0.1,0-0.2
2813
+ c0.1-1.6,0.2-3.3,0.3-4.9c0-0.8,0-1.6,0.1-2.3c0-1.2,0-2.4-0.1-3.5c-0.1-1-0.2-2-0.4-3c-0.1-0.8-0.3-1.5-0.4-2.3
2814
+ c-0.1-0.6-0.2-1.2-0.2-1.8c0-1.1,0.5-2,1.3-2.7c0.6-0.5,1.4-0.9,2.1-1.2c1-0.5,2.1-0.9,3.2-1.2c0.7-0.2,1.3-0.3,2-0.3
2815
+ c1.2,0,2.3,0.4,3.3,1.2c0.9,0.7,1.7,1.5,2.6,2.4c0.7,0.7,1.4,1.3,2.2,1.8c0.3,0.2,0.7,0.4,1.1,0.5c0,0,0.1,0.1,0.1,0.1
2816
+ c0.3,0.8,0.7,1.6,1.1,2.3c0,0,0,0,0,0C18.6,51.3,18.5,51.4,18.3,51.5z M12.5,46.5c-0.7,0-1.3,0.6-1.3,1.3c0,0.1,0,0.3,0,0.5
2817
+ c-0.2,0-0.4-0.1-0.6-0.1c-0.1,0-0.3,0-0.3,0.1c0,0.1,0,0.3,0.1,0.3c0.1,0.1,0.3,0.1,0.4,0.2c0.5,0.2,1.1,0.3,1.6,0.3
2818
+ c0.7,0,1.3-0.6,1.3-1.3C13.7,47,13.2,46.5,12.5,46.5z"/>
2819
+ </g>
2820
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-59.4,93.7h-2c0.1,0.6,0.2,1.2,0.2,1.8c0,4-3.2,7.2-7.2,7.2
2821
+ c-4,0-7.2-3.2-7.2-7.2c0-0.6,0.1-1.2,0.2-1.8h-2v9.9c0,0.5,0.4,0.9,0.9,0.9h16.2c0.5,0,0.9-0.4,0.9-0.9V93.7z M-59.4,87.4
2822
+ c0-0.5-0.4-0.9-0.9-0.9H-63c-0.5,0-0.9,0.4-0.9,0.9v2.7c0,0.5,0.4,0.9,0.9,0.9h2.7c0.5,0,0.9-0.4,0.9-0.9V87.4z M-68.4,91
2823
+ c-2.5,0-4.5,2-4.5,4.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C-63.9,93.1-65.9,91-68.4,91 M-59.4,107.3h-18c-1.5,0-2.7-1.2-2.7-2.7v-18
2824
+ c0-1.5,1.2-2.7,2.7-2.7h18c1.5,0,2.7,1.2,2.7,2.7v18C-56.7,106-57.9,107.3-59.4,107.3"/>
2825
+ <path fill="#231F20" d="M86.8,83.8c-1.6,0-2.9,1.3-2.9,2.9c0,1.6,1.3,2.9,2.9,2.9c1.6,0,2.9-1.3,2.9-2.9
2826
+ C89.6,85.1,88.3,83.8,86.8,83.8z M84.3,107.3h4.9V91.7h-4.9V107.3z M101.9,91.2c0,0-3.9-0.3-4.8,2.6v-2.1h-4.9v15.6H97v-8.3
2827
+ c0-0.3,0.1-3.4,3-3.4c2.7,0,2.5,3.6,2.5,3.6v8h4.8v-9C107.3,98.2,107.9,91.2,101.9,91.2z"/>
2828
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M-15.8,93.6l-0.2-0.4l-0.3-0.3c-0.4-0.3-2.6,0-3.2-0.5
2829
+ c-0.4-0.4-0.5-1.1-0.6-2c-0.2-1.8-0.4-1.9-0.7-2.5c-1-2.2-3.8-3.8-5.7-4h-5.2c-4.1,0-7.4,3.3-7.4,7.4v8.6c0,4.1,3.3,7.4,7.4,7.4h8.5
2830
+ c4.1,0,7.4-3.3,7.4-7.4l0-6L-15.8,93.6z M-31.6,89.9h4.1c0.8,0,1.4,0.6,1.4,1.4c0,0.8-0.6,1.4-1.4,1.4h-4.1c-0.8,0-1.4-0.6-1.4-1.4
2831
+ C-33,90.5-32.4,89.9-31.6,89.9z M-23.2,101.2h-8.3c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h8.3c0.8,0,1.4,0.6,1.4,1.4
2832
+ C-21.8,100.5-22.5,101.2-23.2,101.2z"/>
2833
+ <path id="rss-icon_22_" fill="#231F20" d="M131,104.8c0,1.8-1.5,3.3-3.3,3.3c-1.8,0-3.3-1.5-3.3-3.3c0-1.8,1.5-3.3,3.3-3.3
2834
+ C129.6,101.5,131,103,131,104.8z M124.5,92.1V97c6.1,0.1,11.1,5,11.1,11.1h4.9C140.4,99.3,133.3,92.2,124.5,92.1z M124.5,88.7
2835
+ c5.2,0,10,2,13.7,5.7c3.7,3.7,5.7,8.5,5.7,13.7h4.9c0-13.4-10.9-24.2-24.2-24.3V88.7z"/>
2836
+ <path fill="#231F20" d="M69.4,87.3h-1.2c-0.4,0-1,0.6-1,1v14.5c0,0.4,0.6,0.9,1,0.9h1.2v3.4H58.8v-3.4H61V88.5h-0.1l-5.2,18.7h-4
2837
+ l-5.1-18.7h-0.1v15.3h2.2v3.4h-8.9v-3.4h1.1c0.5,0,1.1-0.5,1.1-0.9V88.3c0-0.4-0.6-1-1.1-1h-1.1v-3.4h11.1l3.6,13.6h0.1l3.7-13.6
2838
+ h11.1V87.3z"/>
2839
+ <path id="icon" fill="#231F20" d="M15.2,92.6l2.1,1l3.1-0.9v-2.2c-0.1-3.7-3.1-6.6-6.8-6.6c-3.7,0-6.7,2.9-6.8,6.6v9.9
2840
+ c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.2h-5.2c0,0,0,4.2,0,4.3c0,3.8,3.1,6.9,6.9,6.9c3.8,0,6.8-3,6.8-6.8l0-9.8
2841
+ c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6V92.6z M23.7,96.1v4.4c0,0.9-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6v-4.3l-3.1,0.9
2842
+ l-2.1-1v4.3c0,3.8,3.1,6.8,6.9,6.8c3.8,0,6.9-3.1,6.9-6.9c0,0,0-4.3,0-4.3H23.7z"/>
2843
+ <g>
2844
+ <path fill="#231F20" d="M-68,124.7c-6.7,0-12.1,5.4-12.1,12.1c0,4.9,3,9.2,7.2,11.1c0-0.8,0-1.9,0.2-2.8c0.2-1,1.6-6.6,1.6-6.6
2845
+ s-0.4-0.8-0.4-1.9c0-1.8,1-3.1,2.3-3.1c1.1,0,1.6,0.8,1.6,1.8c0,1.1-0.7,2.8-1.1,4.3c-0.3,1.3,0.6,2.3,1.9,2.3
2846
+ c2.3,0,3.8-2.9,3.8-6.4c0-2.6-1.8-4.6-5-4.6c-3.7,0-5.9,2.7-5.9,5.8c0,1.1,0.3,1.8,0.8,2.4c0.2,0.3,0.3,0.4,0.2,0.7
2847
+ c-0.1,0.2-0.2,0.8-0.2,1c-0.1,0.3-0.3,0.4-0.6,0.3c-1.7-0.7-2.5-2.5-2.5-4.6c0-3.4,2.9-7.5,8.6-7.5c4.6,0,7.6,3.3,7.6,6.9
2848
+ c0,4.7-2.6,8.3-6.5,8.3c-1.3,0-2.5-0.7-2.9-1.5c0,0-0.7,2.8-0.9,3.3c-0.3,0.9-0.8,1.9-1.2,2.6c1.1,0.3,2.2,0.5,3.4,0.5
2849
+ c6.7,0,12.1-5.4,12.1-12.1C-56,130.1-61.4,124.7-68,124.7z"/>
2850
+ </g>
2851
+ <path fill="#231F20" d="M-26.3,124.7c-6.8,0-12.4,5.5-12.4,12.4s5.5,12.4,12.4,12.4s12.4-5.5,12.4-12.4S-19.4,124.7-26.3,124.7z
2852
+ M-26.4,144.8c-5.1,0-7.1-4.2-7.4-6.4c-0.1-0.5,0.3-1,0.8-1.1c0.5-0.1,1,0.3,1.1,0.8c0,0.2,0.8,4.7,5.5,4.7c4.7,0,5.7-4.6,5.8-4.8
2853
+ c0.1-0.5,0.6-0.9,1.1-0.8c0.5,0.1,0.9,0.6,0.8,1.1C-19.2,140.6-21.4,144.8-26.4,144.8z"/>
2854
+ <path fill="#231F20" d="M67.7,130.2l-2,10.2c-0.1,0.4,0.2,0.4,0.4,0l3.2-6.5C69,132.6,68.5,131.4,67.7,130.2z M58,124.9l-3.4,15.6
2855
+ c-0.1,0.4,0.2,0.4,0.4,0l7.5-14.6c-1.4-0.6-2.9-1-4.6-1.1C58,124.7,58,124.8,58,124.9z M60.4,139.9l-5.3,9.2c0,0-0.1,0.1-0.1,0.1
2856
+ c0.8,0.1,1.6,0.2,2.4,0.2c0.8,0,1.5-0.1,2.3-0.2c0,0,0-0.1,0-0.1l1.2-9.2C60.9,139.5,60.6,139.5,60.4,139.9z M45,137.1
2857
+ c0,3.1,1.1,5.9,3,8.1l3-18.7C47.4,128.6,45,132.6,45,137.1z"/>
2858
+ <path fill="#231F20" d="M8,131c0.2-0.8,1.8-4.2,5.5-6.3C7.6,125.6,3,130.8,3,137c0,1.6,0.3,3.2,0.9,4.6c0.2-0.2,0.5-0.3,0.8-0.3
2859
+ l4.6-0.9c0.8-0.2,1.1,0.2,0.9,1c-0.5,1.8,0.5,2.9,2.3,2.9c1.8,0,3.6-1.1,3.7-2.1C16.6,138.9,5,139.6,8,131z M26.6,131.5
2860
+ c-0.3,0.3-0.6,0.6-1.1,0.7l-4.6,0.9c-0.8,0.2-1.1-0.2-0.9-0.9c0.3-1.5-0.6-2.5-2.4-2.5c-1.5,0-2.7,0.9-2.8,1.7
2861
+ c-0.5,2.9,11.4,2.9,8.4,11.5c-0.3,0.8-2.3,4.6-6.8,6.6c6.5-0.4,11.7-5.8,11.7-12.4C27.9,135,27.4,133.1,26.6,131.5z"/>
2862
+ <path id="twitter-icon_28_" fill="#231F20" d="M-10.7,5.9c-1.1,0.5-2.2,0.8-3.5,0.9c1.2-0.7,2.2-1.9,2.7-3.3
2863
+ c-1.2,0.7-2.5,1.2-3.8,1.5c-1.1-1.2-2.7-1.9-4.4-1.9c-3.9,0-6.8,3.6-5.9,7.4c-5-0.3-9.5-2.7-12.4-6.3c-1.6,2.7-0.8,6.3,1.9,8.1
2864
+ c-1,0-1.9-0.3-2.7-0.8c-0.1,2.8,1.9,5.4,4.8,6c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.2c-2.5,2-5.7,2.9-8.9,2.5
2865
+ c2.7,1.7,5.8,2.7,9.2,2.7c11.2,0,17.5-9.5,17.1-17.9C-12.5,8.2-11.5,7.1-10.7,5.9z"/>
2866
+ <g>
2867
+ <circle fill="#231F20" cx="62.6" cy="15.8" r="7.4"/>
2868
+ <circle fill="#231F20" cx="45.7" cy="15.8" r="7.4"/>
2869
+ </g>
2870
+ <path fill="#231F20" d="M100.6,4.2H87.1c-7.7,0-8.9,0.4-8.9,7.9V19c0,7.5,1.2,7.9,8.9,7.9h13.5c7.7,0,8.9-0.4,8.9-7.9v-6.8
2871
+ C109.6,4.7,108.3,4.2,100.6,4.2z M90.6,21.1V9.4l8.9,5.9L90.6,21.1z"/>
2872
+ <g>
2873
+ <path fill="#231F20" d="M159.8,14.6c-0.9-0.4-1.6-1.3-1.6-2.4c0-1.4,1.2-2.6,2.6-2.6c0.8,0,1.5,0.3,1.9,0.9
2874
+ c0.2-0.2,0.5-0.4,0.8-0.6c-0.7-0.8-1.6-1.3-2.7-1.3c-2,0-3.6,1.6-3.6,3.6c0,1.6,1,2.9,2.4,3.4C159.6,15.3,159.7,14.9,159.8,14.6z"
2875
+ />
2876
+ <path fill="#231F20" d="M185.9,8.7c-1.2,0-2.2,0.6-2.8,1.4c0.3,0.1,0.6,0.3,0.9,0.4c0.5-0.5,1.1-0.8,1.9-0.8c1.4,0,2.6,1.2,2.6,2.6
2877
+ c0,1.1-0.7,2.1-1.7,2.4c0.1,0.3,0.1,0.7,0.2,1c1.5-0.4,2.5-1.8,2.5-3.4C189.5,10.3,187.9,8.7,185.9,8.7z"/>
2878
+ <path fill="#231F20" d="M173.5,7.6c0,0-0.1,0-0.2,0c-0.3-0.1-0.4-0.4-0.3-0.6l2.3-7.2c0.1-0.2,0.3-0.4,0.6-0.3l6.2,1.4
2879
+ c0.3,0.1,0.4,0.3,0.4,0.6S182,2,181.8,1.9l-5.7-1.3l-2.1,6.7C173.9,7.5,173.7,7.6,173.5,7.6z"/>
2880
+ <path fill="#231F20" d="M184.4,4.9c-1.6,0-2.9-1.3-2.9-2.9c0-1.6,1.3-2.9,2.9-2.9c1.6,0,2.9,1.3,2.9,2.9
2881
+ C187.3,3.5,186,4.9,184.4,4.9z M184.4,0c-1.1,0-1.9,0.9-1.9,1.9s0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9S185.5,0,184.4,0z"/>
2882
+ <path fill="#231F20" d="M173.3,26.1c-8,0-14.4-4.3-14.4-9.6s6.5-9.6,14.4-9.6c8,0,14.4,4.3,14.4,9.6S181.2,26.1,173.3,26.1z
2883
+ M173.3,7.9c-7.4,0-13.5,3.9-13.5,8.6s6,8.6,13.5,8.6c7.4,0,13.5-3.9,13.5-8.6S180.7,7.9,173.3,7.9z"/>
2884
+ <path id="circle21826_6_" inkscape:connector-curvature="0" fill="#231F20" d="M168.4,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
2885
+ c1.2,0,2.2-1,2.2-2.2S169.7,12.4,168.4,12.4z"/>
2886
+ <path id="circle21828_6_" inkscape:connector-curvature="0" fill="#231F20" d="M178.3,12.4c-1.2,0-2.3,1-2.3,2.3s1,2.2,2.3,2.2
2887
+ s2.2-1,2.2-2.2S179.5,12.4,178.3,12.4z"/>
2888
+ <path fill="#231F20" d="M173.3,22.6c-2.4,0-4.1-0.5-5.2-1.6c-0.2-0.2-0.2-0.5,0-0.7c0.2-0.2,0.5-0.2,0.7,0c0.9,0.9,2.3,1.3,4.4,1.3
2889
+ c0.3,0,0.5,0.2,0.5,0.5C173.8,22.4,173.6,22.6,173.3,22.6z"/>
2890
+ <path fill="#231F20" d="M173.4,22.6c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c2.1,0,3.6-0.4,4.5-1.3c0.2-0.2,0.5-0.2,0.7,0
2891
+ c0.2,0.2,0.2,0.5,0,0.7C177.4,22.1,175.8,22.6,173.4,22.6z"/>
2892
+ </g>
2893
+ <path id="email-icon_10_" fill="#231F20" d="M128,13.7l-9.5-7.5v17.2L128,13.7z M148.6,4.5h-30l15,11.5L148.6,4.5z M137.8,14.6
2894
+ l-4.2,3.2l-4.2-3.2l-10.8,10.9h30.1L137.8,14.6z M139.1,13.8l9.6,9.6V6.3L139.1,13.8z"/>
2895
+ <g>
2896
+ <path fill="#231F20" d="M-70.6,14.4v3.6h6c-0.3,1.5-1.8,4.5-6,4.5c-3.6,0-6.4-3-6.4-6.6s2.8-6.6,6.4-6.6c2.1,0,3.4,0.9,4.2,1.6
2897
+ l2.8-2.7c-1.8-1.8-4.2-2.8-7-2.8c-5.8,0-10.5,4.6-10.5,10.5s4.6,10.5,10.5,10.5c6,0,10-4.2,10-10.2c0-0.7,0-1.2-0.1-1.8H-70.6z"/>
2898
+ <polyline fill="#231F20" points="-49.1,14.4 -52.1,14.4 -52.1,11.4 -55.1,11.4 -55.1,14.4 -58,14.4 -58,17.3 -55.1,17.3
2899
+ -55.1,20.3 -52.1,20.3 -52.1,17.3 -49.1,17.3 "/>
2900
+ </g>
2901
+ <path fill="#231F20" d="M22.2-15.5c-1,0-1.9,0.4-2.6,1L10.3-20c0.1-0.3,0.1-0.6,0.1-0.9c0-0.3,0-0.6-0.1-0.9l9.2-5.4
2902
+ c0.7,0.7,1.6,1.1,2.7,1.1c2.2,0,3.9-1.8,3.9-3.9S24.4-34,22.2-34s-3.9,1.8-3.9,3.9c0,0.3,0,0.6,0.1,0.9l-9.2,5.4
2903
+ c-0.7-0.7-1.6-1.1-2.7-1.1c-2.2,0-3.9,1.8-3.9,3.9S4.4-17,6.5-17c1,0,2-0.4,2.7-1.1l9.3,5.4c-0.1,0.3-0.1,0.6-0.1,0.9
2904
+ c0,2.1,1.7,3.8,3.8,3.8s3.8-1.7,3.8-3.8S24.4-15.5,22.2-15.5z"/>
2905
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M101.5,129.4c-2.4-2.4-5.6-3.7-9-3.7c-7,0-12.7,5.7-12.7,12.7
2906
+ c0,2.2,0.6,4.4,1.7,6.3l-1.8,6.6l6.7-1.8c1.8,1,3.9,1.5,6.1,1.5h0c7,0,12.7-5.7,12.7-12.7C105.2,135,103.9,131.8,101.5,129.4z
2907
+ M92.6,148.9L92.6,148.9c-1.9,0-3.7-0.5-5.4-1.5l-0.4-0.2l-4,1l1.1-3.9l-0.3-0.4c-1.1-1.7-1.6-3.6-1.6-5.6c0-5.8,4.7-10.5,10.5-10.5
2908
+ c2.8,0,5.5,1.1,7.4,3.1c2,2,3.1,4.6,3.1,7.4C103.1,144.2,98.4,148.9,92.6,148.9z M98.4,141c-0.3-0.2-1.9-0.9-2.2-1
2909
+ c-0.3-0.1-0.5-0.2-0.7,0.2c-0.2,0.3-0.8,1-1,1.2c-0.2,0.2-0.4,0.2-0.7,0.1c-0.3-0.2-1.3-0.5-2.5-1.6c-0.9-0.8-1.6-1.9-1.8-2.2
2910
+ c-0.2-0.3,0-0.5,0.1-0.6c0.1-0.1,0.3-0.4,0.5-0.6c0.2-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0-0.6c-0.1-0.2-0.7-1.7-1-2.3
2911
+ c-0.2-0.5-0.5-0.5-0.7-0.5c-0.2,0-0.4,0-0.6,0c-0.2,0-0.6,0.1-0.8,0.4c-0.3,0.3-1.1,1.1-1.1,2.6c0,1.6,1.1,3.1,1.3,3.3
2912
+ c0.2,0.2,2.2,3.5,5.4,4.8c2.7,1.1,3.2,0.8,3.8,0.8c0.6-0.1,1.9-0.8,2.1-1.5c0.3-0.7,0.3-1.4,0.2-1.5C98.9,141.3,98.7,141.2,98.4,141
2913
+ z"/>
2914
+ <path fill="#231F20" d="M5.7,5.1c0.1-0.4,0.5-0.7,0.8-0.9c1.2-0.8,2.6-1.3,4-1.2c1.2,0.1,2.1,0.7,2.3,2.1c0.2,0.9,0,1.8-0.2,2.7
2915
+ c-0.5,1.9-1,3.8-1.5,5.7c-0.1,0.4-0.1,0.7-0.1,1.1c0,0.5,0.3,0.8,0.8,0.8c0.6,0.1,1.1,0,1.6-0.2c0.9-0.2,1.7-0.6,2.5-1
2916
+ c0.1-0.1,0.2-0.2,0.2-0.3c0.2-1.2,0.4-2.3,0.6-3.5c0.2-1.2,0.4-2.3,0.6-3.5c0.1-0.8,0.3-1.5,0.4-2.3c0-0.2,0-0.5-0.1-0.8
2917
+ c-0.1-0.3,0-0.4,0.2-0.5c0.6-0.3,1.3-0.4,2-0.2c0.6,0.1,0.9,0.5,0.9,1.1c0,0.6-0.1,1.2-0.2,1.9c-0.2,1.3-0.4,2.5-0.7,3.8
2918
+ c-0.2,1.3-0.5,2.7-0.7,4c-0.2,1.3-0.5,2.7-0.7,4c-0.1,0.5-0.2,1.1-0.3,1.6c0,0.1,0,0.2,0.1,0.2c2.2,0.3,4.4,0.9,6.4,1.8
2919
+ c0.3,0.2,0.7,0.2,1.1,0.3c0.3,0.1,0.4,0.2,0.4,0.4c0,0.5-0.1,0.9-0.4,1.4c-0.5,0.7-1.3,1-2.2,0.7c-0.6-0.2-1.1-0.5-1.6-0.8
2920
+ c-1.2-0.7-2.4-1.1-3.8-1.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0-0.2,0.2c-0.2,1.2-0.6,2.3-1.1,3.3c-0.4,0.8-1,1.6-1.7,2.2
2921
+ c-0.7,0.6-1.5,0.9-2.4,1c-0.2,0-0.4,0.1-0.6,0.1c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c-0.9-0.1-1.8-0.5-2.4-1.2
2922
+ c-0.7-0.9-0.8-1.9-0.6-2.9c0.3-1.7,1.3-3,2.8-3.9c1.3-0.7,2.7-1.1,4.1-1.3c0.1,0,0.2,0,0.2-0.2c0.1-0.3,0.1-0.6,0.2-0.9
2923
+ c0.1-0.4,0.1-0.7,0.2-1.1c-0.2,0.1-0.3,0.2-0.4,0.2c-1.6,0.9-3.3,1.3-5.2,1.1c-0.9-0.1-1.6-0.5-2-1.3c-0.4-0.8-0.5-1.6-0.3-2.4
2924
+ c0.4-1.7,0.9-3.5,1.4-5.2C9.4,8.9,9.6,8,9.8,7.1c0.1-0.7-0.1-1.2-1-0.9C8.2,6.3,7.7,6.7,7.3,7.1C7.2,7.3,7,7.3,6.8,7.1
2925
+ C6.4,6.8,6.2,6.5,6,6.1C5.9,5.9,5.8,5.7,5.7,5.4C5.7,5.3,5.7,5.2,5.7,5.1z M14.7,22.2c-1.1,0.2-2,0.5-2.8,1.3
2926
+ c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.5,1,1.1,0.8c0.5-0.1,0.9-0.4,1.2-0.8c0.4-0.6,0.6-1.2,0.8-1.9C14.6,22.9,14.6,22.5,14.7,22.2z"/>
2927
+ </svg>
2928
+ ';
2929
+ }
2930
+ }
lib/utilities/SWP_Utility.php CHANGED
@@ -20,298 +20,367 @@
20
  class SWP_Utility {
21
 
22
 
23
- /**
24
- * Insantiates filterss and hooks, for admin and ajax.
25
- *
26
- * @since 3.3.0 \ 14 AUG 2018 | Created.
27
- *
28
- */
29
- public function __construct() {
30
- add_action( 'wp_ajax_swp_store_settings', array( 'SWP_Utility', 'store_settings' ) );
31
- add_filter( 'screen_options_show_screen', array( 'SWP_Utility', 'remove_screen_options' ), 10, 2 );
32
- }
33
-
34
-
35
- /**
36
- *
37
- * Fetches a key from our filtered $swp_user_options.
38
- *
39
- * @since 3.0.0 | 24 APR 2018 | Created.
40
- * @since 3.0.8 | 16 MAY 2018 | Added $options parameter.
41
- * @since 3.3.0 | 14 AUG 2018 | Added $key validation, refactored method body.
42
- * @param string $key The key associated with the option we want.
43
- *
44
- * @return mixed $value The value of the option if set, or false.
45
- *
46
- */
47
- public static function get_option( $key = '' ) {
48
- if ( !isset( $key ) || !is_string( $key ) ) :
49
- return false;
50
- endif;
51
-
52
- global $swp_user_options;
53
-
54
- if ( !is_array( $swp_user_options ) ) :
55
- return false;
56
- endif;
57
-
58
- if ( array_key_exists( $key, $swp_user_options ) ) :
59
- return $swp_user_options[$key];
60
- endif;
61
-
62
- return false;
63
- }
64
-
65
-
66
- /**
67
- * Handle the options save request inside of admin-ajax.php
68
- *
69
- * @since 2.x.x | Unknown | Created.
70
- * @since 3.0.9 | 31 MAY 2018 | Added call to wp_cache_delete to make sure settings save
71
- * @since 3.3.0 | 14 AUG 2018 | Removed deprecated code.
72
- *
73
- * @return bool Whether or not the options were updated in the database.
74
- */
75
- public static function store_settings() {
76
- if ( !check_ajax_referer( 'swp_plugin_options_save', 'security', false ) ) {
77
- wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
78
- die;
79
- }
80
-
81
- $data = wp_unslash( $_POST );
82
-
83
- if ( empty( $data['settings'] ) ) {
84
- wp_send_json_error( esc_html__( 'No settings to save.', 'social-warfare' ) );
85
- die;
86
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  $options = get_option( 'social_warfare_settings', array() );
89
- $settings = $data['settings'];
90
-
91
- // Loop and check for checkbox values, convert them to boolean.
92
- foreach ( $data['settings'] as $key => $value ) {
93
- if ( 'true' == $value ) {
94
- $settings[$key] = true;
95
- } elseif ( 'false' == $value ) {
96
- $settings[$key] = false;
97
- } else {
98
- $settings[$key] = $value;
99
- }
100
- }
101
 
102
  $new_settings = array_merge( $options, $settings );
103
 
104
- echo json_encode( update_option( 'social_warfare_settings', $new_settings ) );
105
-
106
- wp_die();
107
- }
108
-
109
-
110
- /**
111
- * Rounds a number to the appropriate thousands.
112
- *
113
- * @since 2.x.x | Unknown | Created.
114
- * @access public
115
- * @param float $number The float to be rounded.
116
- *
117
- * @return float A rounded number.
118
- *
119
- */
120
- public static function kilomega( $number = 0) {
121
- if ( empty( $number ) ) :
122
- return 0;
123
- endif;
124
-
125
-
126
- if ( $number < 1000 ) :
127
- return $number;
128
- endif;
129
-
130
- if ( $number < 1000000 ) {
131
- $suffix = 'K';
132
- $value = $number / 1000;
133
- } else {
134
- $suffix = 'M';
135
- $value = $number / 1000000;
136
- }
137
-
138
- if ( 'period' == SWP_Utility::get_option( 'decimal_separator' ) ) :
139
- $decimal_point = '.';
140
- $thousands_separator = ',';
141
- else :
142
- $decimal_point = ',';
143
- $thousands_separator = '.';
144
- endif;
145
 
146
  $decimals = SWP_Utility::get_option( 'decimals' );
147
- $display_number = number_format( $value, $decimals, $decimal_point, $thousands_separator ) . $suffix;
148
-
149
- return $display_number;
150
- }
151
-
152
-
153
- /**
154
- * Process the excerpts for descriptions.
155
- *
156
- * While similar to WordPress's own get_the_excerpt, ours prevents
157
- * infinite recursion from Social Warfare code.
158
- *
159
- * @since 1.0.0 | Created | Unknown.
160
- * @since 2.2.4 | Updated | 6 March 2017 | Added the filter to remove the script and style tags.
161
- * @access public
162
- * @param int $post_id The post ID to use when getting an exceprt.
163
- *
164
- * @return string The excerpt.
165
- *
166
- */
167
- public static function get_the_excerpt( $post_id ) {
168
- // Check if the post has an excerpt
169
- if ( has_excerpt() ) :
170
- $the_post = get_post( $post_id ); // Gets post ID
171
- $the_excerpt = $the_post->post_excerpt;
172
-
173
- // If not, let's create an excerpt
174
- else :
175
- $the_post = get_post( $post_id ); // Gets post ID
176
- $the_excerpt = $the_post->post_content; // Gets post_content to be used as a basis for the excerpt
177
- endif;
178
-
179
- $excerpt_length = 100; // Sets excerpt length by word count
180
-
181
- // Filter out any inline script or style tags as well as their content
182
- if( !empty( $the_excerpt ) ):
183
- $the_excerpt = preg_replace('/(<script[^>]*>.+?<\/script>|<style[^>]*>.+?<\/style>)/s', '', $the_excerpt);
184
- endif;
185
-
186
- $the_excerpt = strip_tags( strip_shortcodes( $the_excerpt ) ); // Strips tags and images
187
- $the_excerpt = preg_replace( '/\[[^\]]+\]/', '', $the_excerpt );
188
- $the_excerpt = str_replace( ']]>', ']]&gt;', $the_excerpt );
189
- $the_excerpt = strip_tags( $the_excerpt );
190
- $excerpt_length = apply_filters( 'excerpt_length', 100 );
191
- $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[...]' );
192
- $words = preg_split( "/[\n\r\t ]+/", $the_excerpt, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY );
193
-
194
- if ( count( $words ) > $excerpt_length ) :
195
- array_pop( $words );
196
- // array_push($words, '…');
197
- $the_excerpt = implode( ' ', $words );
198
- endif;
199
-
200
- $the_excerpt = preg_replace( "/\r|\n/", '', $the_excerpt );
201
-
202
- return $the_excerpt;
203
- }
204
-
205
-
206
- /**
207
- * Checks to see if a debugging query paramter has been set.
208
- *
209
- * @since 2.1.0
210
- * @since 3.3.0 | 14 AUG 2018 | Refactored to a one-liner.
211
- * @access public
212
- * @param string $type The query paramter to check for.
213
- *
214
- * @return bool True if the specified key is set for debugging, else false.
215
- *
216
- */
217
- public static function debug( $key = '' ) {
218
- return !empty( $_GET['swp_debug'] ) && ( strtolower( $_GET['swp_debug'] ) == strtolower( $key ) );
219
- }
220
-
221
- /**
222
- * Converts curly quotes to straight quotes.
223
- *
224
- * @since 1.4.0
225
- * @param string $content The text to be filtered.
226
- *
227
- * @return string $content The filtered text.
228
- *
229
- */
230
- public static function convert_smart_quotes( $content ) {
231
- $content = str_replace( '"', "'", $content );
232
- $content = str_replace( '&#8220;', "'", $content );
233
- $content = str_replace( '&#8221;', "'", $content );
234
- $content = str_replace( '&#8216;', "'", $content );
235
- $content = str_replace( '&#8217;', "'", $content );
236
- return $content;
237
- }
238
-
239
-
240
- /**
241
- * Returns post types supported by Social Warfare. Includes Custom Post Types.
242
- *
243
- * @since 2.x.x | Unknown | Created.
244
- * @return array The names of registered post types.
245
- *
246
- */
247
- public static function get_post_types() {
248
  $types = get_post_types( array( 'public' => true, '_builtin' => false ), 'names' );
249
 
250
- $types = array_merge( array( 'home', 'archive_categories', 'post', 'page' ), $types );
251
-
252
- return apply_filters( 'swp_post_types', $types );
253
- }
254
-
255
-
256
- /**
257
- * A function to remove the screen options tab from our admin page
258
- *
259
- * @since 2.2.1 | Unknown | Created.
260
- * @param bool Whether to show Screen Options tab. Default true.
261
- * @param WP_Screen $wp_screen Current WP_Screen instance.
262
- *
263
- * @return boolean $display or false.
264
- *
265
- */
266
- public static function remove_screen_options( $show_screen, $wp_screen ){
267
- $blacklist = array('admin.php?page=social-warfare');
268
-
269
- if ( in_array( $GLOBALS['pagenow'], $blacklist ) ) {
270
- $wp_screen->render_screen_layout();
271
- $wp_screen->render_per_page_options();
272
- return false;
273
- }
274
-
275
- return $show_screen;
276
- }
277
-
278
-
279
- /**
280
- * Returns the URL of current website or network.
281
- *
282
- * @since 2.3.3 | 25 SEP 2017 | Created.
283
- *
284
- * @return string The URL of the site.
285
- *
286
- */
287
- public static function get_site_url() {
288
- if( true == is_multisite() ) {
289
- return network_site_url();
290
- } else {
291
- return get_site_url();
292
- }
293
- }
294
-
295
- /**
296
- * Updates an option in the Social Warfare settings.
297
- *
298
- * @since 3.3.2 | 12 SEP 2018 | Created.
299
- *
300
- * @param string $key The key under which the option needs to be stored.
301
- * @param mixed $value The value at the key.
302
- * @return bool True if the option was updated, else false.
303
- *
304
- */
305
- public static function update_option( $key, $value ) {
306
- if ( empty( $key ) ) {
307
- return false;
308
- }
309
-
310
- $options = get_option( 'social_warfare_settings', array() );
311
- $options[$key] = $value;
312
-
313
- return update_option( 'social_warfare_settings', $options );
314
- }
315
 
316
  public static function delete_option( $key ) {
317
  if ( empty( $key ) ) {
@@ -325,40 +394,93 @@ class SWP_Utility {
325
  }
326
 
327
  /**
328
- * Check the version range between core and addons.
329
- *
330
- * The idea here is that we can only maintain backwards compatibility to a
331
- * reasonable, but limited, extent. As such, we will check if the version
332
- * of core is within 6 version of pro. This will allow us to depracate and
333
- * remove some really old backwards-compatibility workarounds that we've put
334
- * in place.
335
- *
336
- * We want to be able to input two version (core and pro) and have it return
337
- * a string/integer indicating how many versions they are different from one
338
- * another. If the answer is greater than -6 and less than 6, we can fire up
339
- * the pro addon.
340
- *
341
- * @param string $core_version The verison of Core currently installed.
342
- * @param string $addon_version The version of the addon currently installed.
343
- * @return bool True if the versions are compatible, else false.
344
- *
345
- */
346
- public static function check_version_range( $core_version, $addon_version ) {
347
- $core_versions = explode( '.', $core_version );
348
- $addon_versions = explode( '.', $addon_version );
349
-
350
- $version_difference = absint( $core_versions[1] - $addon_versions[1] );
351
-
352
- //* Force plugin users to be on the same major version.
353
- if ( $core_versions[0] != $addon_verisons[0] ) {
354
- return false;
355
- }
356
-
357
- //* Require plugin users to be within nearby secondary versions.
358
- if ( $version_difference < 5 ) {
359
- return true;
360
- }
361
-
362
- return false;
363
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
  }
20
  class SWP_Utility {
21
 
22
 
23
+ /**
24
+ * Insantiates filterss and hooks, for admin and ajax.
25
+ *
26
+ * @since 3.3.0 \ 14 AUG 2018 | Created.
27
+ *
28
+ */
29
+ public function __construct() {
30
+ add_action( 'wp_ajax_swp_store_settings', array( 'SWP_Utility', 'store_settings' ) );
31
+ add_filter( 'screen_options_show_screen', array( 'SWP_Utility', 'remove_screen_options' ), 10, 2 );
32
+ add_action( 'wp_ajax_swp_reset_post_meta', array ( 'SWP_Utility' , 'reset_post_meta' ) );
33
+ }
34
+
35
+
36
+ /**
37
+ *
38
+ * Fetches a key from our filtered $swp_user_options.
39
+ *
40
+ * @since 3.0.0 | 24 APR 2018 | Created.
41
+ * @since 3.0.8 | 16 MAY 2018 | Added $options parameter.
42
+ * @since 3.3.0 | 14 AUG 2018 | Added $key validation, refactored method body.
43
+ * @param string $key The key associated with the option we want.
44
+ *
45
+ * @return mixed $value The value of the option if set, or false.
46
+ *
47
+ */
48
+ public static function get_option( $key = '' ) {
49
+ if ( !isset( $key ) || !is_string( $key ) ) :
50
+ return false;
51
+ endif;
52
+
53
+ global $swp_user_options;
54
+
55
+ if ( !is_array( $swp_user_options ) ) :
56
+ return false;
57
+ endif;
58
+
59
+ if ( array_key_exists( $key, $swp_user_options ) ) :
60
+ return $swp_user_options[$key];
61
+ endif;
62
+
63
+ return false;
64
+ }
65
+
66
+ /**
67
+ *
68
+ * Fetches a meta value.
69
+ *
70
+ * @since 3.5.0 | 19 DEC 2018 | Created.
71
+ * @param int $id The post id to fetch meta from.
72
+ * @param string $key The key associated with the option we want.
73
+ *
74
+ * @return mixed $value The value of the option if set, or false.
75
+ *
76
+ * * @TODO This needs to go through SWP meta filters.
77
+ */
78
+ public static function get_meta( $id, $key ) {
79
+ $value = get_post_meta( $id, $key, true );
80
+ /*
81
+ WordPress offers functions that might help us filter meta values.
82
+ Offline right now but I think they can work something like this
83
+ 1. register_post_meta()
84
+ - In the addon, we register the meta key`
85
+ - In SWP_Utility::get_meta, check if the key is registered.
86
+ - If no, imeediately return false
87
+ - the last paramter is a meta validation callback. We can let the callback check to see if the addon is registered.
88
+
89
+ 2. meta_key_exists()
90
+ - (maybe?) pairs ith register_post_meta, and returns false if not registered.
91
+ */
92
+
93
+ // Sometimes a boolean value is stored in the meta as a string.
94
+ if ( 'false' === $value ) {
95
+ return false;
96
+ }
97
+
98
+ if ( 'true' === $value ) {
99
+ return true;
100
+ }
101
+
102
+ return $value;
103
+ }
104
+
105
+ /**
106
+ * Fetches a meta key we know to be an array.
107
+ * @param [type] $id [description]
108
+ * @param [type] $key [description]
109
+ * @return [type] [description]
110
+ */
111
+ public static function get_meta_array( $id, $key ) {
112
+ $value = get_post_meta( $id, $key, true );
113
+
114
+ // Sometimes a boolean value ideas stored in the meta as a string.
115
+ if ( 'false' === $value ) {
116
+ return false;
117
+ }
118
+
119
+ if ( 'true' === $value ) {
120
+ return true;
121
+ }
122
+
123
+ //* I think everything fetched form meta is returned as a string.
124
+ if (is_string($value)) {
125
+ $value = json_decode($value);
126
+ }
127
+
128
+ //* Do the same kind of checks/filtering as above.
129
+ return is_array( $value ) ? $value : false;
130
+ }
131
+
132
+
133
+
134
+
135
+ /**
136
+ * Handle the options save request inside of admin-ajax.php
137
+ *
138
+ * @since 2.x.x | Unknown | Created.
139
+ * @since 3.0.9 | 31 MAY 2018 | Added call to wp_cache_delete to make sure settings save
140
+ * @since 3.3.0 | 14 AUG 2018 | Removed deprecated code.
141
+ *
142
+ * @return bool Whether or not the options were updated in the database.
143
+ */
144
+ public static function store_settings() {
145
+ if ( !check_ajax_referer( 'swp_plugin_options_save', 'security', false ) ) {
146
+ wp_send_json_error( esc_html__( 'Security failed.', 'social-warfare' ) );
147
+ die;
148
+ }
149
+
150
+ $data = wp_unslash( $_POST );
151
+
152
+ if ( empty( $data['settings'] ) ) {
153
+ wp_send_json_error( esc_html__( 'No settings to save.', 'social-warfare' ) );
154
+ die;
155
+ }
156
 
157
  $options = get_option( 'social_warfare_settings', array() );
158
+ $settings = $data['settings'];
159
+
160
+ // Loop and check for checkbox values, convert them to boolean.
161
+ foreach ( $data['settings'] as $key => $value ) {
162
+ if ( 'true' == $value ) {
163
+ $settings[$key] = true;
164
+ } elseif ( 'false' == $value ) {
165
+ $settings[$key] = false;
166
+ } else {
167
+ $settings[$key] = $value;
168
+ }
169
+ }
170
 
171
  $new_settings = array_merge( $options, $settings );
172
 
173
+ echo json_encode( update_option( 'social_warfare_settings', $new_settings ) );
174
+
175
+ wp_die();
176
+ }
177
+
178
+
179
+ /**
180
+ * Rounds a number to the appropriate thousands.
181
+ *
182
+ * @since 2.x.x | Unknown | Created.
183
+ * @access public
184
+ * @param float $number The float to be rounded.
185
+ *
186
+ * @return float A rounded number.
187
+ *
188
+ */
189
+ public static function kilomega( $number = 0) {
190
+ if ( empty( $number ) ) :
191
+ return 0;
192
+ endif;
193
+
194
+
195
+ if ( $number < 1000 ) :
196
+ return $number;
197
+ endif;
198
+
199
+ if ( $number < 1000000 ) {
200
+ $suffix = 'K';
201
+ $value = $number / 1000;
202
+ } else {
203
+ $suffix = 'M';
204
+ $value = $number / 1000000;
205
+ }
206
+
207
+ if ( 'period' == SWP_Utility::get_option( 'decimal_separator' ) ) :
208
+ $decimal_point = '.';
209
+ $thousands_separator = ',';
210
+ else :
211
+ $decimal_point = ',';
212
+ $thousands_separator = '.';
213
+ endif;
214
 
215
  $decimals = SWP_Utility::get_option( 'decimals' );
216
+ $display_number = number_format( $value, $decimals, $decimal_point, $thousands_separator ) . $suffix;
217
+
218
+ return $display_number;
219
+ }
220
+
221
+
222
+ /**
223
+ * Process the excerpts for descriptions.
224
+ *
225
+ * While similar to WordPress's own get_the_excerpt, ours prevents
226
+ * infinite recursion from Social Warfare code.
227
+ *
228
+ * @since 1.0.0 | Created | Unknown.
229
+ * @since 2.2.4 | Updated | 6 March 2017 | Added the filter to remove the script and style tags.
230
+ * @access public
231
+ * @param int $post_id The post ID to use when getting an exceprt.
232
+ *
233
+ * @return string The excerpt.
234
+ *
235
+ */
236
+ public static function get_the_excerpt( $post_id ) {
237
+ // Check if the post has an excerpt
238
+ if ( has_excerpt() ) :
239
+ $the_post = get_post( $post_id ); // Gets post ID
240
+ $the_excerpt = $the_post->post_excerpt;
241
+
242
+ // If not, let's create an excerpt
243
+ else :
244
+ $the_post = get_post( $post_id ); // Gets post ID
245
+ $the_excerpt = $the_post->post_content; // Gets post_content to be used as a basis for the excerpt
246
+ endif;
247
+
248
+ $excerpt_length = 100; // Sets excerpt length by word count
249
+
250
+ // Filter out any inline script or style tags as well as their content
251
+ if( !empty( $the_excerpt ) ):
252
+ $the_excerpt = preg_replace('/(<script[^>]*>.+?<\/script>|<style[^>]*>.+?<\/style>)/s', '', $the_excerpt);
253
+ endif;
254
+
255
+ $the_excerpt = strip_tags( strip_shortcodes( $the_excerpt ) ); // Strips tags and images
256
+ $the_excerpt = preg_replace( '/\[[^\]]+\]/', '', $the_excerpt );
257
+ $the_excerpt = str_replace( ']]>', ']]&gt;', $the_excerpt );
258
+ $the_excerpt = strip_tags( $the_excerpt );
259
+ $excerpt_length = apply_filters( 'excerpt_length', 100 );
260
+ $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[...]' );
261
+ $words = preg_split( "/[\n\r\t ]+/", $the_excerpt, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY );
262
+
263
+ if ( count( $words ) > $excerpt_length ) :
264
+ array_pop( $words );
265
+ // array_push($words, '…');
266
+ $the_excerpt = implode( ' ', $words );
267
+ endif;
268
+
269
+ $the_excerpt = preg_replace( "/\r|\n/", '', $the_excerpt );
270
+
271
+ return $the_excerpt;
272
+ }
273
+
274
+
275
+ /**
276
+ * Checks to see if a debugging query paramter has been set.
277
+ *
278
+ * @since 2.1.0
279
+ * @since 3.3.0 | 14 AUG 2018 | Refactored to a one-liner.
280
+ * @access public
281
+ * @param string $type The query paramter to check for.
282
+ *
283
+ * @return bool True if the specified key is set for debugging, else false.
284
+ *
285
+ */
286
+ public static function debug( $key = '' ) {
287
+ return !empty( $_GET['swp_debug'] ) && ( strtolower( $_GET['swp_debug'] ) == strtolower( $key ) );
288
+ }
289
+
290
+ /**
291
+ * Converts curly quotes to straight quotes.
292
+ *
293
+ * @since 1.4.0
294
+ * @param string $content The text to be filtered.
295
+ *
296
+ * @return string $content The filtered text.
297
+ *
298
+ */
299
+ public static function convert_smart_quotes( $content ) {
300
+ $content = str_replace( '"', "'", $content );
301
+ $content = str_replace( '&#8220;', "'", $content );
302
+ $content = str_replace( '&#8221;', "'", $content );
303
+ $content = str_replace( '&#8216;', "'", $content );
304
+ $content = str_replace( '&#8217;', "'", $content );
305
+ return $content;
306
+ }
307
+
308
+
309
+ /**
310
+ * Returns post types supported by Social Warfare. Includes Custom Post Types.
311
+ *
312
+ * @since 2.x.x | Unknown | Created.
313
+ * @return array The names of registered post types.
314
+ *
315
+ */
316
+ public static function get_post_types() {
317
  $types = get_post_types( array( 'public' => true, '_builtin' => false ), 'names' );
318
 
319
+ $types = array_merge( array( 'home', 'archive_categories', 'post', 'page' ), $types );
320
+
321
+ return apply_filters( 'swp_post_types', $types );
322
+ }
323
+
324
+
325
+ /**
326
+ * A function to remove the screen options tab from our admin page
327
+ *
328
+ * @since 2.2.1 | Unknown | Created.
329
+ * @param bool Whether to show Screen Options tab. Default true.
330
+ * @param WP_Screen $wp_screen Current WP_Screen instance.
331
+ *
332
+ * @return boolean $display or false.
333
+ *
334
+ */
335
+ public static function remove_screen_options( $show_screen, $wp_screen ){
336
+ $blacklist = array('admin.php?page=social-warfare');
337
+
338
+ if ( in_array( $GLOBALS['pagenow'], $blacklist ) ) {
339
+ $wp_screen->render_screen_layout();
340
+ $wp_screen->render_per_page_options();
341
+ return false;
342
+ }
343
+
344
+ return $show_screen;
345
+ }
346
+
347
+
348
+ /**
349
+ * Returns the URL of current website or network.
350
+ *
351
+ * @since 2.3.3 | 25 SEP 2017 | Created.
352
+ *
353
+ * @return string The URL of the site.
354
+ *
355
+ */
356
+ public static function get_site_url() {
357
+ if( true == is_multisite() ) {
358
+ return network_site_url();
359
+ } else {
360
+ return get_site_url();
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Updates an option in the Social Warfare settings.
366
+ *
367
+ * @since 3.3.2 | 12 SEP 2018 | Created.
368
+ *
369
+ * @param string $key The key under which the option needs to be stored.
370
+ * @param mixed $value The value at the key.
371
+ * @return bool True if the option was updated, else false.
372
+ *
373
+ */
374
+ public static function update_option( $key, $value ) {
375
+ if ( empty( $key ) ) {
376
+ return false;
377
+ }
378
+
379
+ $options = get_option( 'social_warfare_settings', array() );
380
+ $options[$key] = $value;
381
+
382
+ return update_option( 'social_warfare_settings', $options );
383
+ }
384
 
385
  public static function delete_option( $key ) {
386
  if ( empty( $key ) ) {
394
  }
395
 
396
  /**
397
+ * Check the version range between core and addons.
398
+ *
399
+ * The idea here is that we can only maintain backwards compatibility to a
400
+ * reasonable, but limited, extent. As such, we will check if the version
401
+ * of core is within 6 version of pro. This will allow us to depracate and
402
+ * remove some really old backwards-compatibility workarounds that we've put
403
+ * in place.
404
+ *
405
+ * We want to be able to input two version (core and pro) and have it return
406
+ * a string/integer indicating how many versions they are different from one
407
+ * another. If the answer is greater than -6 and less than 6, we can fire up
408
+ * the pro addon.
409
+ *
410
+ * @param string $core_version The verison of Core currently installed.
411
+ * @param string $addon_version The version of the addon currently installed.
412
+ * @return bool True if the versions are compatible, else false.
413
+ *
414
+ */
415
+ public static function check_version_range( $core_version, $addon_version ) {
416
+ $core_versions = explode( '.', $core_version );
417
+ $addon_versions = explode( '.', $addon_version );
418
+
419
+ $version_difference = absint( $core_versions[1] - $addon_versions[1] );
420
+
421
+ //* Force plugin users to be on the same major version.
422
+ if ( $core_versions[0] != $addon_verisons[0] ) {
423
+ return false;
424
+ }
425
+
426
+ //* Require plugin users to be within nearby secondary versions.
427
+ if ( $version_difference < 5 ) {
428
+ return true;
429
+ }
430
+
431
+ return false;
432
+ }
433
+
434
+ /**
435
+ * Immediately redirect to the Social Warfare settings page.
436
+ *
437
+ * @since 3.5.0 | 12 FEB 2019 | Created.
438
+ * @param string $params The pre-formatted string of query args.
439
+ * @param array $params And asssociative array to format as query args.
440
+ * @return exit End all program exectution and return to SW.
441
+ *
442
+ */
443
+ public static function settings_page_redirect( $params = '' ) {
444
+ $destination = admin_url('?page=social-warfare');
445
+
446
+ if ( is_string($params) && 0 == strpos( $params, '&' ) ) {
447
+ $destination .= $params;
448
+ }
449
+
450
+ if ( is_array($params) ) {
451
+ foreach($params as $key => $value) {
452
+ $destination = add_query_arg($key, $value, $destination);
453
+ }
454
+ }
455
+
456
+ return $destination;
457
+ }
458
+
459
+ /**
460
+ * Ajax callback to delete all post meta for a post.
461
+ *
462
+ * @since 3.5.0 | 14 FEB 2019 | Created.
463
+ * @return bool True iff reset, else false.
464
+ *
465
+ */
466
+ public static function reset_post_meta() {
467
+ $post_id = $_POST['post_id'];
468
+ if ( empty( $post_id ) ) {
469
+ wp_die(0);
470
+ }
471
+
472
+ $all_meta = get_post_meta( $post_id );
473
+
474
+ foreach ( $all_meta as $meta_key => $value ) {
475
+ // Confirm this is a social warfare meta key.
476
+ if ( ( strpos( $meta_key, 'swp_' ) === 0 ||
477
+ ( strpos( $meta_key, '_shares' ) > 0 ) &&
478
+ strpos( $meta_key, '_') === 0 ) ) {
479
+ //* Everything comes in as an array, pull out the first value.
480
+ delete_post_meta( $post_id, $meta_key );
481
+ }
482
+ }
483
+
484
+ wp_die(1);
485
+ }
486
  }
lib/widgets/SWP_Popular_Posts_Widget.php CHANGED
@@ -18,41 +18,41 @@
18
  class SWP_Popular_Posts_Widget extends WP_Widget {
19
 
20
  /**
21
- * Class constructor.
22
- *
23
- * This function really doesn't do much except call the constructor from the
24
- * parent class that's built into WordPress core.
25
- *
26
- * @since 1.0.0 | 01 JAN 2018 | Created
27
- * @param void
28
- * @return void
29
- * @access public
30
- *
31
- */
32
  function __construct() {
33
  parent::__construct( false, $name = 'Social Warfare: Popular Posts' );
34
  }
35
 
36
 
37
- /**
38
- * Sets commonly applied attributes.
39
- *
40
- * @since 3.0.0 | 08 Feb 2018 | Created
41
- * @param string $name The name to be called.
42
- * @param string $class The CSS class to be applied.
43
- * @param string $value The default value for the element.
44
- * @return string The string filled with attribute/value pairs.
45
- *
46
- */
47
- private function set_attributes( $name, $class, $value) {
48
- $attributes = " id=\"{$this->get_field_id($name)}\" class=\"{$class}\" name=\"{$this->get_field_name($name)}\" data-swp-name=\"{$name}\" ";
49
-
50
- if ( isset( $value) ) {
51
- $attributes .= " value=\"{$value}\" ";
52
- }
53
-
54
- return $attributes;
55
- }
56
 
57
 
58
  /**
@@ -67,37 +67,37 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
67
  */
68
  function form( $instance ) {
69
 
70
- $defaults = array(
71
- 'title' => "Popular Posts",
72
- 'count' => "10",
73
- 'timeframe' => "0",
74
- 'post_type' => "post",
75
- 'network' => "total_shares",
76
- 'showCount' => "true",
77
- 'countLabel' => "Total Shares",
78
- 'style' => "style_01",
79
- 'thumbnails' => "true",
80
- 'thumb_size' => "100",
81
- 'thumb_width' => "thumb_size",
82
- 'thumb_height' => "thumb_size",
83
- 'font_size' => "100",
84
- 'custom_bg' => "#ffffff",
85
- 'custom_link' => "#000000"
86
- );
87
-
88
-
89
- /**
90
- * If the user set their value for $var, set it to that. Otherwise set
91
- * it to the default display value.
92
- *
93
- */
94
- foreach($defaults as $var => $display):
95
- if (isset ($instance[$var])) {
96
- $$var = esc_attr ($instance[$var]);
97
- } else {
98
- $$var = $display;
99
- }
100
- endforeach;
101
 
102
  // Fetch the Social Warfare Options
103
  global $swp_user_options;
@@ -114,14 +114,14 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
114
  // The Widget Title Field
115
  $form .= '<p class="title">';
116
  $form .= '<label for="' . $this->get_field_id( 'title' ) . '">Widget Title</label>';
117
- $form .= "<input type=\"text\" {$this->set_attributes("title", "widefat", $title)} />";
118
  $form .= '</p>';
119
 
120
 
121
  // Number of Posts to Display Field
122
  $form .= '<p class="count">';
123
  $form .= '<label for="' . $this->get_field_id( 'count' ) . '">How many posts would you like to display?</label>';
124
- $form .= "<input type=\"text\" {$this->set_attributes("count", "widefat", $count)} />";
125
  $form .= '</p>';
126
 
127
 
@@ -131,39 +131,39 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
131
  $form .= "<input type=\"number\" {$this->set_attributes("timeframe", "widefat", $timeframe)} min=\"0\" />";
132
  $form .= '</p>';
133
 
134
- // Get the public post Types
135
- $post_types = SWP_Utility::get_post_types();
136
 
137
- if( !empty( $post_types ) ):
138
 
139
- // Display the share count toggle field
140
- $form .= '<p class="post_type">';
141
- $form .= '<label for="' . $this->get_field_id( 'post_type' ) . '">What post type would you like to display?</label>';
142
- $form .= "<select {$this->set_attributes( 'post_type', 'widefat', null )}>";
143
 
144
- // Loop through the Custom Post Type Options
145
- foreach($post_types as $this_post_type):
146
- $form .= '<option value="' . $this_post_type . '" ' . selected($this_post_type, $post_type, false) . '>' . ucfirst( $this_post_type ) . '</option>';
147
- endforeach;
148
 
149
- $form .= '</select>';
150
- $form .= '</p>';
151
 
152
  endif;
153
 
154
  // Which networks to use as the basis field
155
  $form .= '<p class="network">';
156
  $form .= '<label for="' . $this->get_field_id( 'network' ) . '">Which network would you like to base your posts\' popularity on?</label>';
157
- $form .= "<select {$this->set_attributes('network', 'widefat', null)}>";
158
- $form .= "<option value=\"total_shares\" {selected($network, 'total_shares', false)}>All Networks</option>";
159
 
160
  foreach( $availableNetworks as $key => $value ) :
161
 
162
- $opt = $key . '_shares';
163
- $selected = selected($network, $opt, false);
164
- $net = ucfirst($value);
165
 
166
- $form .= "<option value=\"$opt\" $selected>$net</option>";
167
 
168
  endforeach;
169
 
@@ -173,7 +173,7 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
173
  // Display the share count toggle field
174
  $form .= '<p class="showCount">';
175
  $form .= '<label for="' . $this->get_field_id( 'showCount' ) . '">Would you like to show the count?</label>';
176
- $form .= "<select {$this->set_attributes( 'showCount', 'widefat', null )}>";
177
  $form .= '<option value="true" ' . selected($showCount, 'true', false) . '>Yes</option>';
178
  $form .= '<option value="false" ' . selected($showCount, 'false', false) . '>No</option>';
179
  $form .= '</select>';
@@ -183,14 +183,14 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
183
  // Count Label Field
184
  $form .= '<p ' . ( $showCount != true ? 'style="display:none;"' : '' ) . ' data-dep="showCount" data-dep_val=\'' . json_encode( array(true) ) . '\' class="countLabel">';
185
  $form .= '<label for="' . $this->get_field_id( 'countLabel' ) . '">Count Number Label</label>';
186
- $form .= "<input type=\"text\" {$this->set_attributes( 'countLabel', 'widefat', $countLabel)} />";
187
  $form .= '</p>';
188
 
189
 
190
  // Post thumbnails toggle field
191
  $form .= '<p class="thumbnails">';
192
  $form .= '<label for="' . $this->get_field_id( 'thumbnails' ) . '">Would you like to display thumbnails?</label>';
193
- $form .= "<select {$this->set_attributes( 'thumbnails', 'widefat', null)} >";
194
  $form .= '<option value="true" ' . selected($thumbnails, 'true', false) . '>Yes</option>';
195
  $form .= '<option value="false" ' . selected($thumbnails, 'false', false) . '>No</option>';
196
  $form .= '</select>';
@@ -200,13 +200,13 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
200
  // Thumbnails size field
201
  $form .= '<p ' . ( $thumbnails != true ? 'style="display:none;"' : '' ) . ' data-dep="thumbnails" data-dep_val=\'' . json_encode( array(true) ) . '\' class="thumb_size">';
202
  $form .= '<label for="' . $this->get_field_id( 'thumb_size' ) . '">What size would you like your thumbnails?</label>';
203
- $form .= "<select {$this->set_attributes( 'thumb_size', 'widefat', null )} >";
204
 
205
- for ($i = 5; $i < 16; $i++) {
206
- $val = $i * 10;
207
- $selected = selected($thumb_size, $val, false);
208
- $form .= "<option value=\"$val\" $selected>${val}px</option>";
209
- }
210
 
211
  $form .= '<option value="custom" ' . selected($thumb_size, 'custom', false) . '>Custom</option>';
212
  $form .= '</select>';
@@ -217,59 +217,59 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
217
  $form .= '<p ' . ( $thumb_size != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="thumb_size" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_thumb_size">';
218
  $form .= '<label for="' . $this->get_field_id( 'thumb_width' ) . '">Thumbnail width</label>';
219
  $form .= "<input type=\"number\" {$this->set_attributes( 'thumb_width', 'widefat', $thumb_width)} />";
220
- $form .= '</p>';
221
 
222
  $form .= '<p ' . ( $thumb_size != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="thumb_size" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_thumb_size">';
223
  $form .= '<label for="' . $this->get_field_id( 'thumb_height' ) . '">Thumbnail height</label>';
224
- $form .= "<input type=\"number\" {$this->set_attributes( 'thumb_height', 'widefat', $thumb_height)} />";
225
  $form .= '</p>';
226
 
227
 
228
  // Font size field
229
  $form .= '<p class="font_size">';
230
  $form .= '<label for="' . $this->get_field_id( 'font_size' ) . '">What size would you like the font?</label>';
231
- $form .= "<select {$this->set_attributes( 'font_size', 'widefat', null )}>";
232
 
233
- for ($i = 5; $i < 16; $i++) {
234
- $val = $i * 10;
235
- $selected = selected($font_size, $val, false);
236
- $form .= "<option value=\"$val\" $selected>${val}%</option>";
237
- }
238
 
239
  $form .= '</select>';
240
  $form .= '</p>';
241
 
242
 
243
  // Color Scheme Field
244
- $ctt_styles = array(
245
- "Vanilla",
246
- "Inspired by Twitter",
247
- "Inspired by Facebook",
248
- "Inspired by Google Plus",
249
- "Don't Stop Believin'",
250
- "Thunderstruck",
251
- "Livin' On A Prayer"
252
- );
253
 
254
  $form .= '<p class="style">';
255
  $form .= '<label for="' . $this->get_field_id( 'style' ) . '">Which color scheme would you like to use?</label>';
256
- $form .= "<select {$this->set_attributes( 'style', 'widefat', null )}>";
257
 
258
- foreach($ctt_styles as $idx => $ctt_style):
259
 
260
- // *Accounting for 0 offset
261
- $idx += 1;
262
 
263
- if ($idx < 10) :
264
- $val = "style_0{$idx}";
265
- else:
266
- $val = "style_{$idx}";
267
- endif;
268
 
269
- $selected = selected($val, $style, false);
270
- $form .= "<option value=\"$val\" $selected>${ctt_style}</option>";
271
 
272
- endforeach;
273
 
274
  $form .= '<option value="custom" ' . selected($style, 'custom', false) . '>Custom</option>';
275
  $form .= '</select>';
@@ -278,13 +278,13 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
278
  // Custom Background Color Field
279
  $form .= '<p ' . ( $style != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="style" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_bg">';
280
  $form .= '<label for="' . $this->get_field_id( 'custom_bg' ) . '">Custom Background Color</label>';
281
- $form .= "<input type=\"text\" {$this->set_attributes( 'custom_bg', 'widefat', $custom_bg )} />";
282
  $form .= '</p>';
283
 
284
  // Custom Link Color Field
285
  $form .= '<p ' . ( $style != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="style" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_link">';
286
  $form .= '<label for="' . $this->get_field_id( 'custom_link' ) . '">Custom Link Color</label>';
287
- $form .= "<input type=\"text\" {$this->set_attributes( 'custom_link', 'widefat', $custom_link )} />";
288
  $form .= '</p>';
289
 
290
  // Close the Div
@@ -296,16 +296,16 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
296
  }
297
 
298
 
299
- /**
300
- * Update widget form values.
301
- *
302
- * @since 1.0.0
303
- * @access public
304
- * @param array $new_instance Updated values as input by the user in WP_Widget::form()
305
- * @param array $old_instance Previously set values.
306
- * @return array Sanitized array of final values.
307
- *
308
- */
309
  function update( $new_instance, $old_instance ) {
310
  $instance = $old_instance;
311
 
@@ -330,18 +330,18 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
330
  }
331
 
332
 
333
- /**
334
- * Echoes the widget content.
335
- *
336
- * This sub-class over-rides this function from the parent class to generate the widget code.
337
- *
338
- * @since 1.0.0
339
- * @since 3.0.0 | 09 FEB 2018 | Refactored and added the $args array output
340
- * @access public
341
- * @param array $args Display arguments including 'before_title', 'after_title', 'before_widget', and 'after_widget'.
342
- * @param array $instance The settings for the particular instance of the widget.
343
- *
344
- */
345
  function widget( $args, $instance ) {
346
  extract( $args );
347
 
@@ -413,10 +413,10 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
413
  * BUILD OUT THE WIDGET
414
  */
415
 
416
- // Output the "Before Widget" content
417
- if( isset( $args['before_widget'] ) ) :
418
- echo $args['before_widget'];
419
- endif;
420
 
421
  // Begin output of the widget html
422
  echo '<div class="widget-text swp_widget_box" style="' . $styles[ $style ]['wrapper'] . '">';
@@ -424,53 +424,37 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
424
  // Check if title is set
425
  if ( $title ) :
426
 
427
- // Output the "Before Title" content
428
- if( isset( $args['before_title'] ) ) :
429
- echo $args['before_title'];
430
- endif;
431
 
432
  echo '<span class="widgettitle widget-title swp_popular_posts_title" style="' . $styles[ $style ]['links'] . '">' . $title . '</span>';
433
 
434
- // Output the "After Title" content
435
- if( isset( $args['after_title'] ) ) :
436
- echo $args['after_title'];
437
- endif;
438
  endif;
439
 
440
- // If a custom timeframe is not being used....
441
- if ( $timeframe == 0 ) :
442
-
443
- // Create the arguments for a query without a timeframe
444
- $swp_args = array(
445
- 'posts_per_page' => $count,
446
- 'post_type' => $post_type,
447
- 'meta_key' => '_' . $network,
448
- 'orderby' => 'meta_value_num',
449
- 'order' => 'DESC',
450
- 'update_post_meta_cache' => false,
451
- 'cache_results' => false,
452
- 'ignore_sticky_posts' => 1
453
- );
454
-
455
- // If a custom timeframe is being used....
456
- else :
457
-
458
- // Create the arguments for a query with a timeframe
459
- $swp_args = array(
460
- 'posts_per_page' => $count,
461
- 'post_type' => $post_type,
462
- 'meta_key' => '_' . $network,
463
- 'orderby' => 'meta_value_num',
464
- 'order' => 'DESC',
465
- 'update_post_meta_cache' => false,
466
- 'cache_results' => false,
467
- 'ignore_sticky_posts' => 1,
468
- 'date_query' => array(
469
  'column' => 'post_date',
470
  'after' => '- ' . $timeframe . ' days',
471
- ),
472
- );
473
- endif;
474
 
475
  // Reset the main query
476
  wp_reset_postdata();
@@ -503,8 +487,8 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
503
  $thumbnail_html = '<a href="' . get_the_permalink() . '">';
504
 
505
  if ($thumb_size === 'custom') :
506
- $thumb_width = preg_replace("/[^0-9]/", "", $thumb_width);
507
- $thumb_height = preg_replace("/[^0-9]/", "", $thumb_height);
508
 
509
  $thumbnail_html .= '<img style="width:' . $thumb_width . 'px;height:' . $thumb_height . 'px;" class="swp_pop_thumb" src="' . $thumbnail_url[0] . '" title="' . str_replace('"','\'',get_the_title()) . '" alt="' . str_replace('"','\'',get_the_title()) . '" nopin="nopin" />';
510
  else:
@@ -535,9 +519,9 @@ class SWP_Popular_Posts_Widget extends WP_Widget {
535
  wp_reset_postdata();
536
  echo '</div>';
537
 
538
- // Output the "After Widget" content
539
- if( isset( $args['after_widget'] ) ) :
540
- echo $args['after_widget'];
541
- endif;
542
  }
543
  }
18
  class SWP_Popular_Posts_Widget extends WP_Widget {
19
 
20
  /**
21
+ * Class constructor.
22
+ *
23
+ * This function really doesn't do much except call the constructor from the
24
+ * parent class that's built into WordPress core.
25
+ *
26
+ * @since 1.0.0 | 01 JAN 2018 | Created
27
+ * @param void
28
+ * @return void
29
+ * @access public
30
+ *
31
+ */
32
  function __construct() {
33
  parent::__construct( false, $name = 'Social Warfare: Popular Posts' );
34
  }
35
 
36
 
37
+ /**
38
+ * Sets commonly applied attributes.
39
+ *
40
+ * @since 3.0.0 | 08 Feb 2018 | Created
41
+ * @param string $name The name to be called.
42
+ * @param string $class The CSS class to be applied.
43
+ * @param string $value The default value for the element.
44
+ * @return string The string filled with attribute/value pairs.
45
+ *
46
+ */
47
+ private function set_attributes( $name, $class, $value) {
48
+ $attributes = " id=\"{$this->get_field_id($name)}\" class=\"{$class}\" name=\"{$this->get_field_name($name)}\" data-swp-name=\"{$name}\" ";
49
+
50
+ if ( isset( $value) ) {
51
+ $attributes .= " value=\"{$value}\" ";
52
+ }
53
+
54
+ return $attributes;
55
+ }
56
 
57
 
58
  /**
67
  */
68
  function form( $instance ) {
69
 
70
+ $defaults = array(
71
+ 'title' => "Popular Posts",
72
+ 'count' => "10",
73
+ 'timeframe' => "0",
74
+ 'post_type' => "post",
75
+ 'network' => "total_shares",
76
+ 'showCount' => "true",
77
+ 'countLabel' => "Total Shares",
78
+ 'style' => "style_01",
79
+ 'thumbnails' => "true",
80
+ 'thumb_size' => "100",
81
+ 'thumb_width' => "thumb_size",
82
+ 'thumb_height' => "thumb_size",
83
+ 'font_size' => "100",
84
+ 'custom_bg' => "#ffffff",
85
+ 'custom_link' => "#000000"
86
+ );
87
+
88
+
89
+ /**
90
+ * If the user set their value for $var, set it to that. Otherwise set
91
+ * it to the default display value.
92
+ *
93
+ */
94
+ foreach($defaults as $var => $display):
95
+ if (isset ($instance[$var])) {
96
+ $$var = esc_attr ($instance[$var]);
97
+ } else {
98
+ $$var = $display;
99
+ }
100
+ endforeach;
101
 
102
  // Fetch the Social Warfare Options
103
  global $swp_user_options;
114
  // The Widget Title Field
115
  $form .= '<p class="title">';
116
  $form .= '<label for="' . $this->get_field_id( 'title' ) . '">Widget Title</label>';
117
+ $form .= "<input type=\"text\" {$this->set_attributes("title", "widefat", $title)} />";
118
  $form .= '</p>';
119
 
120
 
121
  // Number of Posts to Display Field
122
  $form .= '<p class="count">';
123
  $form .= '<label for="' . $this->get_field_id( 'count' ) . '">How many posts would you like to display?</label>';
124
+ $form .= "<input type=\"text\" {$this->set_attributes("count", "widefat", $count)} />";
125
  $form .= '</p>';
126
 
127
 
131
  $form .= "<input type=\"number\" {$this->set_attributes("timeframe", "widefat", $timeframe)} min=\"0\" />";
132
  $form .= '</p>';
133
 
134
+ // Get the public post Types
135
+ $post_types = SWP_Utility::get_post_types();
136
 
137
+ if( !empty( $post_types ) ):
138
 
139
+ // Display the share count toggle field
140
+ $form .= '<p class="post_type">';
141
+ $form .= '<label for="' . $this->get_field_id( 'post_type' ) . '">What post type would you like to display?</label>';
142
+ $form .= "<select {$this->set_attributes( 'post_type', 'widefat', null )}>";
143
 
144
+ // Loop through the Custom Post Type Options
145
+ foreach($post_types as $this_post_type):
146
+ $form .= '<option value="' . $this_post_type . '" ' . selected($this_post_type, $post_type, false) . '>' . ucfirst( $this_post_type ) . '</option>';
147
+ endforeach;
148
 
149
+ $form .= '</select>';
150
+ $form .= '</p>';
151
 
152
  endif;
153
 
154
  // Which networks to use as the basis field
155
  $form .= '<p class="network">';
156
  $form .= '<label for="' . $this->get_field_id( 'network' ) . '">Which network would you like to base your posts\' popularity on?</label>';
157
+ $form .= "<select {$this->set_attributes('network', 'widefat', null)}>";
158
+ $form .= "<option value=\"total_shares\" {selected($network, 'total_shares', false)}>All Networks</option>";
159
 
160
  foreach( $availableNetworks as $key => $value ) :
161
 
162
+ $opt = $key . '_shares';
163
+ $selected = selected($network, $opt, false);
164
+ $net = ucfirst($value);
165
 
166
+ $form .= "<option value=\"$opt\" $selected>$net</option>";
167
 
168
  endforeach;
169
 
173
  // Display the share count toggle field
174
  $form .= '<p class="showCount">';
175
  $form .= '<label for="' . $this->get_field_id( 'showCount' ) . '">Would you like to show the count?</label>';
176
+ $form .= "<select {$this->set_attributes( 'showCount', 'widefat', null )}>";
177
  $form .= '<option value="true" ' . selected($showCount, 'true', false) . '>Yes</option>';
178
  $form .= '<option value="false" ' . selected($showCount, 'false', false) . '>No</option>';
179
  $form .= '</select>';
183
  // Count Label Field
184
  $form .= '<p ' . ( $showCount != true ? 'style="display:none;"' : '' ) . ' data-dep="showCount" data-dep_val=\'' . json_encode( array(true) ) . '\' class="countLabel">';
185
  $form .= '<label for="' . $this->get_field_id( 'countLabel' ) . '">Count Number Label</label>';
186
+ $form .= "<input type=\"text\" {$this->set_attributes( 'countLabel', 'widefat', $countLabel)} />";
187
  $form .= '</p>';
188
 
189
 
190
  // Post thumbnails toggle field
191
  $form .= '<p class="thumbnails">';
192
  $form .= '<label for="' . $this->get_field_id( 'thumbnails' ) . '">Would you like to display thumbnails?</label>';
193
+ $form .= "<select {$this->set_attributes( 'thumbnails', 'widefat', null)} >";
194
  $form .= '<option value="true" ' . selected($thumbnails, 'true', false) . '>Yes</option>';
195
  $form .= '<option value="false" ' . selected($thumbnails, 'false', false) . '>No</option>';
196
  $form .= '</select>';
200
  // Thumbnails size field
201
  $form .= '<p ' . ( $thumbnails != true ? 'style="display:none;"' : '' ) . ' data-dep="thumbnails" data-dep_val=\'' . json_encode( array(true) ) . '\' class="thumb_size">';
202
  $form .= '<label for="' . $this->get_field_id( 'thumb_size' ) . '">What size would you like your thumbnails?</label>';
203
+ $form .= "<select {$this->set_attributes( 'thumb_size', 'widefat', null )} >";
204
 
205
+ for ($i = 5; $i < 16; $i++) {
206
+ $val = $i * 10;
207
+ $selected = selected($thumb_size, $val, false);
208
+ $form .= "<option value=\"$val\" $selected>${val}px</option>";
209
+ }
210
 
211
  $form .= '<option value="custom" ' . selected($thumb_size, 'custom', false) . '>Custom</option>';
212
  $form .= '</select>';
217
  $form .= '<p ' . ( $thumb_size != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="thumb_size" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_thumb_size">';
218
  $form .= '<label for="' . $this->get_field_id( 'thumb_width' ) . '">Thumbnail width</label>';
219
  $form .= "<input type=\"number\" {$this->set_attributes( 'thumb_width', 'widefat', $thumb_width)} />";
220
+ $form .= '</p>';
221
 
222
  $form .= '<p ' . ( $thumb_size != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="thumb_size" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_thumb_size">';
223
  $form .= '<label for="' . $this->get_field_id( 'thumb_height' ) . '">Thumbnail height</label>';
224
+ $form .= "<input type=\"number\" {$this->set_attributes( 'thumb_height', 'widefat', $thumb_height)} />";
225
  $form .= '</p>';
226
 
227
 
228
  // Font size field
229
  $form .= '<p class="font_size">';
230
  $form .= '<label for="' . $this->get_field_id( 'font_size' ) . '">What size would you like the font?</label>';
231
+ $form .= "<select {$this->set_attributes( 'font_size', 'widefat', null )}>";
232
 
233
+ for ($i = 5; $i < 16; $i++) {
234
+ $val = $i * 10;
235
+ $selected = selected($font_size, $val, false);
236
+ $form .= "<option value=\"$val\" $selected>${val}%</option>";
237
+ }
238
 
239
  $form .= '</select>';
240
  $form .= '</p>';
241
 
242
 
243
  // Color Scheme Field
244
+ $ctt_styles = array(
245
+ "Vanilla",
246
+ "Inspired by Twitter",
247
+ "Inspired by Facebook",
248
+ "Inspired by Google Plus",
249
+ "Don't Stop Believin'",
250
+ "Thunderstruck",
251
+ "Livin' On A Prayer"
252
+ );
253
 
254
  $form .= '<p class="style">';
255
  $form .= '<label for="' . $this->get_field_id( 'style' ) . '">Which color scheme would you like to use?</label>';
256
+ $form .= "<select {$this->set_attributes( 'style', 'widefat', null )}>";
257
 
258
+ foreach($ctt_styles as $idx => $ctt_style):
259
 
260
+ // *Accounting for 0 offset
261
+ $idx += 1;
262
 
263
+ if ($idx < 10) :
264
+ $val = "style_0{$idx}";
265
+ else:
266
+ $val = "style_{$idx}";
267
+ endif;
268
 
269
+ $selected = selected($val, $style, false);
270
+ $form .= "<option value=\"$val\" $selected>${ctt_style}</option>";
271
 
272
+ endforeach;
273
 
274
  $form .= '<option value="custom" ' . selected($style, 'custom', false) . '>Custom</option>';
275
  $form .= '</select>';
278
  // Custom Background Color Field
279
  $form .= '<p ' . ( $style != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="style" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_bg">';
280
  $form .= '<label for="' . $this->get_field_id( 'custom_bg' ) . '">Custom Background Color</label>';
281
+ $form .= "<input type=\"text\" {$this->set_attributes( 'custom_bg', 'widefat', $custom_bg )} />";
282
  $form .= '</p>';
283
 
284
  // Custom Link Color Field
285
  $form .= '<p ' . ( $style != 'custom' ? 'style="display:none;"' : '' ) . ' data-dep="style" data-dep_val=\'' . json_encode( array('custom') ) . '\' class="custom_link">';
286
  $form .= '<label for="' . $this->get_field_id( 'custom_link' ) . '">Custom Link Color</label>';
287
+ $form .= "<input type=\"text\" {$this->set_attributes( 'custom_link', 'widefat', $custom_link )} />";
288
  $form .= '</p>';
289
 
290
  // Close the Div
296
  }
297
 
298
 
299
+ /**
300
+ * Update widget form values.
301
+ *
302
+ * @since 1.0.0
303
+ * @access public
304
+ * @param array $new_instance Updated values as input by the user in WP_Widget::form()
305
+ * @param array $old_instance Previously set values.
306
+ * @return array Sanitized array of final values.
307
+ *
308
+ */
309
  function update( $new_instance, $old_instance ) {
310
  $instance = $old_instance;
311
 
330
  }
331
 
332
 
333
+ /**
334
+ * Echoes the widget content.
335
+ *
336
+ * This sub-class over-rides this function from the parent class to generate the widget code.
337
+ *
338
+ * @since 1.0.0
339
+ * @since 3.0.0 | 09 FEB 2018 | Refactored and added the $args array output
340
+ * @access public
341
+ * @param array $args Display arguments including 'before_title', 'after_title', 'before_widget', and 'after_widget'.
342
+ * @param array $instance The settings for the particular instance of the widget.
343
+ *
344
+ */
345
  function widget( $args, $instance ) {
346
  extract( $args );
347
 
413
  * BUILD OUT THE WIDGET
414
  */
415
 
416
+ // Output the "Before Widget" content
417
+ if( isset( $args['before_widget'] ) ) :
418
+ echo $args['before_widget'];
419
+ endif;
420
 
421
  // Begin output of the widget html
422
  echo '<div class="widget-text swp_widget_box" style="' . $styles[ $style ]['wrapper'] . '">';
424
  // Check if title is set
425
  if ( $title ) :
426
 
427
+ // Output the "Before Title" content
428
+ if( isset( $args['before_title'] ) ) :
429
+ echo $args['before_title'];
430
+ endif;
431
 
432
  echo '<span class="widgettitle widget-title swp_popular_posts_title" style="' . $styles[ $style ]['links'] . '">' . $title . '</span>';
433
 
434
+ // Output the "After Title" content
435
+ if( isset( $args['after_title'] ) ) :
436
+ echo $args['after_title'];
437
+ endif;
438
  endif;
439
 
440
+ $swp_args = array(
441
+ 'posts_per_page' => $count,
442
+ 'post_type' => $post_type,
443
+ 'meta_key' => '_' . $network,
444
+ 'orderby' => 'meta_value_num',
445
+ 'order' => 'DESC',
446
+ 'cache_results' => false,
447
+ 'update_post_meta_cache' => false,
448
+ 'update_post_term_cache' => false,
449
+ 'ignore_sticky_posts' => 1
450
+ );
451
+
452
+ if ($timeframe != 0) {
453
+ $swp_args['date_query'] = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
454
  'column' => 'post_date',
455
  'after' => '- ' . $timeframe . ' days',
456
+ );
457
+ }
 
458
 
459
  // Reset the main query
460
  wp_reset_postdata();
487
  $thumbnail_html = '<a href="' . get_the_permalink() . '">';
488
 
489
  if ($thumb_size === 'custom') :
490
+ $thumb_width = preg_replace("/[^0-9]/", "", $thumb_width);
491
+ $thumb_height = preg_replace("/[^0-9]/", "", $thumb_height);
492
 
493
  $thumbnail_html .= '<img style="width:' . $thumb_width . 'px;height:' . $thumb_height . 'px;" class="swp_pop_thumb" src="' . $thumbnail_url[0] . '" title="' . str_replace('"','\'',get_the_title()) . '" alt="' . str_replace('"','\'',get_the_title()) . '" nopin="nopin" />';
494
  else:
519
  wp_reset_postdata();
520
  echo '</div>';
521
 
522
+ // Output the "After Widget" content
523
+ if( isset( $args['after_widget'] ) ) :
524
+ echo $args['after_widget'];
525
+ endif;
526
  }
527
  }
lib/widgets/SWP_Widget.php CHANGED
@@ -1,41 +1,165 @@
1
  <?php
2
 
3
  /**
4
- * A class designed to queue up and register this plugins widgets.
5
  *
6
- * @package SocialWarfare\Functions\Widgets
7
- * @copyright Copyright (c) 2018, Warfare Plugins, LLC
8
- * @license GPL-3.0+
9
- * @since 3.0.0 | 22 FEB 2018 | Class Created
 
10
  *
11
  */
12
- class SWP_Widget {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
 
15
  /**
16
- * The magic method used to instantiate this class.
17
  *
18
- * @since 3.0.0
19
- * @param none
20
- * @return none
21
- * @access public
22
  *
23
  */
24
- public function __construct() {
25
- add_action( 'widgets_init', array( $this , 'register_widgets' ) );
 
26
  }
27
 
28
 
29
  /**
30
- * The function that runs on the widgets_init hook and registers
31
- * our widget with WordPress.
 
 
 
 
 
 
 
32
  *
33
- * @since 3.0.0
34
- * @param none
35
- * @return none
36
  */
37
- function register_widgets() {
38
- register_widget( 'swp_popular_posts_widget' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
1
  <?php
2
 
3
  /**
4
+ * A wrapper for WP_Widget.
5
  *
6
+ * This class allows us finer control over how we create widgets, how the data
7
+ * is stored, and how the product is displayed on the front end.
8
+ *
9
+ * It handles widget registration and loading in WordPress so the child class can
10
+ * focus only on what its intention is.
11
  *
12
  */
13
+ abstract class SWP_Widget extends WP_Widget {
14
+
15
+
16
+ /**
17
+ * Applies metadata about this widget to WP_Widget.
18
+ *
19
+ * @since 1.0.0 | 01 JAN 2018 | Created
20
+ * @param $key The unique classname of the Widget.
21
+ * @param $name The display name for WP Admin -> Appearance -> Widgets.
22
+ * @param $widget array Fields required by wordpress.
23
+ * At a minimum, ['classname' => '', 'description' => '']
24
+ * @access public
25
+ */
26
+ function __construct( $key, $name, $widget ) {
27
+ $this->data = $widget;
28
+ $this->key = $key;
29
+ $widget['key'] = $key;
30
+ $widget['name'] = $name;
31
+
32
+ parent::__construct( $key, $name, $widget );
33
+
34
+ add_filter( 'swp_widgets', array( $this, 'register_self' ) );
35
+ }
36
+
37
+
38
+ /**
39
+ * Creates the markup for the <form> (settings) inside the widget.
40
+ *
41
+ * This is the draggable, sortable container which holds the
42
+ * form data. This is how users can add or remove the Widget from sidebar.
43
+ *
44
+ * This method must be defined in child class.
45
+ *
46
+ */
47
+ abstract function generate_form_HTML( $settings );
48
+
49
+ /**
50
+ * Creates the frontend display title for the widget.
51
+ * This method must be defined in child class.
52
+ *
53
+ */
54
+ abstract function generate_widget_title( $title );
55
+
56
+ /**
57
+ * Creates the frontend display of the main widget contents.
58
+ * This method must be defined in child class.
59
+ *
60
+ */
61
+ abstract function generate_widget_HTML( $settings );
62
 
63
 
64
  /**
65
+ * Hooks into the SWP_Widget_Loder autoregistration.
66
  *
67
+ * @since 3.5.0 | 13 DEC 2018 | Created
68
+ * @param array $widgets The list of SWP widgets being registered.
69
+ * @filter hook Hooks into `swp_widgets`
 
70
  *
71
  */
72
+ public function register_self( $widgets ) {
73
+ $widgets[] = strtolower( $this->id_base );
74
+ return $widgets;
75
  }
76
 
77
 
78
  /**
79
+ * Builds the display of the widget. The part we care about most.
80
+ *
81
+ * Must override WP_Widget->form().
82
+ *
83
+ * @since 1.0.0 | 01 JAN 2018 | Created
84
+ * @since 3.0.0 | 01 MAY 2018 | Refactored using loops, $this->set_attributes(),
85
+ * and added custom thumb sizes
86
+ * @param array $instance Current settings.
87
+ * @return void Output is echoed directly to the screen
88
  *
 
 
 
89
  */
90
+ public function form( $settings ) {
91
+
92
+ $form = '<div class="swp-widget swp_widget">';
93
+ $form .= $this->generate_form_HTML( $settings );
94
+ $form .= '</div>';
95
+
96
+ echo $form;
97
+ }
98
+
99
+
100
+ /**
101
+ * Handler for saving new settings.
102
+ *
103
+ * By default will always save changed settings.
104
+ * Please override in child class to filter and sanitize data.
105
+ *
106
+ * @since 1.0.0
107
+ * @access public
108
+ * @param array $new_instance Updated values as input by the user in WP_Widget::form()
109
+ * @param array $old_instance Previously set values.
110
+ * @return array The new values to store in the database.
111
+ *
112
+ */
113
+ public function update( $new_settings, $old_settings ) {
114
+ return $new_settings;
115
  }
116
 
117
+
118
+ /**
119
+ * Builds the widget, including data passed in from `register_sidebar`
120
+ *
121
+ * Must override WP_Widget->widget().
122
+ *
123
+ * The theme or another plugin may have added in the 'before_title',
124
+ * 'after_title', 'before_widget', and 'after_widget' fields in the
125
+ * $args array by the `register_sidebar()` function.
126
+ *
127
+ * Whether or not we use them, we still need to account for them here.
128
+ *
129
+ * @since 3.5.0
130
+ * @access public
131
+ * @param array $args Exgra data passed in by register_sidebar().
132
+ * @param array $instance The settings for the particular instance of the widget.
133
+ *
134
+ */
135
+ public function widget( $args, $settings ) {
136
+ if( isset( $args['before_widget'] ) ) {
137
+ echo $args['before_widget'];
138
+ }
139
+ $title = isset( $settings['title'] ) ? $settings['title'] : '';
140
+
141
+ echo '<div class="widget-text swp_widget_box">';
142
+
143
+ if( isset( $args['before_title'] ) ) {
144
+ echo $args['before_title'];
145
+ }
146
+
147
+ echo '<div class="swp-widget-title">'
148
+ . $this->generate_widget_title( $title )
149
+ . '</div>';
150
+
151
+ if( isset( $args['after_title'] ) ) {
152
+ echo $args['after_title'];
153
+ }
154
+
155
+ echo '<div class="swp-widget-content">'
156
+ . $this->generate_widget_HTML( $settings )
157
+ .'</div>';
158
+
159
+ echo '</div>';
160
+
161
+ if( isset( $args['after_widget'] ) ) {
162
+ echo $args['after_widget'];
163
+ }
164
+ }
165
  }
lib/widgets/SWP_Widget_Loader.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * A class designed to queue up and register this plugins widgets.
5
+ *
6
+ * @package SocialWarfare\Functions\Widgets
7
+ * @copyright Copyright (c) 2018, Warfare Plugins, LLC
8
+ * @license GPL-3.0+
9
+ * @since 3.0.0 | 22 FEB 2018 | Class Created
10
+ *
11
+ */
12
+ class SWP_Widget_Loader {
13
+
14
+
15
+ /**
16
+ * The magic method used to instantiate this class.
17
+ *
18
+ * @since 3.0.0
19
+ * @param none
20
+ * @return none
21
+ * @access public
22
+ *
23
+ */
24
+ public function __construct() {
25
+ add_action( 'widgets_init', array( $this , 'register_widgets' ) );
26
+ }
27
+
28
+
29
+ /**
30
+ * Autoregisters all widgets which extend SWP_Widget.
31
+ *
32
+ * @since Since 3.5.0 | 13 DEC 2018 Ported from SWP_Widget
33
+ * @filter swp_popular_posts_widget
34
+ * @return void
35
+ *
36
+ */
37
+ function register_widgets() {
38
+ $widgets = apply_filters( 'swp_widgets', array() );
39
+ // Apply default values after filtering to guarantee ours are included.
40
+
41
+ if (!is_array($widgets)) {
42
+ $widgets = array();
43
+ }
44
+ $widgets = array_merge( array( 'swp_popular_posts_widget' ), $widgets );
45
+
46
+ foreach( $widgets as $widget ) {
47
+ if ( class_exists( $widget ) ) {
48
+ register_widget( $widget );
49
+ }
50
+ }
51
+ }
52
+ }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: holas84, dustinwstout, webinator, warfareplugins, nutsandboltsmedi
3
  Tags: sharing buttons, social media share, floating share buttons, facebook share, google plus share, linkedin share, pin it, pinterest save, mix button, tweet button, twitter share, click to tweet, social sharing buttons, social share, social sharing, social media sharing, wordpress social sharing plugin, social sharing plugin, share buttons, share counts
4
  Requires at least: 4.5.0
5
  Tested up to: 5.0
6
- Stable tag: 3.4.2
7
  License: GNU General Public License v2.0 or later
8
 
9
  The most beautiful, responsive, lightning fast social share buttons built to boost shares and drive more traffic without slowing down your site.
@@ -193,6 +193,21 @@ We have a growing archive of <a href="https://warfareplugins.com/support/" rel="
193
 
194
  == Changelog ==
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  = 3.4.2 (13 DEC 2018) =
197
  * Fixed floating bottom disappear on mobile when pro is deactivated.
198
  * Fixed blocks disappearing after Gutenberg update.
3
  Tags: sharing buttons, social media share, floating share buttons, facebook share, google plus share, linkedin share, pin it, pinterest save, mix button, tweet button, twitter share, click to tweet, social sharing buttons, social share, social sharing, social media sharing, wordpress social sharing plugin, social sharing plugin, share buttons, share counts
4
  Requires at least: 4.5.0
5
  Tested up to: 5.0
6
+ Stable tag: 3.5.0
7
  License: GNU General Public License v2.0 or later
8
 
9
  The most beautiful, responsive, lightning fast social share buttons built to boost shares and drive more traffic without slowing down your site.
193
 
194
  == Changelog ==
195
 
196
+ = 3.5.0 (26 FEB 2019) =
197
+ * Fixed the side floating buttons not showing on some themes.
198
+ * Fixed 'operand type' notice when making cURL share count request.
199
+ * Fixed Facebook shares displaying double the value.
200
+ * Fixed the Pinterest description sometimes being too long when pinning.
201
+ * Escaped the Pinterest description before sending to the client.
202
+ * Fixed a missing @via tag for Click to Tweets.
203
+ * Fixed the CSS selector for Gutenberg blocks.
204
+ * Updated location of Total Shares and Share Counts options.
205
+ * Updated og:image tags to include a name attribute (for LinkedIn).
206
+ * Updated the Frame Buster feature.
207
+ * Updated the pinterest button search & destroy method.
208
+ * Fixed notice when there are no inactive icons.
209
+ * Added interface for handling oAuth handshakes.
210
+
211
  = 3.4.2 (13 DEC 2018) =
212
  * Fixed floating bottom disappear on mobile when pro is deactivated.
213
  * Fixed blocks disappearing after Gutenberg update.
social-warfare.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Social Warfare
4
  * Plugin URI: https://warfareplugins.com
5
  * Description: A plugin to maximize social shares and drive more traffic using the fastest and most intelligent share buttons on the market, calls to action via in-post click-to-tweets, popular posts widgets based on share popularity, link-shortening, Google Analytics and much, much more!
6
- * Version: 3.4.2
7
  * Author: Warfare Plugins
8
  * Author URI: https://warfareplugins.com
9
  * Text Domain: social-warfare
@@ -16,7 +16,7 @@ defined( 'WPINC' ) || die;
16
  * Define plugin constants for use throughout the plugin (Version and Directories)
17
  *
18
  */
19
- define( 'SWP_VERSION' , '3.4.2' );
20
  define( 'SWP_PLUGIN_FILE', __FILE__ );
21
  define( 'SWP_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
22
  define( 'SWP_PLUGIN_DIR', dirname( __FILE__ ) );
@@ -30,7 +30,7 @@ define( 'SWP_STORE_URL', 'https://warfareplugins.com' );
30
  *
31
  */
32
  if ( file_exists( SWP_PLUGIN_DIR . '/lib/legacy/update-checker.php') ) :
33
- require_once SWP_PLUGIN_DIR . '/lib/legacy/update-checker.php';
34
  endif;
35
  add_filter('the_excerpt', 'do_shortcode', 1);
36
 
3
  * Plugin Name: Social Warfare
4
  * Plugin URI: https://warfareplugins.com
5
  * Description: A plugin to maximize social shares and drive more traffic using the fastest and most intelligent share buttons on the market, calls to action via in-post click-to-tweets, popular posts widgets based on share popularity, link-shortening, Google Analytics and much, much more!
6
+ * Version: 3.5.0
7
  * Author: Warfare Plugins
8
  * Author URI: https://warfareplugins.com
9
  * Text Domain: social-warfare
16
  * Define plugin constants for use throughout the plugin (Version and Directories)
17
  *
18
  */
19
+ define( 'SWP_VERSION' , '3.5.0' );
20
  define( 'SWP_PLUGIN_FILE', __FILE__ );
21
  define( 'SWP_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
22
  define( 'SWP_PLUGIN_DIR', dirname( __FILE__ ) );
30
  *
31
  */
32
  if ( file_exists( SWP_PLUGIN_DIR . '/lib/legacy/update-checker.php') ) :
33
+ require_once SWP_PLUGIN_DIR . '/lib/legacy/update-checker.php';
34
  endif;
35
  add_filter('the_excerpt', 'do_shortcode', 1);
36