rtMedia for WordPress, BuddyPress and bbPress - Version 3.7.32

Version Description

  • Update all translation files
  • Update templates
  • Fix media title issue
  • Fix warnings
Download this release

Release Info

Developer rtcamp
Plugin Icon 128x128 rtMedia for WordPress, BuddyPress and bbPress
Version 3.7.32
Comparing to
See all releases

Code changes from version 3.7.31 to 3.7.32

Files changed (41) hide show
  1. app/admin/RTMediaAdmin.php +9 -9
  2. app/admin/RTMediaFormHandler.php +9 -9
  3. app/assets/css/vendor/bootstrap-switch.css +184 -0
  4. app/assets/css/vendor/grid-foundation.css +222 -0
  5. app/assets/css/vendor/jquery.powertip.min.css +1 -0
  6. app/assets/css/vendor/jquery.sliderTabs.min.css +1 -0
  7. app/assets/js/admin.js +23 -14
  8. app/assets/js/vendor/bootstrap-switch.js +255 -0
  9. app/assets/js/vendor/jquery.observehashchange.pack.js +87 -0
  10. app/assets/js/vendor/jquery.powertip.min.js +1166 -0
  11. app/assets/js/vendor/jquery.sliderTabs.min.js +831 -0
  12. app/helper/RTMediaAddon.php +3 -3
  13. app/main/RTMedia.php +9 -7
  14. app/main/controllers/template/RTMediaTemplate.php +3 -3
  15. app/main/controllers/template/rt-template-functions.php +6 -4
  16. app/main/interactions/RTMediaInteraction.php +2 -2
  17. app/schema/rtm_api.schema +2 -1
  18. app/services/RTMediaEncoding.php +1 -1
  19. index.php +1 -1
  20. languages/rtmedia-ar_AR.mo +0 -0
  21. languages/rtmedia-de_DE.mo +0 -0
  22. languages/rtmedia-es_ES.mo +0 -0
  23. languages/rtmedia-fa_IR.mo +0 -0
  24. languages/rtmedia-fr_FR.mo +0 -0
  25. languages/rtmedia-hu_HU.mo +0 -0
  26. languages/rtmedia-it_IT.mo +0 -0
  27. languages/rtmedia-ja_JA.mo +0 -0
  28. languages/rtmedia-nb_NO.mo +0 -0
  29. languages/rtmedia-nl_NL.mo +0 -0
  30. languages/rtmedia-pl_PL.mo +0 -0
  31. languages/rtmedia-pt_BR.mo +0 -0
  32. languages/rtmedia-ro_RO.mo +0 -0
  33. languages/rtmedia-ru_RU.mo +0 -0
  34. languages/rtmedia-sk_SK.mo +0 -0
  35. languages/rtmedia-sr_SR.mo +0 -0
  36. languages/rtmedia-sv_SE.mo +0 -0
  37. languages/rtmedia.mo +0 -0
  38. languages/rtmedia.po +303 -296
  39. readme.txt +13 -7
  40. templates/main.php +92 -94
  41. templates/media/media-gallery.php +2 -0
app/admin/RTMediaAdmin.php CHANGED
@@ -676,9 +676,9 @@ if ( ! class_exists( 'RTMediaAdmin' ) ){
676
 
677
  $admin_ajax = admin_url( 'admin-ajax.php' );
678
 
679
- wp_enqueue_script( 'bootstrap-switch', RTMEDIA_URL . 'app/assets/js/bootstrap-switch.js', array( 'jquery' ), RTMEDIA_VERSION );
680
- wp_enqueue_script( 'slider-tabs', RTMEDIA_URL . 'app/assets/js/jquery.sliderTabs.min.js', array( 'jquery', 'jquery-effects-core' ), RTMEDIA_VERSION );
681
- wp_enqueue_script( 'observe-hashchange', RTMEDIA_URL . 'app/assets/js/jquery.observehashchange.pack.js', array( 'jquery' ), RTMEDIA_VERSION );
682
  wp_enqueue_script( 'rtmedia-admin', RTMEDIA_URL . 'app/assets/js/admin.js', array( 'jquery-ui-dialog' ), RTMEDIA_VERSION );
683
  wp_localize_script( 'rtmedia-admin', 'rtmedia_on_label', __( 'ON', 'rtmedia' ) );
684
  wp_localize_script( 'rtmedia-admin', 'rtmedia_off_label', __( 'OFF', 'rtmedia' ) );
@@ -700,9 +700,9 @@ if ( ! class_exists( 'RTMediaAdmin' ) ){
700
  wp_localize_script( 'rtmedia-admin', 'settings_url', add_query_arg( array( 'page' => 'rtmedia-settings' ), ( is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' ) ) ) . '#privacy_enabled' );
701
  wp_localize_script( 'rtmedia-admin', 'settings_rt_album_import_url', add_query_arg( array( 'page' => 'rtmedia-settings' ), ( is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' ) ) ) );
702
  wp_enqueue_style( 'font-awesome', RTMEDIA_URL . 'app/assets/css/font-awesome.min.css', '', RTMEDIA_VERSION );
703
- wp_enqueue_style( 'bootstrap-switch', RTMEDIA_URL . 'app/assets/css/bootstrap-switch.css', '', RTMEDIA_VERSION );
704
- wp_enqueue_style( 'slider-tabs', RTMEDIA_URL . 'app/assets/css/jquery.sliderTabs.min.css', '', RTMEDIA_VERSION );
705
- wp_enqueue_style( 'grid-foundation', RTMEDIA_URL . 'app/assets/css/grid-foundation.css', '', RTMEDIA_VERSION );
706
  wp_enqueue_style( 'rtmedia-main', RTMEDIA_URL . 'app/assets/css/main.css', '', RTMEDIA_VERSION );
707
  wp_enqueue_style( 'rtmedia-admin', RTMEDIA_URL . 'app/assets/css/admin.css', '', RTMEDIA_VERSION );
708
 
@@ -1832,10 +1832,10 @@ if ( ! class_exists( 'RTMediaAdmin' ) ){
1832
  }
1833
 
1834
  function rtmedia_update_template_notice(){
1835
- $site_option = rtmedia_get_site_option( 'rtmedia-update-template-notice-v3_7_26' );
1836
 
1837
  if ( ! $site_option || 'hide' != $site_option ){
1838
- rtmedia_update_site_option( 'rtmedia-update-template-notice-v3_7_26', 'show' );
1839
  if ( is_dir( get_template_directory() . '/rtmedia' ) ){
1840
  echo '<div class="error rtmedia-update-template-notice"><p>' . __( 'Please update rtMedia template files if you have overridden the default rtMedia templates in your theme. If not, you can ignore and hide this notice.' ) . '<a href="#" onclick="rtmedia_hide_template_override_notice()" style="float:right">' . __( 'Hide', 'rtmedia' ) . '</a>' . ' </p></div>';
1841
  ?>
@@ -1856,7 +1856,7 @@ if ( ! class_exists( 'RTMediaAdmin' ) ){
1856
 
1857
  function rtmedia_hide_template_override_notice(){
1858
 
1859
- if ( rtmedia_update_site_option( 'rtmedia-update-template-notice-v3_7_26', 'hide' ) ){
1860
  echo '1';
1861
  } else {
1862
  echo '0';
676
 
677
  $admin_ajax = admin_url( 'admin-ajax.php' );
678
 
679
+ wp_enqueue_script( 'bootstrap-switch', RTMEDIA_URL . 'app/assets/js/vendor/bootstrap-switch.js', array( 'jquery' ), RTMEDIA_VERSION );
680
+ wp_enqueue_script( 'slider-tabs', RTMEDIA_URL . 'app/assets/js/vendor/jquery.sliderTabs.min.js', array( 'jquery', 'jquery-effects-core' ), RTMEDIA_VERSION );
681
+ wp_enqueue_script( 'observe-hashchange', RTMEDIA_URL . 'app/assets/js/vendor/jquery.observehashchange.pack.js', array( 'jquery' ), RTMEDIA_VERSION );
682
  wp_enqueue_script( 'rtmedia-admin', RTMEDIA_URL . 'app/assets/js/admin.js', array( 'jquery-ui-dialog' ), RTMEDIA_VERSION );
683
  wp_localize_script( 'rtmedia-admin', 'rtmedia_on_label', __( 'ON', 'rtmedia' ) );
684
  wp_localize_script( 'rtmedia-admin', 'rtmedia_off_label', __( 'OFF', 'rtmedia' ) );
700
  wp_localize_script( 'rtmedia-admin', 'settings_url', add_query_arg( array( 'page' => 'rtmedia-settings' ), ( is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' ) ) ) . '#privacy_enabled' );
701
  wp_localize_script( 'rtmedia-admin', 'settings_rt_album_import_url', add_query_arg( array( 'page' => 'rtmedia-settings' ), ( is_multisite() ? network_admin_url( 'admin.php' ) : admin_url( 'admin.php' ) ) ) );
702
  wp_enqueue_style( 'font-awesome', RTMEDIA_URL . 'app/assets/css/font-awesome.min.css', '', RTMEDIA_VERSION );
703
+ wp_enqueue_style( 'bootstrap-switch', RTMEDIA_URL . 'app/assets/css/vendor/bootstrap-switch.css', '', RTMEDIA_VERSION );
704
+ wp_enqueue_style( 'slider-tabs', RTMEDIA_URL . 'app/assets/css/vendor/jquery.sliderTabs.min.css', '', RTMEDIA_VERSION );
705
+ wp_enqueue_style( 'grid-foundation', RTMEDIA_URL . 'app/assets/css/vendor/grid-foundation.css', '', RTMEDIA_VERSION );
706
  wp_enqueue_style( 'rtmedia-main', RTMEDIA_URL . 'app/assets/css/main.css', '', RTMEDIA_VERSION );
707
  wp_enqueue_style( 'rtmedia-admin', RTMEDIA_URL . 'app/assets/css/admin.css', '', RTMEDIA_VERSION );
708
 
1832
  }
1833
 
1834
  function rtmedia_update_template_notice(){
1835
+ $site_option = rtmedia_get_site_option( 'rtmedia-update-template-notice-v3_7_32' );
1836
 
1837
  if ( ! $site_option || 'hide' != $site_option ){
1838
+ rtmedia_update_site_option( 'rtmedia-update-template-notice-v3_7_32', 'show' );
1839
  if ( is_dir( get_template_directory() . '/rtmedia' ) ){
1840
  echo '<div class="error rtmedia-update-template-notice"><p>' . __( 'Please update rtMedia template files if you have overridden the default rtMedia templates in your theme. If not, you can ignore and hide this notice.' ) . '<a href="#" onclick="rtmedia_hide_template_override_notice()" style="float:right">' . __( 'Hide', 'rtmedia' ) . '</a>' . ' </p></div>';
1841
  ?>
1856
 
1857
  function rtmedia_hide_template_override_notice(){
1858
 
1859
+ if ( rtmedia_update_site_option( 'rtmedia-update-template-notice-v3_7_32', 'hide' ) ){
1860
  echo '1';
1861
  } else {
1862
  echo '0';
app/admin/RTMediaFormHandler.php CHANGED
@@ -640,16 +640,16 @@ class RTMediaFormHandler {
640
  <?php do_action( 'rtmedia_media_type_setting_message' ); ?>
641
  </h3>
642
  </div>
643
- <div class="rt-table large-12">
644
  <div class="row rt-header">
645
  <?php do_action( 'rtmedia_type_settings_before_heading' ); ?>
646
- <div class="columns large-4"><h4><?php _e( 'Media Type', 'rtmedia' ) ?></h4></div>
647
- <div class="columns large-4">
648
  <h4 data-tooltip class="has-tip" title="<?php _e( 'Allows you to upload a particular media type on your post.', 'rtmedia' ); ?>">
649
  <abbr><?php _e( 'Allow Upload', 'rtmedia' ); ?></abbr>
650
  </h4>
651
  </div>
652
- <div class="columns large-4">
653
  <h4 data-tooltip class="has-tip" title="<?php _e( 'Place a specific media as a featured content on the post.', 'rtmedia' ); ?>">
654
  <abbr><?php _e( 'Set Featured', 'rtmedia' ); ?></abbr>
655
  </h4>
@@ -670,15 +670,15 @@ class RTMediaFormHandler {
670
  }
671
 
672
  do_action( 'rtmedia_type_settings_before_body' );
673
- echo '<div class="columns large-4">' . $section['name'] . '</div>';
674
  $args = array( 'key' => 'allowedTypes_' . $key . '_enabled', 'value' => $section['enabled'] );
675
- echo '<div class="columns large-4">';
676
  $allow_upload_checkbox = self::checkbox( $args, $echo = false );
677
  $allow_upload_checkbox = apply_filters( 'rtmedia_filter_allow_upload_checkbox', $allow_upload_checkbox, $key, $args );
678
  echo $allow_upload_checkbox;
679
  echo '</div>';
680
  $args = array( 'key' => 'allowedTypes_' . $key . '_featured', 'value' => $section['featured'] );
681
- echo '<div class="columns large-4">';
682
  $featured_checkbox = self::checkbox( $args, $echo = false );
683
  $featured_checkbox = apply_filters( 'rtmedia_filter_featured_checkbox', $featured_checkbox, $key );
684
  echo $featured_checkbox;
@@ -693,8 +693,8 @@ class RTMediaFormHandler {
693
  do_action( 'rtmedia_type_settings_after_body', $key, $section );
694
  echo '</div>';
695
  echo '<div class="row rtmedia-file-extension-wrap">';
696
- echo '<label class="columns large-3">' . __( 'File Extensions', 'rtmedia' ) . ':</label>';
697
- echo '<label class="columns large-9 rtmedia_type_settings_filter_extension">' . $extensions . '</label>';
698
  echo '</div>';
699
 
700
  } else {
640
  <?php do_action( 'rtmedia_media_type_setting_message' ); ?>
641
  </h3>
642
  </div>
643
+ <div class="rt-table large-12 medium-12 small-12">
644
  <div class="row rt-header">
645
  <?php do_action( 'rtmedia_type_settings_before_heading' ); ?>
646
+ <div class="columns large-4 medium-4 small-4"><h4><?php _e( 'Media Type', 'rtmedia' ) ?></h4></div>
647
+ <div class="columns large-4 medium-4 small-4">
648
  <h4 data-tooltip class="has-tip" title="<?php _e( 'Allows you to upload a particular media type on your post.', 'rtmedia' ); ?>">
649
  <abbr><?php _e( 'Allow Upload', 'rtmedia' ); ?></abbr>
650
  </h4>
651
  </div>
652
+ <div class="columns large-4 medium-4 small-4">
653
  <h4 data-tooltip class="has-tip" title="<?php _e( 'Place a specific media as a featured content on the post.', 'rtmedia' ); ?>">
654
  <abbr><?php _e( 'Set Featured', 'rtmedia' ); ?></abbr>
655
  </h4>
670
  }
671
 
672
  do_action( 'rtmedia_type_settings_before_body' );
673
+ echo '<div class="columns large-4 medium-4 small-4">' . $section['name'] . '</div>';
674
  $args = array( 'key' => 'allowedTypes_' . $key . '_enabled', 'value' => $section['enabled'] );
675
+ echo '<div class="columns large-4 medium-4 small-4">';
676
  $allow_upload_checkbox = self::checkbox( $args, $echo = false );
677
  $allow_upload_checkbox = apply_filters( 'rtmedia_filter_allow_upload_checkbox', $allow_upload_checkbox, $key, $args );
678
  echo $allow_upload_checkbox;
679
  echo '</div>';
680
  $args = array( 'key' => 'allowedTypes_' . $key . '_featured', 'value' => $section['featured'] );
681
+ echo '<div class="columns large-4 medium-4 small-4">';
682
  $featured_checkbox = self::checkbox( $args, $echo = false );
683
  $featured_checkbox = apply_filters( 'rtmedia_filter_featured_checkbox', $featured_checkbox, $key );
684
  echo $featured_checkbox;
693
  do_action( 'rtmedia_type_settings_after_body', $key, $section );
694
  echo '</div>';
695
  echo '<div class="row rtmedia-file-extension-wrap">';
696
+ echo '<label class="columns large-3 medium-3 small-3">' . __( 'File Extensions', 'rtmedia' ) . ':</label>';
697
+ echo '<label class="columns large-9 medium-9 small-9 rtmedia_type_settings_filter_extension">' . $extensions . '</label>';
698
  echo '</div>';
699
 
700
  } else {
app/assets/css/vendor/bootstrap-switch.css ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* line 9, ../sass/bootstrap-switch.scss */
2
+ .fui-cross,
3
+ .fui-check {
4
+ display: inline-block;
5
+ speak: none;
6
+ font-style: normal;
7
+ font-weight: normal;
8
+ font-variant: normal;
9
+ text-transform: none;
10
+ -webkit-font-smoothing: antialiased;
11
+ }
12
+
13
+ /* line 18, ../sass/bootstrap-switch.scss */
14
+ .fui-cross:before {
15
+ content: "\2716";
16
+ }
17
+
18
+ /* line 21, ../sass/bootstrap-switch.scss */
19
+ .fui-check:before {
20
+ content: "\2714";
21
+ }
22
+
23
+ /* Switch checkbox */
24
+ /* line 44, ../sass/bootstrap-switch.scss */
25
+ .has-switch {
26
+ border-radius: 30px;
27
+ display: inline-block;
28
+ cursor: pointer;
29
+ line-height: 1.231;
30
+ overflow: hidden;
31
+ position: relative;
32
+ text-align: left;
33
+ width: 55px;
34
+ height: 20px;
35
+ -webkit-mask: url("../../img/mask.png") 0 0 no-repeat;
36
+ mask: url("../../img/mask.png") 0 0 no-repeat;
37
+ -webkit-user-select: none;
38
+ -moz-user-select: none;
39
+ user-select: none;
40
+ }
41
+ /* line 58, ../sass/bootstrap-switch.scss */
42
+ .has-switch.deactivate {
43
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=5000);
44
+ opacity: 50;
45
+ cursor: default !important;
46
+ }
47
+ /* line 61, ../sass/bootstrap-switch.scss */
48
+ .has-switch.deactivate label, .has-switch.deactivate span {
49
+ cursor: default !important;
50
+ }
51
+ /* line 66, ../sass/bootstrap-switch.scss */
52
+ .has-switch > div {
53
+ width: 162%;
54
+ position: relative;
55
+ top: 0;
56
+ }
57
+ /* line 71, ../sass/bootstrap-switch.scss */
58
+ .has-switch > div.switch-animate {
59
+ -webkit-transition: left 0.25s ease-out;
60
+ -moz-transition: left 0.25s ease-out;
61
+ -o-transition: left 0.25s ease-out;
62
+ transition: left 0.25s ease-out;
63
+ }
64
+ /* line 75, ../sass/bootstrap-switch.scss */
65
+ .has-switch > div.switch-off {
66
+ left: -63%;
67
+ }
68
+ /* line 78, ../sass/bootstrap-switch.scss */
69
+ .has-switch > div.switch-off label {
70
+ background-color: #2a95c5;
71
+ border-color: #bdc3c7;
72
+ -webkit-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5);
73
+ -moz-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5);
74
+ box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5);
75
+ }
76
+ /* line 85, ../sass/bootstrap-switch.scss */
77
+ .has-switch > div.switch-on {
78
+ left: 0%;
79
+ }
80
+ /* line 88, ../sass/bootstrap-switch.scss */
81
+ .has-switch > div.switch-on label {
82
+ background-color: #bdc3c7;
83
+ }
84
+ /* line 94, ../sass/bootstrap-switch.scss */
85
+ .has-switch input[type=checkbox] {
86
+ display: none;
87
+ }
88
+ /* line 98, ../sass/bootstrap-switch.scss */
89
+ .has-switch span {
90
+ cursor: pointer;
91
+ font-size: 10.71px;
92
+ font-weight: 700;
93
+ float: left;
94
+ height: 20px;
95
+ line-height: 19px;
96
+ margin: 0;
97
+ padding-top: 1px;
98
+ position: relative;
99
+ text-align: center;
100
+ width: 50%;
101
+ z-index: 1;
102
+ -webkit-box-sizing: border-box;
103
+ -moz-box-sizing: border-box;
104
+ box-sizing: border-box;
105
+ -webkit-transition: 0.25s ease-out;
106
+ -moz-transition: 0.25s ease-out;
107
+ -o-transition: 0.25s ease-out;
108
+ transition: 0.25s ease-out;
109
+ }
110
+ /* line 114, ../sass/bootstrap-switch.scss */
111
+ .has-switch span.switch-left {
112
+ border-radius: 30px 0 0 30px;
113
+ background-color: #2a95c5;
114
+ color: white;
115
+ border-left: 1px solid transparent;
116
+ }
117
+ /* line 121, ../sass/bootstrap-switch.scss */
118
+ .has-switch span.switch-right {
119
+ border-radius: 0 30px 30px 0;
120
+ background-color: #bdc3c7;
121
+ color: white;
122
+ text-indent: 7px;
123
+ }
124
+ /* line 127, ../sass/bootstrap-switch.scss */
125
+ .has-switch span.switch-right [class*="fui-"] {
126
+ text-indent: 0;
127
+ }
128
+ /* line 133, ../sass/bootstrap-switch.scss */
129
+ .has-switch label {
130
+ border: 4px solid #2a95c5;
131
+ border-radius: 50%;
132
+ float: left;
133
+ height: 12px;
134
+ margin: 0 -12px 0 -10px;
135
+ padding: 0;
136
+ position: relative;
137
+ vertical-align: middle;
138
+ width: 12px;
139
+ z-index: 100;
140
+ -webkit-transition: 0.25s ease-out;
141
+ -moz-transition: 0.25s ease-out;
142
+ -o-transition: 0.25s ease-out;
143
+ transition: 0.25s ease-out;
144
+ }
145
+
146
+ /* line 150, ../sass/bootstrap-switch.scss */
147
+ .switch-square {
148
+ border-radius: 6px;
149
+ -webkit-mask: url("../../img/mask.png") 0 0 no-repeat;
150
+ mask: url("../../img/mask.png") 0 0 no-repeat;
151
+ }
152
+ /* line 157, ../sass/bootstrap-switch.scss */
153
+ .switch-square > div.switch-off label {
154
+ border-color: #2a95c5;
155
+ border-radius: 6px 0 0 6px;
156
+ }
157
+ /* line 164, ../sass/bootstrap-switch.scss */
158
+ .switch-square span {
159
+ -webkit-transition: 0.25s ease-out;
160
+ -moz-transition: 0.25s ease-out;
161
+ -o-transition: 0.25s ease-out;
162
+ transition: 0.25s ease-out;
163
+ }
164
+ /* line 168, ../sass/bootstrap-switch.scss */
165
+ .switch-square span.switch-left {
166
+ border-radius: 6px 0 0 6px;
167
+ }
168
+ /* line 170, ../sass/bootstrap-switch.scss */
169
+ .switch-square span.switch-left [class*="fui-"] {
170
+ text-indent: -10px;
171
+ }
172
+ /* line 175, ../sass/bootstrap-switch.scss */
173
+ .switch-square span.switch-right {
174
+ border-radius: 0 6px 6px 0;
175
+ }
176
+ /* line 177, ../sass/bootstrap-switch.scss */
177
+ .switch-square span.switch-right [class*="fui-"] {
178
+ text-indent: 5px;
179
+ }
180
+ /* line 183, ../sass/bootstrap-switch.scss */
181
+ .switch-square label {
182
+ border-radius: 0 6px 6px 0;
183
+ border-color: #bdc3c7;
184
+ }
app/assets/css/vendor/grid-foundation.css ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Grid HTML Classes */
2
+ /* line 116, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
3
+ *, *:before, *:after {
4
+ -moz-box-sizing: border-box;
5
+ -webkit-box-sizing: border-box;
6
+ box-sizing: border-box;
7
+ }
8
+ .row {
9
+ width: 100%;
10
+ margin-left: auto;
11
+ margin-right: auto;
12
+ margin-top: 0;
13
+ margin-bottom: 0;
14
+ max-width: 62.5em;
15
+ *zoom: 1;
16
+ }
17
+ /* line 101, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_global.scss */
18
+ .row:before, .row:after {
19
+ content: " ";
20
+ display: table;
21
+ }
22
+ /* line 102, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_global.scss */
23
+ .row:after {
24
+ clear: both;
25
+ }
26
+ /* line 121, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
27
+ .row.collapse .column,
28
+ .row.collapse .columns {
29
+ position: relative;
30
+ padding-left: 0;
31
+ padding-right: 0;
32
+ float: left;
33
+ }
34
+
35
+ /* line 130, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
36
+ .column,
37
+ .columns {
38
+ position: relative;
39
+ padding-left: 0.9375em;
40
+ padding-right: 0.9375em;
41
+ width: 100%;
42
+ float: left;
43
+ }
44
+
45
+ @media only screen {
46
+ /* line 135, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
47
+ .column,
48
+ .columns {
49
+ position: relative;
50
+ padding-left: 0.9375em;
51
+ padding-right: 0.9375em;
52
+ float: left;
53
+ }
54
+
55
+ /* line 149, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
56
+ .column.small-centered,
57
+ .columns.small-centered {
58
+ position: relative;
59
+ margin-left: auto;
60
+ margin-right: auto;
61
+ float: none !important;
62
+ }
63
+ }
64
+ /* Styles for screens that are atleast 768px; */
65
+ @media only screen and (min-width: 48em) {
66
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
67
+ .large-1 {
68
+ position: relative;
69
+ width: 8.33333%;
70
+ }
71
+
72
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
73
+ .large-2 {
74
+ position: relative;
75
+ width: 16.66667%;
76
+ }
77
+
78
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
79
+ .large-3 {
80
+ position: relative;
81
+ width: 25%;
82
+ }
83
+
84
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
85
+ .large-4 {
86
+ position: relative;
87
+ width: 33.33333%;
88
+ }
89
+
90
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
91
+ .large-5 {
92
+ position: relative;
93
+ width: 41.66667%;
94
+ }
95
+
96
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
97
+ .large-6 {
98
+ position: relative;
99
+ width: 50%;
100
+ }
101
+
102
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
103
+ .large-7 {
104
+ position: relative;
105
+ width: 58.33333%;
106
+ }
107
+
108
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
109
+ .large-8 {
110
+ position: relative;
111
+ width: 66.66667%;
112
+ }
113
+
114
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
115
+ .large-9 {
116
+ position: relative;
117
+ width: 75%;
118
+ }
119
+
120
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
121
+ .large-10 {
122
+ position: relative;
123
+ width: 83.33333%;
124
+ }
125
+
126
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
127
+ .large-11 {
128
+ position: relative;
129
+ width: 91.66667%;
130
+ }
131
+
132
+ /* line 156, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
133
+ .large-12 {
134
+ position: relative;
135
+ width: 100%;
136
+ }
137
+
138
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
139
+ .row .large-offset-1 {
140
+ position: relative;
141
+ margin-left: 8.33333%;
142
+ }
143
+
144
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
145
+ .row .large-offset-2 {
146
+ position: relative;
147
+ margin-left: 16.66667%;
148
+ }
149
+
150
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
151
+ .row .large-offset-3 {
152
+ position: relative;
153
+ margin-left: 25%;
154
+ }
155
+
156
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
157
+ .row .large-offset-4 {
158
+ position: relative;
159
+ margin-left: 33.33333%;
160
+ }
161
+
162
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
163
+ .row .large-offset-5 {
164
+ position: relative;
165
+ margin-left: 41.66667%;
166
+ }
167
+
168
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
169
+ .row .large-offset-6 {
170
+ position: relative;
171
+ margin-left: 50%;
172
+ }
173
+
174
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
175
+ .row .large-offset-7 {
176
+ position: relative;
177
+ margin-left: 58.33333%;
178
+ }
179
+
180
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
181
+ .row .large-offset-8 {
182
+ position: relative;
183
+ margin-left: 66.66667%;
184
+ }
185
+
186
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
187
+ .row .large-offset-9 {
188
+ position: relative;
189
+ margin-left: 75%;
190
+ }
191
+
192
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
193
+ .row .large-offset-10 {
194
+ position: relative;
195
+ margin-left: 83.33333%;
196
+ }
197
+
198
+ /* line 160, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
199
+ .row .large-offset-11 {
200
+ position: relative;
201
+ margin-left: 91.66667%;
202
+ }
203
+
204
+
205
+
206
+ /* line 174, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
207
+ .column.large-centered,
208
+ .columns.large-centered {
209
+ position: relative;
210
+ margin-left: auto;
211
+ margin-right: auto;
212
+ float: none !important;
213
+ }
214
+
215
+ /* line 177, ../../../../../../../usr/lib/ruby/gems/1.8/gems/zurb-foundation-4.1.6/scss/foundation/components/_grid.scss */
216
+ .column.large-uncentered,
217
+ .columns.large-uncentered {
218
+ margin-left: 0;
219
+ margin-right: 0;
220
+ float: none;
221
+ }
222
+ }
app/assets/css/vendor/jquery.powertip.min.css ADDED
@@ -0,0 +1 @@
 
1
+ #powerTip{cursor:default;background-color:#333;background-color:rgba(0,0,0,.8);border-radius:6px;color:#fff;display:none;padding:10px;position:absolute;white-space:nowrap;z-index:2147483647}#powerTip:before{content:"";position:absolute}#powerTip.n:before,#powerTip.s:before{border-right:5px solid transparent;border-left:5px solid transparent;left:50%;margin-left:-5px}#powerTip.e:before,#powerTip.w:before{border-bottom:5px solid transparent;border-top:5px solid transparent;margin-top:-5px;top:50%}#powerTip.n:before{border-top:10px solid #333;border-top:10px solid rgba(0,0,0,.8);bottom:-10px}#powerTip.e:before{border-right:10px solid #333;border-right:10px solid rgba(0,0,0,.8);left:-10px}#powerTip.s:before{border-bottom:10px solid #333;border-bottom:10px solid rgba(0,0,0,.8);top:-10px}#powerTip.w:before{border-left:10px solid #333;border-left:10px solid rgba(0,0,0,.8);right:-10px}#powerTip.ne:before,#powerTip.se:before{border-right:10px solid transparent;border-left:0;left:10px}#powerTip.nw:before,#powerTip.sw:before{border-left:10px solid transparent;border-right:0;right:10px}#powerTip.ne:before,#powerTip.nw:before{border-top:10px solid #333;border-top:10px solid rgba(0,0,0,.8);bottom:-10px}#powerTip.se:before,#powerTip.sw:before{border-bottom:10px solid #333;border-bottom:10px solid rgba(0,0,0,.8);top:-10px}#powerTip.nw-alt:before,#powerTip.ne-alt:before,#powerTip.sw-alt:before,#powerTip.se-alt:before{border-top:10px solid #333;border-top:10px solid rgba(0,0,0,.8);bottom:-10px;border-left:5px solid transparent;border-right:5px solid transparent;left:10px}#powerTip.ne-alt:before{left:auto;right:10px}#powerTip.sw-alt:before,#powerTip.se-alt:before{border-top:0;border-bottom:10px solid #333;border-bottom:10px solid rgba(0,0,0,.8);bottom:auto;top:-10px}#powerTip.se-alt:before{left:auto;right:10px}
app/assets/css/vendor/jquery.sliderTabs.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ui-slider-tabs{}.ui-slider-tabs-list-wrapper{ position: relative;width:100%;font-family:Arial,sans-serif;margin:0 0 -1px 0;z-index:50;}.ui-slider-tabs-list-wrapper.bottom{ margin: -1px 0 0 0;}.ui-slider-tabs-list-container{ overflow: hidden;}.ui-slider-tabs-list{ padding:0;margin:0 0 0 0;list-style: none;}.ui-slider-tabs-list li{ display: inline-block;border-bottom:1px solid #cfcfcf;border-right:1px solid #cfcfcf;border-top:1px solid #cfcfcf;margin:0;font-size:13px;font-weight:bold;background:#fcfcfc;background: -moz-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#fcfcfc),color-stop(100%,#f5f5f5));background: -webkit-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -o-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -ms-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc',endColorstr='#f5f5f5',GradientType=0 );}.ui-slider-tabs-list li a{ display:block;padding:8px 15px;text-decoration: none;color:#555;text-shadow:0px 1px 0px #fff;margin:0;}.ui-slider-tabs-list li a:hover{ color:#000;}.ui-slider-tabs-list li.selected{ border-bottom-color:#fff;border-top-color:#cfcfcf;background:#ffffff;background: -moz-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(100%,#ffffff));background: -webkit-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -o-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -ms-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: linear-gradient(top,#ffffff 0%,#ffffff 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff',endColorstr='#ffffff',GradientType=0 );}.ui-slider-tabs-list-wrapper.bottom .ui-slider-tabs-list li.selected{ border-top-color:#fff;border-bottom-color:#cfcfcf;}.ui-slider-tabs-list li.selected a{ cursor:default;color:#000;}.ui-slider-tabs-list li:first-of-type{ border-left:1px solid #cfcfcf;}.ui-slider-tabs-content-container{ position: relative;border:1px solid #cfcfcf;z-index:1;overflow: hidden;background-color:#fff;}.ui-slider-tab-content{ position:absolute;display: none;top:0;left:0;padding:10px;}.ui-slider-left-arrow,.ui-slider-right-arrow,.ui-slider-left-arrow.edge:hover,.ui-slider-right-arrow.edge:hover{ display:block;position:absolute;border:1px solid #cfcfcf;background:#fcfcfc;background: -moz-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#fcfcfc),color-stop(100%,#f5f5f5));background: -webkit-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -o-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: -ms-linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);background: linear-gradient(top,#fcfcfc 0%,#f5f5f5 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc',endColorstr='#f5f5f5',GradientType=0 );}.ui-slider-left-arrow:hover,.ui-slider-right-arrow:hover{ background:#ffffff;background: -moz-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(100%,#ffffff));background: -webkit-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -o-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: -ms-linear-gradient(top,#ffffff 0%,#ffffff 100%);background: linear-gradient(top,#ffffff 0%,#ffffff 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff',endColorstr='#ffffff',GradientType=0 );}.ui-slider-left-arrow{ left:0;top:0;box-shadow:2px 0px 1px rgba(0,0,0,.06);border-top-left-radius:4px;}.ui-slider-left-arrow div{ background-image: url('../img/leftArrow.png');background-repeat: no-repeat;background-position:center center;height: inherit;}.ui-slider-left-arrow.edge div{ opacity: .25;}.ui-slider-left-arrow.edge{ box-shadow: none;cursor:default;}.ui-slider-tabs-list-wrapper.bottom .ui-slider-left-arrow{ border-top-left-radius:0;border-bottom-left-radius:4px;}.ui-slider-right-arrow{ top:0;right:0;box-shadow: -2px 0px 1px rgba(0,0,0,.06);border-top-right-radius:4px;}.ui-slider-right-arrow div{ background-image: url('../img/rightArrow.png');background-repeat: no-repeat;background-position:center center;height: inherit;}.ui-slider-right-arrow.edge div{ opacity: .25;}.ui-slider-right-arrow.edge{ box-shadow: none;cursor:default;}.ui-slider-tabs-list-wrapper.bottom .ui-slider-right-arrow{ border-top-right-radius:0;border-bottom-right-radius:4px;}.ui-slider-tabs-indicator-container{ position:absolute;bottom:0;left:0;width:100%;text-align:center;}.ui-slider-tabs-indicator{ width:10px;height:10px;background-image: url('../img/indicator.png');background-repeat: no-repeat;display: inline-block;margin-right:3px;cursor: pointer;}.ui-slider-tabs-indicator.selected{ background-image: url('../img/indicatorActive.png');}.ui-slider-tabs-leftPanelArrow{ position:absolute;left:0px;width:30px;height:35px;background-image: url('../img/leftPanelArrow.png');background-repeat: no-repeat;background-position:center center;cursor: pointer;opacity:0.5;-moz-opacity:0.5;filter:alpha(opacity=5);}.ui-slider-tabs-rightPanelArrow{ position:absolute;right:0px;width:30px;height:35px;background-image: url('../img/rightPanelArrow.png');background-repeat: no-repeat;background-position:center center;cursor: pointer;opacity:0.5;-moz-opacity:0.5;filter:alpha(opacity=5);}.ui-slider-tabs-rightPanelArrow.showOnHover,.ui-slider-tabs-leftPanelArrow.showOnHover{ opacity:0;display: none;}.ui-slider-tabs-content-container:hover .ui-slider-tabs-rightPanelArrow.showOnHover,.ui-slider-tabs-content-container:hover .ui-slider-tabs-leftPanelArrow.showOnHover{ opacity: .5;display: inline-block;}.ui-slider-tabs-content-container .ui-slider-tabs-rightPanelArrow:hover,.ui-slider-tabs-content-container .ui-slider-tabs-leftPanelArrow:hover,.ui-slider-tabs-content-container .ui-slider-tabs-rightPanelArrow.showOnHover:hover,.ui-slider-tabs-content-container .ui-slider-tabs-leftPanelArrow.showOnHover:hover{ opacity:1;}
app/assets/js/admin.js CHANGED
@@ -75,7 +75,7 @@ jQuery(document).ready(function($) {
75
  var error_msg = "";
76
  var general_videothumb_val = 0;
77
  if( general_videothumb.val() <= 0 ) {
78
- error_msg += "Number of video thumbnails to be generated should be greater than 0 in image sizes settings. Setting it to round value 2.";
79
  general_videothumb_val = 2;
80
  } else if( !reg.test( general_videothumb.val() ) ) {
81
  error_msg += 'Invalid value for Number of video thumbnails in image sizes settings. Setting it to round value ' + Math.round( general_videothumb.val() ) + ".";
@@ -137,32 +137,41 @@ jQuery(document).ready(function($) {
137
  }
138
  });
139
 
140
- jQuery(document).on('click', '#api-key-submit', function(e) {
141
  e.preventDefault();
142
- jQuery(this).after('<img style="margin: 0 0 0 10px" src="' + rtmedia_admin_url + 'images/wpspin_light.gif" />')
 
 
 
 
143
  var data = {
144
  action: 'rtmedia_enter_api_key',
145
- apikey: jQuery('#new-api-key').val()
146
  };
147
 
148
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
149
- jQuery.getJSON(ajaxurl, data, function(response) {
150
- if (response.error === undefined && response.apikey) {
151
  var tempUrl = window.location.href;
152
  var hash = window.location.hash;
153
- tempUrl = tempUrl.replace(hash, '');
154
- if (tempUrl.toString().indexOf('&apikey=' + response.apikey) == -1)
 
155
  tempUrl += '&apikey=' + response.apikey;
156
- if (tempUrl.toString().indexOf('&update=true') == -1)
 
157
  tempUrl += '&update=true';
 
 
158
  document.location.href = tempUrl + hash;
159
-
160
  } else {
161
- jQuery('#settings-error-api-key-error').remove();
162
- jQuery('h2:first').after('<div class="error" id="settings-error-api-key-error"><p>' + response.error + '</p></div>');
163
  }
164
- });
165
- });
 
 
166
 
167
  jQuery(document).on('click', '#disable-encoding', function(e) {
168
  e.preventDefault();
75
  var error_msg = "";
76
  var general_videothumb_val = 0;
77
  if( general_videothumb.val() <= 0 ) {
78
+ error_msg += "Number of video thumbnails to be generated should be greater than 0 in image sizes settings. Setting it to default value 2.";
79
  general_videothumb_val = 2;
80
  } else if( !reg.test( general_videothumb.val() ) ) {
81
  error_msg += 'Invalid value for Number of video thumbnails in image sizes settings. Setting it to round value ' + Math.round( general_videothumb.val() ) + ".";
137
  }
138
  });
139
 
140
+ jQuery( document ).on( 'click', '#api-key-submit', function( e ) {
141
  e.preventDefault();
142
+
143
+ if( jQuery( this ).next( 'img' ).length == 0 ) {
144
+ jQuery( this ).after( '<img style="margin: 0 0 0 10px" src="' + rtmedia_admin_url + 'images/wpspin_light.gif" />' );
145
+ }
146
+
147
  var data = {
148
  action: 'rtmedia_enter_api_key',
149
+ apikey: jQuery( '#new-api-key' ).val()
150
  };
151
 
152
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
153
+ jQuery.getJSON( ajaxurl, data, function( response ) {
154
+ if ( response.error === undefined && response.apikey ) {
155
  var tempUrl = window.location.href;
156
  var hash = window.location.hash;
157
+ tempUrl = tempUrl.replace( hash, '' );
158
+
159
+ if ( tempUrl.toString().indexOf( '&apikey=' + response.apikey ) == -1 ) {
160
  tempUrl += '&apikey=' + response.apikey;
161
+ }
162
+ if ( tempUrl.toString().indexOf( '&update=true' ) == -1 ) {
163
  tempUrl += '&update=true';
164
+ }
165
+
166
  document.location.href = tempUrl + hash;
 
167
  } else {
168
+ jQuery( '#settings-error-api-key-error' ).remove();
169
+ jQuery( 'h2:first' ).after( '<div class="error" id="settings-error-api-key-error"><p>' + response.error + '</p></div>' );
170
  }
171
+
172
+ jQuery( '#api-key-submit' ).next( 'img' ).remove();
173
+ } );
174
+ } );
175
 
176
  jQuery(document).on('click', '#disable-encoding', function(e) {
177
  e.preventDefault();
app/assets/js/vendor/bootstrap-switch.js ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ============================================================
2
+ * bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru
3
+ * http://www.larentis.eu/switch/
4
+ * ============================================================
5
+ * Licensed under the Apache License, Version 2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ * ============================================================ */
8
+
9
+ !function ($) {
10
+ "use strict";
11
+
12
+ $.fn['bootstrapSwitch'] = function (method) {
13
+ var methods = {
14
+ init: function () {
15
+ return this.each(function () {
16
+ var $element = $(this)
17
+ , $div
18
+ , $switchLeft
19
+ , $switchRight
20
+ , $label
21
+ , myClasses = ""
22
+ , classes = $element.attr('class')
23
+ , color
24
+ , moving
25
+ , onLabel = "ON"
26
+ , offLabel = "OFF"
27
+ , icon = false;
28
+
29
+ $.each(['switch-mini', 'switch-small', 'switch-large'], function (i, el) {
30
+ if (classes.indexOf(el) >= 0)
31
+ myClasses = el;
32
+ });
33
+
34
+ $element.addClass('has-switch');
35
+
36
+ if ($element.data('on') !== undefined)
37
+ color = "switch-" + $element.data('on');
38
+
39
+ if ($element.data('on-label') !== undefined)
40
+ onLabel = $element.data('on-label');
41
+
42
+ if ($element.data('off-label') !== undefined)
43
+ offLabel = $element.data('off-label');
44
+
45
+ if ($element.data('icon') !== undefined)
46
+ icon = $element.data('icon');
47
+
48
+ $switchLeft = $('<span>')
49
+ .addClass("switch-left")
50
+ .addClass(myClasses)
51
+ .addClass(color)
52
+ .html(onLabel);
53
+
54
+ color = '';
55
+ if ($element.data('off') !== undefined)
56
+ color = "switch-" + $element.data('off');
57
+
58
+ $switchRight = $('<span>')
59
+ .addClass("switch-right")
60
+ .addClass(myClasses)
61
+ .addClass(color)
62
+ .html(offLabel);
63
+
64
+ $label = $('<label>')
65
+ .html("&nbsp;")
66
+ .addClass(myClasses)
67
+ .attr('for', $element.find('input').attr('id'));
68
+
69
+ if (icon) {
70
+ $label.html('<i class="' + icon + '"></i>');
71
+ }
72
+
73
+ $div = $element.find(':checkbox').wrap($('<div>')).parent().data('animated', false);
74
+
75
+ if ($element.data('animated') !== false)
76
+ $div.addClass('switch-animate').data('animated', true);
77
+
78
+ $div
79
+ .append($switchLeft)
80
+ .append($label)
81
+ .append($switchRight);
82
+
83
+ $element.find('>div').addClass(
84
+ $element.find('input').is(':checked') ? 'switch-on' : 'switch-off'
85
+ );
86
+
87
+ if ($element.find('input').is(':disabled'))
88
+ $(this).addClass('deactivate');
89
+
90
+ var changeStatus = function ($this) {
91
+ $($this).siblings('label').trigger('mousedown').trigger('mouseup').trigger('click');
92
+ };
93
+
94
+ $element.on('keydown', function (e) {
95
+ if (e.keyCode === 32) {
96
+ e.stopImmediatePropagation();
97
+ e.preventDefault();
98
+ changeStatus($(e.target).find('span:first'));
99
+ }
100
+ });
101
+
102
+ $switchLeft.on('click', function (e) {
103
+ changeStatus($(this));
104
+ });
105
+
106
+ $switchRight.on('click', function (e) {
107
+ changeStatus($(this));
108
+ });
109
+
110
+ $element.find('input').on('change', function (e) {
111
+ var $this = $(this)
112
+ , $element = $this.parent()
113
+ , thisState = $this.is(':checked')
114
+ , state = $element.is('.switch-off');
115
+
116
+ e.preventDefault();
117
+
118
+ $element.css('left', '');
119
+
120
+ if (state === thisState) {
121
+
122
+ if (thisState)
123
+ $element.removeClass('switch-off').addClass('switch-on');
124
+ else $element.removeClass('switch-on').addClass('switch-off');
125
+
126
+ if ($element.data('animated') !== false)
127
+ $element.addClass("switch-animate");
128
+
129
+ $element.parent().trigger('switch-change', {'el': $this, 'value': thisState})
130
+ }
131
+ });
132
+
133
+ $element.find('label').on('mousedown touchstart', function (e) {
134
+ var $this = $(this);
135
+ moving = false;
136
+
137
+ e.preventDefault();
138
+ e.stopImmediatePropagation();
139
+
140
+ $this.closest('div').removeClass('switch-animate');
141
+
142
+ if ($this.closest('.has-switch').is('.deactivate'))
143
+ $this.unbind('click');
144
+ else {
145
+ $this.on('mousemove touchmove', function (e) {
146
+ var $element = $(this).closest('.rt-switch')
147
+ , relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left
148
+ , percent = (relativeX / $element.width()) * 100
149
+ , left = 25
150
+ , right = 75;
151
+
152
+ moving = true;
153
+
154
+ if (percent < left)
155
+ percent = left;
156
+ else if (percent > right)
157
+ percent = right;
158
+
159
+ $element.find('>div').css('left', (percent - right) + "%")
160
+ });
161
+
162
+ $this.on('click touchend', function (e) {
163
+ var $this = $(this)
164
+ , $target = $(e.target)
165
+ , $myCheckBox = $target.siblings('input');
166
+
167
+ e.stopImmediatePropagation();
168
+ e.preventDefault();
169
+
170
+ $this.unbind('mouseleave');
171
+
172
+ if (moving)
173
+ $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25));
174
+ else $myCheckBox.prop("checked", !$myCheckBox.is(":checked"));
175
+
176
+ moving = false;
177
+ $myCheckBox.trigger('change');
178
+ });
179
+
180
+ $this.on('mouseleave', function (e) {
181
+ var $this = $(this)
182
+ , $myCheckBox = $this.siblings('input');
183
+
184
+ e.preventDefault();
185
+ e.stopImmediatePropagation();
186
+
187
+ $this.unbind('mouseleave');
188
+ $this.trigger('mouseup');
189
+
190
+ $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25)).trigger('change');
191
+ });
192
+
193
+ $this.on('mouseup', function (e) {
194
+ e.stopImmediatePropagation();
195
+ e.preventDefault();
196
+
197
+ $(this).unbind('mousemove');
198
+ });
199
+ }
200
+ });
201
+ }
202
+ );
203
+ },
204
+ toggleActivation: function () {
205
+ $(this).toggleClass('deactivate');
206
+ },
207
+ isActive: function () {
208
+ return !$(this).hasClass('deactivate');
209
+ },
210
+ setActive: function (active) {
211
+ if (active)
212
+ $(this).removeClass('deactivate');
213
+ else $(this).addClass('deactivate');
214
+ },
215
+ toggleState: function (skipOnChange) {
216
+ var $input = $(this).find('input:checkbox');
217
+ $input.prop('checked', !$input.is(':checked')).trigger('change', skipOnChange);
218
+ },
219
+ setState: function (value, skipOnChange) {
220
+ $(this).find('input:checkbox').prop('checked', value).trigger('change', skipOnChange);
221
+ },
222
+ status: function () {
223
+ return $(this).find('input:checkbox').is(':checked');
224
+ },
225
+ destroy: function () {
226
+ var $div = $(this).find('div')
227
+ , $checkbox;
228
+
229
+ $div.find(':not(input:checkbox)').remove();
230
+
231
+ $checkbox = $div.children();
232
+ $checkbox.unwrap().unwrap();
233
+
234
+ $checkbox.unbind('change');
235
+
236
+ return $checkbox;
237
+ }
238
+ };
239
+
240
+ if (methods[method])
241
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
242
+ else if (typeof method === 'object' || !method)
243
+ return methods.init.apply(this, arguments);
244
+ else
245
+ $.error('Method ' + method + ' does not exist!');
246
+ };
247
+ }(jQuery);
248
+
249
+ jQuery(function () {
250
+ jQuery('.rt-switch')['bootstrapSwitch']();
251
+ jQuery(document).on('click' ,'.switch-left,.switch-right',function(e){
252
+ jQuery(this).siblings('label').trigger('click');
253
+ })
254
+
255
+ });
app/assets/js/vendor/jquery.observehashchange.pack.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jQuery.observeHashChange (Version: 1.0)
3
+ *
4
+ * http://finnlabs.github.com/jquery.observehashchange/
5
+ *
6
+ * Copyright (c) 2009, Gregor Schmidt, Finn GmbH
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a
9
+ * copy of this software and associated documentation files (the "Software"),
10
+ * to deal in the Software without restriction, including without limitation
11
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ * and/or sell copies of the Software, and to permit persons to whom the
13
+ * Software is furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
+ * DEALINGS IN THE SOFTWARE.
25
+ **/
26
+ (function($) {
27
+ $.fn.hashchange = function(fn) {
28
+ $(window).bind("jQuery.hashchange", fn);
29
+ return this;
30
+ };
31
+
32
+ $.observeHashChange = function(options) {
33
+ var opts = $.extend({}, $.observeHashChange.defaults, options);
34
+ if (isHashChangeEventSupported()) {
35
+ nativeVersion();
36
+ }
37
+ else {
38
+ setIntervalVersion(opts);
39
+ }
40
+ };
41
+
42
+ var locationHash = null;
43
+ var functionStore = null;
44
+ var interval = 0;
45
+
46
+ $.observeHashChange.defaults = {
47
+ interval : 500
48
+ };
49
+
50
+ function isHashChangeEventSupported() {
51
+ return "onhashchange" in window;
52
+ }
53
+
54
+ function nativeVersion() {
55
+ locationHash = document.location.hash;
56
+ window.onhashchange = onhashchangeHandler;
57
+ }
58
+
59
+ function onhashchangeHandler(e, data) {
60
+ var oldHash = locationHash;
61
+ locationHash = document.location.hash;
62
+ $(window).trigger("jQuery.hashchange", {before: oldHash, after: locationHash});
63
+ }
64
+
65
+ function setIntervalVersion(opts) {
66
+ if (locationHash == null) {
67
+ locationHash = document.location.hash;
68
+ }
69
+ if (functionStore != null) {
70
+ clearInterval(functionStore);
71
+ }
72
+ if (interval != opts.interval) {
73
+ functionStore = setInterval(checkLocationHash, opts.interval);
74
+ interval = opts.interval;
75
+ }
76
+ }
77
+
78
+ function checkLocationHash() {
79
+ if (locationHash != document.location.hash) {
80
+ var oldHash = locationHash;
81
+ locationHash = document.location.hash;
82
+ $(window).trigger("jQuery.hashchange", {before: oldHash, after: locationHash});
83
+ }
84
+ }
85
+
86
+ $.observeHashChange();
87
+ })(jQuery);
app/assets/js/vendor/jquery.powertip.min.js ADDED
@@ -0,0 +1,1166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ PowerTip - v1.2.0 - 2013-04-03
3
+ http://stevenbenner.github.com/jquery-powertip/
4
+ Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
5
+ Released under MIT license.
6
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
7
+ */
8
+ (function(factory) {
9
+ if (typeof define === 'function' && define.amd) {
10
+ // AMD. Register as an anonymous module.
11
+ define(['jquery'], factory);
12
+ } else {
13
+ // Browser globals
14
+ factory(jQuery);
15
+ }
16
+ }(function($) {
17
+
18
+ // useful private variables
19
+ var $document = $(document),
20
+ $window = $(window),
21
+ $body = $('body');
22
+
23
+ // constants
24
+ var DATA_DISPLAYCONTROLLER = 'displayController',
25
+ DATA_HASACTIVEHOVER = 'hasActiveHover',
26
+ DATA_FORCEDOPEN = 'forcedOpen',
27
+ DATA_HASMOUSEMOVE = 'hasMouseMove',
28
+ DATA_MOUSEONTOTIP = 'mouseOnToPopup',
29
+ DATA_ORIGINALTITLE = 'originalTitle',
30
+ DATA_POWERTIP = 'powertip',
31
+ DATA_POWERTIPJQ = 'powertipjq',
32
+ DATA_POWERTIPTARGET = 'powertiptarget',
33
+ RAD2DEG = 180 / Math.PI;
34
+
35
+ /**
36
+ * Session data
37
+ * Private properties global to all powerTip instances
38
+ */
39
+ var session = {
40
+ isTipOpen: false,
41
+ isFixedTipOpen: false,
42
+ isClosing: false,
43
+ tipOpenImminent: false,
44
+ activeHover: null,
45
+ currentX: 0,
46
+ currentY: 0,
47
+ previousX: 0,
48
+ previousY: 0,
49
+ desyncTimeout: null,
50
+ mouseTrackingActive: false,
51
+ delayInProgress: false,
52
+ windowWidth: 0,
53
+ windowHeight: 0,
54
+ scrollTop: 0,
55
+ scrollLeft: 0
56
+ };
57
+
58
+ /**
59
+ * Collision enumeration
60
+ * @enum {number}
61
+ */
62
+ var Collision = {
63
+ none: 0,
64
+ top: 1,
65
+ bottom: 2,
66
+ left: 4,
67
+ right: 8
68
+ };
69
+
70
+ /**
71
+ * Display hover tooltips on the matched elements.
72
+ * @param {(Object|string)} opts The options object to use for the plugin, or
73
+ * the name of a method to invoke on the first matched element.
74
+ * @param {*=} [arg] Argument for an invoked method (optional).
75
+ * @return {jQuery} jQuery object for the matched selectors.
76
+ */
77
+ $.fn.powerTip = function(opts, arg) {
78
+ // don't do any work if there were no matched elements
79
+ if (!this.length) {
80
+ return this;
81
+ }
82
+
83
+ // handle api method calls on the plugin, e.g. powerTip('hide')
84
+ if ($.type(opts) === 'string' && $.powerTip[opts]) {
85
+ return $.powerTip[opts].call(this, this, arg);
86
+ }
87
+
88
+ // extend options and instantiate TooltipController
89
+ var options = $.extend({}, $.fn.powerTip.defaults, opts),
90
+ tipController = new TooltipController(options);
91
+
92
+ // hook mouse and viewport dimension tracking
93
+ initTracking();
94
+
95
+ // setup the elements
96
+ this.each(function elementSetup() {
97
+ var $this = $(this),
98
+ dataPowertip = $this.data(DATA_POWERTIP),
99
+ dataElem = $this.data(DATA_POWERTIPJQ),
100
+ dataTarget = $this.data(DATA_POWERTIPTARGET),
101
+ title;
102
+
103
+ // handle repeated powerTip calls on the same element by destroying the
104
+ // original instance hooked to it and replacing it with this call
105
+ if ($this.data(DATA_DISPLAYCONTROLLER)) {
106
+ $.powerTip.destroy($this);
107
+ }
108
+
109
+ // attempt to use title attribute text if there is no data-powertip,
110
+ // data-powertipjq or data-powertiptarget. If we do use the title
111
+ // attribute, delete the attribute so the browser will not show it
112
+ title = $this.attr('title');
113
+ if (!dataPowertip && !dataTarget && !dataElem && title) {
114
+ $this.data(DATA_POWERTIP, title);
115
+ $this.data(DATA_ORIGINALTITLE, title);
116
+ $this.removeAttr('title');
117
+ }
118
+
119
+ // create hover controllers for each element
120
+ $this.data(
121
+ DATA_DISPLAYCONTROLLER,
122
+ new DisplayController($this, options, tipController)
123
+ );
124
+ });
125
+
126
+ // attach events to matched elements if the manual options is not enabled
127
+ if (!options.manual) {
128
+ this.on({
129
+ // mouse events
130
+ 'mouseenter.powertip': function elementMouseEnter(event) {
131
+ $.powerTip.show(this, event);
132
+ },
133
+ 'mouseleave.powertip': function elementMouseLeave() {
134
+ $.powerTip.hide(this);
135
+ },
136
+ // keyboard events
137
+ 'focus.powertip': function elementFocus() {
138
+ $.powerTip.show(this);
139
+ },
140
+ 'blur.powertip': function elementBlur() {
141
+ $.powerTip.hide(this, true);
142
+ },
143
+ 'keydown.powertip': function elementKeyDown(event) {
144
+ // close tooltip when the escape key is pressed
145
+ if (event.keyCode === 27) {
146
+ $.powerTip.hide(this, true);
147
+ }
148
+ }
149
+ });
150
+ }
151
+
152
+ return this;
153
+ };
154
+
155
+ /**
156
+ * Default options for the powerTip plugin.
157
+ */
158
+ $.fn.powerTip.defaults = {
159
+ fadeInTime: 200,
160
+ fadeOutTime: 100,
161
+ followMouse: false,
162
+ popupId: 'powerTip',
163
+ intentSensitivity: 7,
164
+ intentPollInterval: 100,
165
+ closeDelay: 100,
166
+ placement: 'n',
167
+ smartPlacement: false,
168
+ offset: 10,
169
+ mouseOnToPopup: false,
170
+ manual: false
171
+ };
172
+
173
+ /**
174
+ * Default smart placement priority lists.
175
+ * The first item in the array is the highest priority, the last is the lowest.
176
+ * The last item is also the default, which will be used if all previous options
177
+ * do not fit.
178
+ */
179
+ $.fn.powerTip.smartPlacementLists = {
180
+ n: ['n', 'ne', 'nw', 's'],
181
+ e: ['e', 'ne', 'se', 'w', 'nw', 'sw', 'n', 's', 'e'],
182
+ s: ['s', 'se', 'sw', 'n'],
183
+ w: ['w', 'nw', 'sw', 'e', 'ne', 'se', 'n', 's', 'w'],
184
+ nw: ['nw', 'w', 'sw', 'n', 's', 'se', 'nw'],
185
+ ne: ['ne', 'e', 'se', 'n', 's', 'sw', 'ne'],
186
+ sw: ['sw', 'w', 'nw', 's', 'n', 'ne', 'sw'],
187
+ se: ['se', 'e', 'ne', 's', 'n', 'nw', 'se'],
188
+ 'nw-alt': ['nw-alt', 'n', 'ne-alt', 'sw-alt', 's', 'se-alt', 'w', 'e'],
189
+ 'ne-alt': ['ne-alt', 'n', 'nw-alt', 'se-alt', 's', 'sw-alt', 'e', 'w'],
190
+ 'sw-alt': ['sw-alt', 's', 'se-alt', 'nw-alt', 'n', 'ne-alt', 'w', 'e'],
191
+ 'se-alt': ['se-alt', 's', 'sw-alt', 'ne-alt', 'n', 'nw-alt', 'e', 'w']
192
+ };
193
+
194
+ /**
195
+ * Public API
196
+ */
197
+ $.powerTip = {
198
+ /**
199
+ * Attempts to show the tooltip for the specified element.
200
+ * @param {jQuery|Element} element The element to open the tooltip for.
201
+ * @param {jQuery.Event=} event jQuery event for hover intent and mouse
202
+ * tracking (optional).
203
+ */
204
+ show: function apiShowTip(element, event) {
205
+ if (event) {
206
+ trackMouse(event);
207
+ session.previousX = event.pageX;
208
+ session.previousY = event.pageY;
209
+ $(element).data(DATA_DISPLAYCONTROLLER).show();
210
+ } else {
211
+ $(element).first().data(DATA_DISPLAYCONTROLLER).show(true, true);
212
+ }
213
+ return element;
214
+ },
215
+
216
+ /**
217
+ * Repositions the tooltip on the element.
218
+ * @param {jQuery|Element} element The element the tooltip is shown for.
219
+ */
220
+ reposition: function apiResetPosition(element) {
221
+ $(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();
222
+ return element;
223
+ },
224
+
225
+ /**
226
+ * Attempts to close any open tooltips.
227
+ * @param {(jQuery|Element)=} element The element with the tooltip that
228
+ * should be closed (optional).
229
+ * @param {boolean=} immediate Disable close delay (optional).
230
+ */
231
+ hide: function apiCloseTip(element, immediate) {
232
+ if (element) {
233
+ $(element).first().data(DATA_DISPLAYCONTROLLER).hide(immediate);
234
+ } else {
235
+ if (session.activeHover) {
236
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true);
237
+ }
238
+ }
239
+ return element;
240
+ },
241
+
242
+ /**
243
+ * Destroy and roll back any powerTip() instance on the specified element.
244
+ * @param {jQuery|Element} element The element with the powerTip instance.
245
+ */
246
+ destroy: function apiDestroy(element) {
247
+ $(element).off('.powertip').each(function destroy() {
248
+ var $this = $(this),
249
+ dataAttributes = [
250
+ DATA_ORIGINALTITLE,
251
+ DATA_DISPLAYCONTROLLER,
252
+ DATA_HASACTIVEHOVER,
253
+ DATA_FORCEDOPEN
254
+ ];
255
+
256
+ if ($this.data(DATA_ORIGINALTITLE)) {
257
+ $this.attr('title', $this.data(DATA_ORIGINALTITLE));
258
+ dataAttributes.push(DATA_POWERTIP);
259
+ }
260
+
261
+ $this.removeData(dataAttributes);
262
+ });
263
+ return element;
264
+ }
265
+ };
266
+
267
+ // API aliasing
268
+ $.powerTip.showTip = $.powerTip.show;
269
+ $.powerTip.closeTip = $.powerTip.hide;
270
+
271
+ /**
272
+ * Creates a new CSSCoordinates object.
273
+ * @private
274
+ * @constructor
275
+ */
276
+ function CSSCoordinates() {
277
+ var me = this;
278
+
279
+ // initialize object properties
280
+ me.top = 'auto';
281
+ me.left = 'auto';
282
+ me.right = 'auto';
283
+ me.bottom = 'auto';
284
+
285
+ /**
286
+ * Set a property to a value.
287
+ * @private
288
+ * @param {string} property The name of the property.
289
+ * @param {number} value The value of the property.
290
+ */
291
+ me.set = function(property, value) {
292
+ if ($.isNumeric(value)) {
293
+ me[property] = Math.round(value);
294
+ }
295
+ };
296
+ }
297
+
298
+ /**
299
+ * Creates a new tooltip display controller.
300
+ * @private
301
+ * @constructor
302
+ * @param {jQuery} element The element that this controller will handle.
303
+ * @param {Object} options Options object containing settings.
304
+ * @param {TooltipController} tipController The TooltipController object for
305
+ * this instance.
306
+ */
307
+ function DisplayController(element, options, tipController) {
308
+ var hoverTimer = null;
309
+
310
+ /**
311
+ * Begins the process of showing a tooltip.
312
+ * @private
313
+ * @param {boolean=} immediate Skip intent testing (optional).
314
+ * @param {boolean=} forceOpen Ignore cursor position and force tooltip to
315
+ * open (optional).
316
+ */
317
+ function openTooltip(immediate, forceOpen) {
318
+ cancelTimer();
319
+ if (!element.data(DATA_HASACTIVEHOVER)) {
320
+ if (!immediate) {
321
+ session.tipOpenImminent = true;
322
+ hoverTimer = setTimeout(
323
+ function intentDelay() {
324
+ hoverTimer = null;
325
+ checkForIntent();
326
+ },
327
+ options.intentPollInterval
328
+ );
329
+ } else {
330
+ if (forceOpen) {
331
+ element.data(DATA_FORCEDOPEN, true);
332
+ }
333
+ tipController.showTip(element);
334
+ }
335
+ }
336
+ }
337
+
338
+ /**
339
+ * Begins the process of closing a tooltip.
340
+ * @private
341
+ * @param {boolean=} disableDelay Disable close delay (optional).
342
+ */
343
+ function closeTooltip(disableDelay) {
344
+ cancelTimer();
345
+ session.tipOpenImminent = false;
346
+ if (element.data(DATA_HASACTIVEHOVER)) {
347
+ element.data(DATA_FORCEDOPEN, false);
348
+ if (!disableDelay) {
349
+ session.delayInProgress = true;
350
+ hoverTimer = setTimeout(
351
+ function closeDelay() {
352
+ hoverTimer = null;
353
+ tipController.hideTip(element);
354
+ session.delayInProgress = false;
355
+ },
356
+ options.closeDelay
357
+ );
358
+ } else {
359
+ tipController.hideTip(element);
360
+ }
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Checks mouse position to make sure that the user intended to hover on the
366
+ * specified element before showing the tooltip.
367
+ * @private
368
+ */
369
+ function checkForIntent() {
370
+ // calculate mouse position difference
371
+ var xDifference = Math.abs(session.previousX - session.currentX),
372
+ yDifference = Math.abs(session.previousY - session.currentY),
373
+ totalDifference = xDifference + yDifference;
374
+
375
+ // check if difference has passed the sensitivity threshold
376
+ if (totalDifference < options.intentSensitivity) {
377
+ tipController.showTip(element);
378
+ } else {
379
+ // try again
380
+ session.previousX = session.currentX;
381
+ session.previousY = session.currentY;
382
+ openTooltip();
383
+ }
384
+ }
385
+
386
+ /**
387
+ * Cancels active hover timer.
388
+ * @private
389
+ */
390
+ function cancelTimer() {
391
+ hoverTimer = clearTimeout(hoverTimer);
392
+ session.delayInProgress = false;
393
+ }
394
+
395
+ /**
396
+ * Repositions the tooltip on this element.
397
+ * @private
398
+ */
399
+ function repositionTooltip() {
400
+ tipController.resetPosition(element);
401
+ }
402
+
403
+ // expose the methods
404
+ this.show = openTooltip;
405
+ this.hide = closeTooltip;
406
+ this.cancel = cancelTimer;
407
+ this.resetPosition = repositionTooltip;
408
+ }
409
+
410
+ /**
411
+ * Creates a new Placement Calculator.
412
+ * @private
413
+ * @constructor
414
+ */
415
+ function PlacementCalculator() {
416
+ /**
417
+ * Compute the CSS position to display a tooltip at the specified placement
418
+ * relative to the specified element.
419
+ * @private
420
+ * @param {jQuery} element The element that the tooltip should target.
421
+ * @param {string} placement The placement for the tooltip.
422
+ * @param {number} tipWidth Width of the tooltip element in pixels.
423
+ * @param {number} tipHeight Height of the tooltip element in pixels.
424
+ * @param {number} offset Distance to offset tooltips in pixels.
425
+ * @return {CSSCoordinates} A CSSCoordinates object with the position.
426
+ */
427
+ function computePlacementCoords(element, placement, tipWidth, tipHeight, offset) {
428
+ var placementBase = placement.split('-')[0], // ignore 'alt' for corners
429
+ coords = new CSSCoordinates(),
430
+ position;
431
+
432
+ if (isSvgElement(element)) {
433
+ position = getSvgPlacement(element, placementBase);
434
+ } else {
435
+ position = getHtmlPlacement(element, placementBase);
436
+ }
437
+
438
+ // calculate the appropriate x and y position in the document
439
+ switch (placement) {
440
+ case 'n':
441
+ coords.set('left', position.left - (tipWidth / 2));
442
+ coords.set('bottom', session.windowHeight - position.top + offset);
443
+ break;
444
+ case 'e':
445
+ coords.set('left', position.left + offset);
446
+ coords.set('top', position.top - (tipHeight / 2));
447
+ break;
448
+ case 's':
449
+ coords.set('left', position.left - (tipWidth / 2));
450
+ coords.set('top', position.top + offset);
451
+ break;
452
+ case 'w':
453
+ coords.set('top', position.top - (tipHeight / 2));
454
+ coords.set('right', session.windowWidth - position.left + offset);
455
+ break;
456
+ case 'nw':
457
+ coords.set('bottom', session.windowHeight - position.top + offset);
458
+ coords.set('right', session.windowWidth - position.left - 20);
459
+ break;
460
+ case 'nw-alt':
461
+ coords.set('left', position.left);
462
+ coords.set('bottom', session.windowHeight - position.top + offset);
463
+ break;
464
+ case 'ne':
465
+ coords.set('left', position.left - 20);
466
+ coords.set('bottom', session.windowHeight - position.top + offset);
467
+ break;
468
+ case 'ne-alt':
469
+ coords.set('bottom', session.windowHeight - position.top + offset);
470
+ coords.set('right', session.windowWidth - position.left);
471
+ break;
472
+ case 'sw':
473
+ coords.set('top', position.top + offset);
474
+ coords.set('right', session.windowWidth - position.left - 20);
475
+ break;
476
+ case 'sw-alt':
477
+ coords.set('left', position.left);
478
+ coords.set('top', position.top + offset);
479
+ break;
480
+ case 'se':
481
+ coords.set('left', position.left - 20);
482
+ coords.set('top', position.top + offset);
483
+ break;
484
+ case 'se-alt':
485
+ coords.set('top', position.top + offset);
486
+ coords.set('right', session.windowWidth - position.left);
487
+ break;
488
+ }
489
+
490
+ return coords;
491
+ }
492
+
493
+ /**
494
+ * Finds the tooltip attachment point in the document for a HTML DOM element
495
+ * for the specified placement.
496
+ * @private
497
+ * @param {jQuery} element The element that the tooltip should target.
498
+ * @param {string} placement The placement for the tooltip.
499
+ * @return {Object} An object with the top,left position values.
500
+ */
501
+ function getHtmlPlacement(element, placement) {
502
+ var objectOffset = element.offset(),
503
+ objectWidth = element.outerWidth(),
504
+ objectHeight = element.outerHeight(),
505
+ left,
506
+ top;
507
+
508
+ // calculate the appropriate x and y position in the document
509
+ switch (placement) {
510
+ case 'n':
511
+ left = objectOffset.left + objectWidth / 2;
512
+ top = objectOffset.top;
513
+ break;
514
+ case 'e':
515
+ left = objectOffset.left + objectWidth;
516
+ top = objectOffset.top + objectHeight / 2;
517
+ break;
518
+ case 's':
519
+ left = objectOffset.left + objectWidth / 2;
520
+ top = objectOffset.top + objectHeight;
521
+ break;
522
+ case 'w':
523
+ left = objectOffset.left;
524
+ top = objectOffset.top + objectHeight / 2;
525
+ break;
526
+ case 'nw':
527
+ left = objectOffset.left;
528
+ top = objectOffset.top;
529
+ break;
530
+ case 'ne':
531
+ left = objectOffset.left + objectWidth;
532
+ top = objectOffset.top;
533
+ break;
534
+ case 'sw':
535
+ left = objectOffset.left;
536
+ top = objectOffset.top + objectHeight;
537
+ break;
538
+ case 'se':
539
+ left = objectOffset.left + objectWidth;
540
+ top = objectOffset.top + objectHeight;
541
+ break;
542
+ }
543
+
544
+ return {
545
+ top: top,
546
+ left: left
547
+ };
548
+ }
549
+
550
+ /**
551
+ * Finds the tooltip attachment point in the document for a SVG element for
552
+ * the specified placement.
553
+ * @private
554
+ * @param {jQuery} element The element that the tooltip should target.
555
+ * @param {string} placement The placement for the tooltip.
556
+ * @return {Object} An object with the top,left position values.
557
+ */
558
+ function getSvgPlacement(element, placement) {
559
+ var svgElement = element.closest('svg')[0],
560
+ domElement = element[0],
561
+ point = svgElement.createSVGPoint(),
562
+ boundingBox = domElement.getBBox(),
563
+ matrix = domElement.getScreenCTM(),
564
+ halfWidth = boundingBox.width / 2,
565
+ halfHeight = boundingBox.height / 2,
566
+ placements = [],
567
+ placementKeys = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'],
568
+ coords,
569
+ rotation,
570
+ steps,
571
+ x;
572
+
573
+ function pushPlacement() {
574
+ placements.push(point.matrixTransform(matrix));
575
+ }
576
+
577
+ // get bounding box corners and midpoints
578
+ point.x = boundingBox.x;
579
+ point.y = boundingBox.y;
580
+ pushPlacement();
581
+ point.x += halfWidth;
582
+ pushPlacement();
583
+ point.x += halfWidth;
584
+ pushPlacement();
585
+ point.y += halfHeight;
586
+ pushPlacement();
587
+ point.y += halfHeight;
588
+ pushPlacement();
589
+ point.x -= halfWidth;
590
+ pushPlacement();
591
+ point.x -= halfWidth;
592
+ pushPlacement();
593
+ point.y -= halfHeight;
594
+ pushPlacement();
595
+
596
+ // determine rotation
597
+ if (placements[0].y !== placements[1].y || placements[0].x !== placements[7].x) {
598
+ rotation = Math.atan2(matrix.b, matrix.a) * RAD2DEG;
599
+ steps = Math.ceil(((rotation % 360) - 22.5) / 45);
600
+ if (steps < 1) {
601
+ steps += 8;
602
+ }
603
+ while (steps--) {
604
+ placementKeys.push(placementKeys.shift());
605
+ }
606
+ }
607
+
608
+ // find placement
609
+ for (x = 0; x < placements.length; x++) {
610
+ if (placementKeys[x] === placement) {
611
+ coords = placements[x];
612
+ break;
613
+ }
614
+ }
615
+
616
+ return {
617
+ top: coords.y + session.scrollTop,
618
+ left: coords.x + session.scrollLeft
619
+ };
620
+ }
621
+
622
+ // expose methods
623
+ this.compute = computePlacementCoords;
624
+ }
625
+
626
+ /**
627
+ * Creates a new tooltip controller.
628
+ * @private
629
+ * @constructor
630
+ * @param {Object} options Options object containing settings.
631
+ */
632
+ function TooltipController(options) {
633
+ var placementCalculator = new PlacementCalculator(),
634
+ tipElement = $('#' + options.popupId);
635
+
636
+ // build and append tooltip div if it does not already exist
637
+ if (tipElement.length === 0) {
638
+ tipElement = $('<div/>', { id: options.popupId });
639
+ // grab body element if it was not populated when the script loaded
640
+ // note: this hack exists solely for jsfiddle support
641
+ if ($body.length === 0) {
642
+ $body = $('body');
643
+ }
644
+ $body.append(tipElement);
645
+ }
646
+
647
+ // hook mousemove for cursor follow tooltips
648
+ if (options.followMouse) {
649
+ // only one positionTipOnCursor hook per tooltip element, please
650
+ if (!tipElement.data(DATA_HASMOUSEMOVE)) {
651
+ $document.on('mousemove', positionTipOnCursor);
652
+ $window.on('scroll', positionTipOnCursor);
653
+ tipElement.data(DATA_HASMOUSEMOVE, true);
654
+ }
655
+ }
656
+
657
+ // if we want to be able to mouse onto the tooltip then we need to attach
658
+ // hover events to the tooltip that will cancel a close request on hover and
659
+ // start a new close request on mouseleave
660
+ if (options.mouseOnToPopup) {
661
+ tipElement.on({
662
+ mouseenter: function tipMouseEnter() {
663
+ // we only let the mouse stay on the tooltip if it is set to let
664
+ // users interact with it
665
+ if (tipElement.data(DATA_MOUSEONTOTIP)) {
666
+ // check activeHover in case the mouse cursor entered the
667
+ // tooltip during the fadeOut and close cycle
668
+ if (session.activeHover) {
669
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel();
670
+ }
671
+ }
672
+ },
673
+ mouseleave: function tipMouseLeave() {
674
+ // check activeHover in case the mouse cursor entered the
675
+ // tooltip during the fadeOut and close cycle
676
+ if (session.activeHover) {
677
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide();
678
+ }
679
+ }
680
+ });
681
+ }
682
+
683
+ /**
684
+ * Gives the specified element the active-hover state and queues up the
685
+ * showTip function.
686
+ * @private
687
+ * @param {jQuery} element The element that the tooltip should target.
688
+ */
689
+ function beginShowTip(element) {
690
+ element.data(DATA_HASACTIVEHOVER, true);
691
+ // show tooltip, asap
692
+ tipElement.queue(function queueTipInit(next) {
693
+ showTip(element);
694
+ next();
695
+ });
696
+ }
697
+
698
+ /**
699
+ * Shows the tooltip, as soon as possible.
700
+ * @private
701
+ * @param {jQuery} element The element that the tooltip should target.
702
+ */
703
+ function showTip(element) {
704
+ var tipContent;
705
+
706
+ // it is possible, especially with keyboard navigation, to move on to
707
+ // another element with a tooltip during the queue to get to this point
708
+ // in the code. if that happens then we need to not proceed or we may
709
+ // have the fadeout callback for the last tooltip execute immediately
710
+ // after this code runs, causing bugs.
711
+ if (!element.data(DATA_HASACTIVEHOVER)) {
712
+ return;
713
+ }
714
+
715
+ // if the tooltip is open and we got asked to open another one then the
716
+ // old one is still in its fadeOut cycle, so wait and try again
717
+ if (session.isTipOpen) {
718
+ if (!session.isClosing) {
719
+ hideTip(session.activeHover);
720
+ }
721
+ tipElement.delay(100).queue(function queueTipAgain(next) {
722
+ showTip(element);
723
+ next();
724
+ });
725
+ return;
726
+ }
727
+
728
+ // trigger powerTipPreRender event
729
+ element.trigger('powerTipPreRender');
730
+
731
+ // set tooltip content
732
+ tipContent = getTooltipContent(element);
733
+ if (tipContent) {
734
+ tipElement.empty().append(tipContent);
735
+ } else {
736
+ // we have no content to display, give up
737
+ return;
738
+ }
739
+
740
+ // trigger powerTipRender event
741
+ element.trigger('powerTipRender');
742
+
743
+ session.activeHover = element;
744
+ session.isTipOpen = true;
745
+
746
+ tipElement.data(DATA_MOUSEONTOTIP, options.mouseOnToPopup);
747
+
748
+ // set tooltip position
749
+ if (!options.followMouse) {
750
+ positionTipOnElement(element);
751
+ session.isFixedTipOpen = true;
752
+ } else {
753
+ positionTipOnCursor();
754
+ }
755
+
756
+ // fadein
757
+ tipElement.fadeIn(options.fadeInTime, function fadeInCallback() {
758
+ // start desync polling
759
+ if (!session.desyncTimeout) {
760
+ session.desyncTimeout = setInterval(closeDesyncedTip, 500);
761
+ }
762
+
763
+ // trigger powerTipOpen event
764
+ element.trigger('powerTipOpen');
765
+ });
766
+ }
767
+
768
+ /**
769
+ * Hides the tooltip.
770
+ * @private
771
+ * @param {jQuery} element The element that the tooltip should target.
772
+ */
773
+ function hideTip(element) {
774
+ // reset session
775
+ session.isClosing = true;
776
+ session.activeHover = null;
777
+ session.isTipOpen = false;
778
+
779
+ // stop desync polling
780
+ session.desyncTimeout = clearInterval(session.desyncTimeout);
781
+
782
+ // reset element state
783
+ element.data(DATA_HASACTIVEHOVER, false);
784
+ element.data(DATA_FORCEDOPEN, false);
785
+
786
+ // fade out
787
+ tipElement.fadeOut(options.fadeOutTime, function fadeOutCallback() {
788
+ var coords = new CSSCoordinates();
789
+
790
+ // reset session and tooltip element
791
+ session.isClosing = false;
792
+ session.isFixedTipOpen = false;
793
+ tipElement.removeClass();
794
+
795
+ // support mouse-follow and fixed position tips at the same time by
796
+ // moving the tooltip to the last cursor location after it is hidden
797
+ coords.set('top', session.currentY + options.offset);
798
+ coords.set('left', session.currentX + options.offset);
799
+ tipElement.css(coords);
800
+
801
+ // trigger powerTipClose event
802
+ element.trigger('powerTipClose');
803
+ });
804
+ }
805
+
806
+ /**
807
+ * Moves the tooltip to the users mouse cursor.
808
+ * @private
809
+ */
810
+ function positionTipOnCursor() {
811
+ // to support having fixed tooltips on the same page as cursor tooltips,
812
+ // where both instances are referencing the same tooltip element, we
813
+ // need to keep track of the mouse position constantly, but we should
814
+ // only set the tip location if a fixed tip is not currently open, a tip
815
+ // open is imminent or active, and the tooltip element in question does
816
+ // have a mouse-follow using it.
817
+ if (!session.isFixedTipOpen && (session.isTipOpen || (session.tipOpenImminent && tipElement.data(DATA_HASMOUSEMOVE)))) {
818
+ // grab measurements
819
+ var tipWidth = tipElement.outerWidth(),
820
+ tipHeight = tipElement.outerHeight(),
821
+ coords = new CSSCoordinates(),
822
+ collisions,
823
+ collisionCount;
824
+
825
+ // grab collisions
826
+ coords.set('top', session.currentY + options.offset);
827
+ coords.set('left', session.currentX + options.offset);
828
+ collisions = getViewportCollisions(
829
+ coords,
830
+ tipWidth,
831
+ tipHeight
832
+ );
833
+
834
+ // handle tooltip view port collisions
835
+ if (collisions !== Collision.none) {
836
+ collisionCount = countFlags(collisions);
837
+ if (collisionCount === 1) {
838
+ // if there is only one collision (bottom or right) then
839
+ // simply constrain the tooltip to the view port
840
+ if (collisions === Collision.right) {
841
+ coords.set('left', session.windowWidth - tipWidth);
842
+ } else if (collisions === Collision.bottom) {
843
+ coords.set('top', session.scrollTop + session.windowHeight - tipHeight);
844
+ }
845
+ } else {
846
+ // if the tooltip has more than one collision then it is
847
+ // trapped in the corner and should be flipped to get it out
848
+ // of the users way
849
+ coords.set('left', session.currentX - tipWidth - options.offset);
850
+ coords.set('top', session.currentY - tipHeight - options.offset);
851
+ }
852
+ }
853
+
854
+ // position the tooltip
855
+ tipElement.css(coords);
856
+ }
857
+ }
858
+
859
+ /**
860
+ * Sets the tooltip to the correct position relative to the specified target
861
+ * element. Based on options settings.
862
+ * @private
863
+ * @param {jQuery} element The element that the tooltip should target.
864
+ */
865
+ function positionTipOnElement(element) {
866
+ var priorityList,
867
+ finalPlacement;
868
+
869
+ if (options.smartPlacement) {
870
+ priorityList = $.fn.powerTip.smartPlacementLists[options.placement];
871
+
872
+ // iterate over the priority list and use the first placement option
873
+ // that does not collide with the view port. if they all collide
874
+ // then the last placement in the list will be used.
875
+ $.each(priorityList, function(idx, pos) {
876
+ // place tooltip and find collisions
877
+ var collisions = getViewportCollisions(
878
+ placeTooltip(element, pos),
879
+ tipElement.outerWidth(),
880
+ tipElement.outerHeight()
881
+ );
882
+
883
+ // update the final placement variable
884
+ finalPlacement = pos;
885
+
886
+ // break if there were no collisions
887
+ if (collisions === Collision.none) {
888
+ return false;
889
+ }
890
+ });
891
+ } else {
892
+ // if we're not going to use the smart placement feature then just
893
+ // compute the coordinates and do it
894
+ placeTooltip(element, options.placement);
895
+ finalPlacement = options.placement;
896
+ }
897
+
898
+ // add placement as class for CSS arrows
899
+ tipElement.addClass(finalPlacement);
900
+ }
901
+
902
+ /**
903
+ * Sets the tooltip position to the appropriate values to show the tip at
904
+ * the specified placement. This function will iterate and test the tooltip
905
+ * to support elastic tooltips.
906
+ * @private
907
+ * @param {jQuery} element The element that the tooltip should target.
908
+ * @param {string} placement The placement for the tooltip.
909
+ * @return {CSSCoordinates} A CSSCoordinates object with the top, left, and
910
+ * right position values.
911
+ */
912
+ function placeTooltip(element, placement) {
913
+ var iterationCount = 0,
914
+ tipWidth,
915
+ tipHeight,
916
+ coords = new CSSCoordinates();
917
+
918
+ // set the tip to 0,0 to get the full expanded width
919
+ coords.set('top', 0);
920
+ coords.set('left', 0);
921
+ tipElement.css(coords);
922
+
923
+ // to support elastic tooltips we need to check for a change in the
924
+ // rendered dimensions after the tooltip has been positioned
925
+ do {
926
+ // grab the current tip dimensions
927
+ tipWidth = tipElement.outerWidth();
928
+ tipHeight = tipElement.outerHeight();
929
+
930
+ // get placement coordinates
931
+ coords = placementCalculator.compute(
932
+ element,
933
+ placement,
934
+ tipWidth,
935
+ tipHeight,
936
+ options.offset
937
+ );
938
+
939
+ // place the tooltip
940
+ tipElement.css(coords);
941
+ } while (
942
+ // sanity check: limit to 5 iterations, and...
943
+ ++iterationCount <= 5 &&
944
+ // try again if the dimensions changed after placement
945
+ (tipWidth !== tipElement.outerWidth() || tipHeight !== tipElement.outerHeight())
946
+ );
947
+
948
+ return coords;
949
+ }
950
+
951
+ /**
952
+ * Checks for a tooltip desync and closes the tooltip if one occurs.
953
+ * @private
954
+ */
955
+ function closeDesyncedTip() {
956
+ var isDesynced = false;
957
+ // It is possible for the mouse cursor to leave an element without
958
+ // firing the mouseleave or blur event. This most commonly happens when
959
+ // the element is disabled under mouse cursor. If this happens it will
960
+ // result in a desynced tooltip because the tooltip was never asked to
961
+ // close. So we should periodically check for a desync situation and
962
+ // close the tip if such a situation arises.
963
+ if (session.isTipOpen && !session.isClosing && !session.delayInProgress) {
964
+ // user moused onto another tip or active hover is disabled
965
+ if (session.activeHover.data(DATA_HASACTIVEHOVER) === false || session.activeHover.is(':disabled')) {
966
+ isDesynced = true;
967
+ } else {
968
+ // hanging tip - have to test if mouse position is not over the
969
+ // active hover and not over a tooltip set to let the user
970
+ // interact with it.
971
+ // for keyboard navigation: this only counts if the element does
972
+ // not have focus.
973
+ // for tooltips opened via the api: we need to check if it has
974
+ // the forcedOpen flag.
975
+ if (!isMouseOver(session.activeHover) && !session.activeHover.is(':focus') && !session.activeHover.data(DATA_FORCEDOPEN)) {
976
+ if (tipElement.data(DATA_MOUSEONTOTIP)) {
977
+ if (!isMouseOver(tipElement)) {
978
+ isDesynced = true;
979
+ }
980
+ } else {
981
+ isDesynced = true;
982
+ }
983
+ }
984
+ }
985
+
986
+ if (isDesynced) {
987
+ // close the desynced tip
988
+ hideTip(session.activeHover);
989
+ }
990
+ }
991
+ }
992
+
993
+ // expose methods
994
+ this.showTip = beginShowTip;
995
+ this.hideTip = hideTip;
996
+ this.resetPosition = positionTipOnElement;
997
+ }
998
+
999
+ /**
1000
+ * Determine whether a jQuery object is an SVG element
1001
+ * @private
1002
+ * @param {jQuery} element The element to check
1003
+ * @return {boolean} Whether this is an SVG element
1004
+ */
1005
+ function isSvgElement(element) {
1006
+ return window.SVGElement && element[0] instanceof SVGElement;
1007
+ }
1008
+
1009
+ /**
1010
+ * Initializes the viewport dimension cache and hooks up the mouse position
1011
+ * tracking and viewport dimension tracking events.
1012
+ * Prevents attaching the events more than once.
1013
+ * @private
1014
+ */
1015
+ function initTracking() {
1016
+ if (!session.mouseTrackingActive) {
1017
+ session.mouseTrackingActive = true;
1018
+
1019
+ // grab the current viewport dimensions on load
1020
+ $(function getViewportDimensions() {
1021
+ session.scrollLeft = $window.scrollLeft();
1022
+ session.scrollTop = $window.scrollTop();
1023
+ session.windowWidth = $window.width();
1024
+ session.windowHeight = $window.height();
1025
+ });
1026
+
1027
+ // hook mouse move tracking
1028
+ $document.on('mousemove', trackMouse);
1029
+
1030
+ // hook viewport dimensions tracking
1031
+ $window.on({
1032
+ resize: function trackResize() {
1033
+ session.windowWidth = $window.width();
1034
+ session.windowHeight = $window.height();
1035
+ },
1036
+ scroll: function trackScroll() {
1037
+ var x = $window.scrollLeft(),
1038
+ y = $window.scrollTop();
1039
+ if (x !== session.scrollLeft) {
1040
+ session.currentX += x - session.scrollLeft;
1041
+ session.scrollLeft = x;
1042
+ }
1043
+ if (y !== session.scrollTop) {
1044
+ session.currentY += y - session.scrollTop;
1045
+ session.scrollTop = y;
1046
+ }
1047
+ }
1048
+ });
1049
+ }
1050
+ }
1051
+
1052
+ /**
1053
+ * Saves the current mouse coordinates to the session object.
1054
+ * @private
1055
+ * @param {jQuery.Event} event The mousemove event for the document.
1056
+ */
1057
+ function trackMouse(event) {
1058
+ session.currentX = event.pageX;
1059
+ session.currentY = event.pageY;
1060
+ }
1061
+
1062
+ /**
1063
+ * Tests if the mouse is currently over the specified element.
1064
+ * @private
1065
+ * @param {jQuery} element The element to check for hover.
1066
+ * @return {boolean}
1067
+ */
1068
+ function isMouseOver(element) {
1069
+ // use getBoundingClientRect() because jQuery's width() and height()
1070
+ // methods do not work with SVG elements
1071
+ // compute width/height because those properties do not exist on the object
1072
+ // returned by getBoundingClientRect() in older versions of IE
1073
+ var elementPosition = element.offset(),
1074
+ elementBox = element[0].getBoundingClientRect(),
1075
+ elementWidth = elementBox.right - elementBox.left,
1076
+ elementHeight = elementBox.bottom - elementBox.top;
1077
+
1078
+ return session.currentX >= elementPosition.left &&
1079
+ session.currentX <= elementPosition.left + elementWidth &&
1080
+ session.currentY >= elementPosition.top &&
1081
+ session.currentY <= elementPosition.top + elementHeight;
1082
+ }
1083
+
1084
+ /**
1085
+ * Fetches the tooltip content from the specified element's data attributes.
1086
+ * @private
1087
+ * @param {jQuery} element The element to get the tooltip content for.
1088
+ * @return {(string|jQuery|undefined)} The text/HTML string, jQuery object, or
1089
+ * undefined if there was no tooltip content for the element.
1090
+ */
1091
+ function getTooltipContent(element) {
1092
+ var tipText = element.data(DATA_POWERTIP),
1093
+ tipObject = element.data(DATA_POWERTIPJQ),
1094
+ tipTarget = element.data(DATA_POWERTIPTARGET),
1095
+ targetElement,
1096
+ content;
1097
+
1098
+ if (tipText) {
1099
+ if ($.isFunction(tipText)) {
1100
+ tipText = tipText.call(element[0]);
1101
+ }
1102
+ content = tipText;
1103
+ } else if (tipObject) {
1104
+ if ($.isFunction(tipObject)) {
1105
+ tipObject = tipObject.call(element[0]);
1106
+ }
1107
+ if (tipObject.length > 0) {
1108
+ content = tipObject.clone(true, true);
1109
+ }
1110
+ } else if (tipTarget) {
1111
+ targetElement = $('#' + tipTarget);
1112
+ if (targetElement.length > 0) {
1113
+ content = targetElement.html();
1114
+ }
1115
+ }
1116
+
1117
+ return content;
1118
+ }
1119
+
1120
+ /**
1121
+ * Finds any viewport collisions that an element (the tooltip) would have if it
1122
+ * were absolutely positioned at the specified coordinates.
1123
+ * @private
1124
+ * @param {CSSCoordinates} coords Coordinates for the element.
1125
+ * @param {number} elementWidth Width of the element in pixels.
1126
+ * @param {number} elementHeight Height of the element in pixels.
1127
+ * @return {number} Value with the collision flags.
1128
+ */
1129
+ function getViewportCollisions(coords, elementWidth, elementHeight) {
1130
+ var viewportTop = session.scrollTop,
1131
+ viewportLeft = session.scrollLeft,
1132
+ viewportBottom = viewportTop + session.windowHeight,
1133
+ viewportRight = viewportLeft + session.windowWidth,
1134
+ collisions = Collision.none;
1135
+
1136
+ if (coords.top < viewportTop || Math.abs(coords.bottom - session.windowHeight) - elementHeight < viewportTop) {
1137
+ collisions |= Collision.top;
1138
+ }
1139
+ if (coords.top + elementHeight > viewportBottom || Math.abs(coords.bottom - session.windowHeight) > viewportBottom) {
1140
+ collisions |= Collision.bottom;
1141
+ }
1142
+ if (coords.left < viewportLeft || coords.right + elementWidth > viewportRight) {
1143
+ collisions |= Collision.left;
1144
+ }
1145
+ if (coords.left + elementWidth > viewportRight || coords.right < viewportLeft) {
1146
+ collisions |= Collision.right;
1147
+ }
1148
+
1149
+ return collisions;
1150
+ }
1151
+
1152
+ /**
1153
+ * Counts the number of bits set on a flags value.
1154
+ * @param {number} value The flags value.
1155
+ * @return {number} The number of bits that have been set.
1156
+ */
1157
+ function countFlags(value) {
1158
+ var count = 0;
1159
+ while (value) {
1160
+ value &= value - 1;
1161
+ count++;
1162
+ }
1163
+ return count;
1164
+ }
1165
+
1166
+ }));
app/assets/js/vendor/jquery.sliderTabs.min.js ADDED
@@ -0,0 +1,831 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery SliderTabs v1.1
3
+ * http://lopatin.github.com/sliderTabs
4
+ *
5
+ * Copyright 2012, Alex Lopatin
6
+ * Free to use under the MIT license.
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ *
9
+ */
10
+
11
+
12
+ (function( $ ){
13
+ /*
14
+ * The sliderTabs tabs class
15
+ */
16
+ $.sliderTabs = function(container, options){
17
+ var plugin = this;
18
+
19
+ var defaults = {
20
+ autoplay: false,
21
+ tabArrowWidth: 35,
22
+ classes: {
23
+ leftTabArrow: '',
24
+ panel: '',
25
+ panelActive: '',
26
+ panelsContainer: '',
27
+ rightTabArrow: '',
28
+ tab: '',
29
+ tabActive: '',
30
+ tabsList: ''
31
+ },
32
+ defaultTab: 1,
33
+ height: null,
34
+ indicators: false,
35
+ mousewheel: true,
36
+ position: "top",
37
+ panelArrows: false,
38
+ panelArrowsShowOnHover: false,
39
+ tabs: true,
40
+ tabHeight: 30,
41
+ tabArrows: true,
42
+ tabSlideLength: 100,
43
+ tabSlideSpeed: 200,
44
+ transition: 'slide',
45
+ transitionEasing: 'easeOutCubic',
46
+ transitionSpeed: 500,
47
+ width: null
48
+ };
49
+
50
+ // jQuery objects of important elements
51
+ var $container = $(container),
52
+ $indicators,
53
+ $tabsList,
54
+ $contentDivs,
55
+ $tabsListContainer,
56
+ $tabsListWrapper,
57
+ $contentDivsContainer,
58
+ $leftTabArrow,
59
+ $rightTabArrow,
60
+ $leftPanelArrow,
61
+ $rightPanelArrow;
62
+
63
+ // Locks to stop out of sync behavior
64
+ var selectLock = false,
65
+ heightLock = true;
66
+
67
+ var settings, minMargin;
68
+
69
+ // Index of currently selected tab
70
+ plugin.selectedTab = defaults.defaultTab;
71
+
72
+ plugin.init = function(){
73
+ settings = plugin.settings = $.extend({}, defaults, options);
74
+ $container.addClass('ui-slider-tabs');
75
+
76
+ /*
77
+ * Rebuild structure of container
78
+ */
79
+ $contentDivs = $container.children("div").addClass('ui-slider-tab-content').remove();
80
+
81
+ // Tabs
82
+ $tabsList = $container.children("ul").addClass('ui-slider-tabs-list').remove();
83
+ $tabsList.children("li").remove().appendTo($tabsList);
84
+ plugin.count = $tabsList.children('li').length;
85
+ $tabsListWrapper = $("<div class='ui-slider-tabs-list-wrapper'>");
86
+ $tabsListContainer = $("<div class='ui-slider-tabs-list-container'>").append($tabsList).appendTo($tabsListWrapper);
87
+ $tabsListContainer.find('li').css('height', settings.tabHeight+2);
88
+ $tabsListContainer.find('li a').css('height', settings.tabHeight+2);
89
+
90
+ // Tab arrows
91
+ $leftTabArrow = $("<a href='#' class='ui-slider-left-arrow'><div></div></a>").css({
92
+ 'width': settings.tabArrowWidth,
93
+ 'height': settings.tabHeight+2
94
+ }).appendTo($tabsListContainer).click(function(e){
95
+ plugin.slideTabs('right', settings.tabSlideLength);
96
+ return false;
97
+ });
98
+ $rightTabArrow = $("<a href='#' class='ui-slider-right-arrow'><div></div></a>").css({
99
+ 'width': settings.tabArrowWidth,
100
+ 'height': settings.tabHeight+2
101
+ }).appendTo($tabsListContainer).click(function(e){
102
+ plugin.slideTabs('left', settings.tabSlideLength);
103
+ return false;
104
+ });
105
+
106
+ // Content container
107
+ $contentDivsContainer = $("<div class='ui-slider-tabs-content-container'>").append($contentDivs);
108
+
109
+ // Position the tabs on top or bottom
110
+ if(settings.position == 'bottom')
111
+ $container.append($contentDivsContainer).append($tabsListWrapper.addClass('bottom'));
112
+ else
113
+ $container.append($tabsListWrapper).append($contentDivsContainer);
114
+
115
+
116
+ if(settings.width)
117
+ $container.width(parseInt(settings.width));
118
+ if(settings.height)
119
+ $contentDivsContainer.height(parseInt(settings.height)- settings.tabHeight);
120
+
121
+ // Create and show indicators
122
+ if(settings.indicators)
123
+ plugin.showIndicators();
124
+
125
+
126
+ // Select default tab
127
+ plugin.selectTab(settings.defaultTab);
128
+ plugin.slideTabs('left', 0);
129
+
130
+ reorderPanels();
131
+
132
+ resizePanels();
133
+
134
+ // When tab is clicked
135
+ $container.delegate('.ui-slider-tabs-list li a', 'click', function(){
136
+ if(!$(this).parent().hasClass('selected') && !selectLock){
137
+ plugin.selectTab($(this).parent());
138
+ }
139
+ return false;
140
+ });
141
+
142
+ // When indicator is clicked
143
+ if($indicators)
144
+ $indicators.delegate('.ui-slider-tabs-indicator', 'click', function(){
145
+ if(!$(this).hasClass('selected') && !selectLock)
146
+ plugin.selectTab($(this).index()+1);
147
+ });
148
+
149
+ // Set classes
150
+ $.each(settings.classes, function(i, c){
151
+ switch(i){
152
+ case 'leftTabArrow':
153
+ $leftTabArrow.addClass(c);
154
+ break;
155
+ case 'rightTabArrow':
156
+ $rightTabArrow.addClass(c);
157
+ break;
158
+ case 'panel':
159
+ $contentDivs.addClass(c);
160
+ break;
161
+ case 'panelsContainer':
162
+ $contentDivsContainer.addClass(c);
163
+ break;
164
+ case 'tab':
165
+ $tabsList.find('li').addClass(c);
166
+ break;
167
+ case 'tabsList':
168
+ $tabsList.addClass(c);
169
+ break;
170
+ default:
171
+ break;
172
+ }
173
+ });
174
+
175
+ // Panel arrows
176
+ // Creates them if they don't exist
177
+ if(settings.panelArrows)
178
+ positionPanelArrows();
179
+
180
+ if(settings.panelArrowsShowOnHover){
181
+ if($leftPanelArrow)
182
+ $leftPanelArrow.addClass('showOnHover');
183
+ if($rightPanelArrow)
184
+ $rightPanelArrow.addClass('showOnHover');
185
+ }
186
+
187
+ $contentDivsContainer.resize(positionPanelArrows);
188
+
189
+ // Make responsive to changes in dimensions
190
+ $tabsListWrapper.resize(function(){
191
+ resizeTabsList();
192
+ resizePanels();
193
+ });
194
+
195
+ // Resize content container height if inner panels change
196
+ setInterval(function(){
197
+ var $panel = $contentDivsContainer.children('.selected');
198
+ if($panel.outerHeight() > $contentDivsContainer.outerHeight() && heightLock)
199
+ resizeContentContainer($panel);
200
+ }, 100);
201
+
202
+ resizeTabsList();
203
+
204
+ // Hide tabs wrapper if option if false
205
+ if(!settings.tabs)
206
+ $tabsListWrapper.hide();
207
+
208
+ // Auto play
209
+ if(settings.autoplay)
210
+ setInterval(plugin.next, settings.autoplay);
211
+
212
+ // Panel arrows
213
+
214
+ // Mousehweel
215
+ $container.bind('mousewheel', function(event, delta, deltaX, deltaY) {
216
+ if(delta > 0)
217
+ plugin.next();
218
+ else if(delta < 0)
219
+ plugin.prev();
220
+ return false;
221
+ });
222
+ }
223
+
224
+ /*
225
+ * Public methods
226
+ */
227
+
228
+ // Select tab
229
+ // param: tab is a tab index (1 ... n) or jQuery object of tab li element
230
+ plugin.selectTab = function(tab){
231
+ heightLock = false;
232
+
233
+ // Find $targetPanel, the panel to show
234
+ var $clicked = (typeof tab === 'number') ? $tabsList.children("li:nth-child("+tab+")") : tab;
235
+ var targetId = ($clicked.find('a').attr('href')).substr(1);
236
+ var $targetPanel = $contentDivsContainer.children("#"+targetId);
237
+
238
+ // Update selected tab
239
+ plugin.selectedTab = (typeof tab === 'number') ? tab : tab.index()+1;
240
+
241
+ // Resize the main contant container to the size of $targetPanel
242
+ resizeContentContainer($targetPanel);
243
+
244
+ // Lock selections until transitions finished
245
+ selectLock = true;
246
+
247
+ // Direction to slide panel on hide
248
+ var direction = ($tabsList.find('.selected').index() < $clicked.index()) ? 'left' : 'right';
249
+
250
+ // Update selected classes
251
+ $clicked.siblings().removeClass('selected');
252
+ if(settings.classes.tabActive != '') $clicked.siblings().removeClass(settings.classes.tabActive);
253
+ $clicked.addClass('selected').addClass(settings.classes.tabActive);
254
+
255
+ // Hide and show appropriate panels
256
+ hidePanel($contentDivsContainer.children(".ui-slider-tab-content:visible"), direction);
257
+ showPanel($targetPanel);
258
+
259
+ // Slide tabs so that they fit in $tabsListContainer
260
+ fitTabInContainer($clicked);
261
+
262
+ // Select the proper indicator
263
+ selectIndicator();
264
+ };
265
+
266
+ // Select the next (right) panel
267
+ plugin.next = function(){
268
+ if(!selectLock){
269
+ if(plugin.count === plugin.selectedTab)
270
+ plugin.selectTab(1);
271
+ else plugin.selectTab(plugin.selectedTab+1);
272
+ }
273
+ };
274
+
275
+ // Select the previous panel
276
+ plugin.prev = function(){
277
+ if(!selectLock){
278
+ if(plugin.selectedTab === 1)
279
+ plugin.selectTab(plugin.count);
280
+ else plugin.selectTab(plugin.selectedTab-1);
281
+ }
282
+ };
283
+
284
+ // Slide tabs left/right within $tabsListContainer
285
+ plugin.slideTabs = function(direction, length){
286
+ var margin = parseInt($tabsList.css('margin-left'));
287
+ var newMargin = margin;
288
+
289
+ // Reset 'edge' classes on tab arrows
290
+ $leftTabArrow.removeClass('edge');
291
+ $rightTabArrow.removeClass('edge');
292
+
293
+ // Calculate delta to slide by
294
+ if(direction=='right') newMargin += length;
295
+ else if(direction=='left') newMargin -= length;
296
+ if(newMargin >= 0) {
297
+ newMargin = 0;
298
+ $leftTabArrow.addClass('edge');
299
+ }
300
+ else if(newMargin <= minMargin){
301
+ newMargin = minMargin;
302
+ $rightTabArrow.addClass('edge');
303
+ }
304
+
305
+ // Animate
306
+ $tabsList.animate({'margin-left': newMargin}, settings.tabSlideSpeed);
307
+ };
308
+
309
+ // Show panel indicators
310
+ // Create indicators if they don't exist yet
311
+ plugin.showIndicators = function(){
312
+ if(!$indicators){
313
+ $indicators = $("<div class='ui-slider-tabs-indicator-container'>");
314
+ for(var i = 0; i < $contentDivs.length; i++){
315
+ $indicators.append("<div class='ui-slider-tabs-indicator'></div>");
316
+ }
317
+ $contentDivsContainer.append($indicators);
318
+ }
319
+ else
320
+ $indicators.show();
321
+ };
322
+
323
+ // Hide panel indicators
324
+ plugin.hideIndicators = function(){
325
+ if($indicators)
326
+ $indicators.hide();
327
+ };
328
+
329
+ // Show arrows that slide tabs left and right
330
+ plugin.showTabArrows = function(){
331
+ if(!settings.tabArrows)
332
+ return;
333
+ $leftTabArrow.show();
334
+ $rightTabArrow.show();
335
+ $tabsListContainer.css('margin', '0 '+settings.tabArrowWidth+'px');
336
+ };
337
+
338
+ // Hide arrows that slide tabs left and right
339
+ plugin.hideTabArrows = function(){
340
+ $leftTabArrow.hide();
341
+ $rightTabArrow.hide();
342
+ $tabsListContainer.css('margin', '0');
343
+ };
344
+
345
+ // Show panel arrows
346
+ plugin.showPanelArrows = function(){
347
+ if($leftPanelArrow) $leftPanelArrow.show();
348
+ if($rightPanelArrow) $rightPanelArrow.show();
349
+ };
350
+
351
+ // Hide panel arrows
352
+ plugin.hidePanelArrows = function(){
353
+ if($leftPanelArrow) $leftPanelArrow.hide();
354
+ if($rightPanelArrow) $rightPanelArrow.hide();
355
+ };
356
+
357
+ /*
358
+ * Private methods
359
+ */
360
+
361
+ // Add the selected class to the plugin.selectedTab tab. Remove from all others.
362
+ var selectIndicator = function(){
363
+ if(settings.indicators && $indicators){
364
+ var $indicator = $indicators.children("div:nth-child("+plugin.selectedTab+")");
365
+ $indicator.siblings().removeClass('selected');
366
+ $indicator.addClass('selected');
367
+ }
368
+ };
369
+
370
+ // Slide tabs inside of $tabsListContainer so that the selected one fits inside
371
+ var fitTabInContainer = function(tab){
372
+ var tabOffset = tab.offset(),
373
+ containerOffset = $tabsListContainer.offset(),
374
+ leftOffset = tabOffset.left - containerOffset.left,
375
+ rightOffset = (containerOffset.left + $tabsListContainer.outerWidth()) - (tabOffset.left + tab.outerWidth() );
376
+
377
+ if(leftOffset < 0)
378
+ plugin.slideTabs('right', -leftOffset);
379
+ else if(rightOffset < 0)
380
+ plugin.slideTabs('left', -rightOffset);
381
+ };
382
+
383
+ // Reposition content panels so that they are ready to be transitioned in and out.
384
+ // This depends on whether the transition is set to slide or fade
385
+ var reorderPanels = function(){
386
+ // Position content divs
387
+ if(settings.transition == 'slide')
388
+ // Move panels left/right basedon their index relative to the selected panel
389
+ $tabsList.children('li').each(function(index, el){
390
+ var selectedIndex = $tabsList.children('.selected').index(),
391
+ thisIndex = $(el).index();
392
+ var panel = $contentDivsContainer.children('#'+$(el).find('a').attr('href').substr(1));
393
+ if(selectedIndex < thisIndex)
394
+ panel.css({left: $contentDivsContainer.width()+'px'});
395
+ else if(selectedIndex > thisIndex)
396
+ panel.css({left: '-'+$contentDivsContainer.width()+'px'});
397
+ else
398
+ panel.addClass(settings.classes.panelActive);
399
+ });
400
+
401
+ if(settings.transition == 'fade')
402
+ // Set opacity to correct value for non selected panels.
403
+ $tabsList.children('li').each(function(index, el){
404
+ var selectedIndex = $tabsList.children('.selected').index(),
405
+ thisIndex = $(el).index();
406
+ var panel = $contentDivsContainer.children('#'+$(el).find('a').attr('href').substr(1));
407
+ if(selectedIndex != thisIndex)
408
+ panel.css({opacity: 0});
409
+ else
410
+ panel.addClass(settings.classes.panelActive);
411
+ });
412
+ };
413
+
414
+ // Object determining css properties to be animated to based on various actions, transitions, and directions
415
+ var panelAnimationCSS = function(width){
416
+ return {
417
+ hide: {
418
+ slideleft: {
419
+ left: '-'+width+'px'
420
+ },
421
+ slideright: {
422
+ left: width+'px'
423
+ },
424
+ fade: {
425
+ opacity: 0
426
+ }
427
+ },
428
+ show: {
429
+ slide: {
430
+ left: 0
431
+ },
432
+ fade: {
433
+ opacity: 1
434
+ }
435
+ }
436
+ }
437
+ };
438
+
439
+ // Transition out the passed in panel.
440
+ // param: panel is the jQuery object of the panel to be hidden
441
+ // direction is either 'left' or 'right' for sliding transitions
442
+ var hidePanel = function(panel, direction){
443
+ // Calculate correct key in panelAnimationCSS
444
+ if(settings.transition == 'slide')
445
+ var trans = 'slide'+direction;
446
+ else var trans = settings.transition;
447
+
448
+ // Animate the panel out
449
+ panel.animate(panelAnimationCSS($contentDivsContainer.width())['hide'][trans], settings.transitionSpeed, settings.transitionEasing, function(){
450
+ panel.hide();
451
+ panel.removeClass('selected');
452
+ //if(settings.classes.panelActive != '') panel.removeClass(settings.classes.panelActive);
453
+ selectLock = false;
454
+ reorderPanels();
455
+ });
456
+ };
457
+
458
+ // Transition in the parameter panel
459
+ // param: panel is the jQuery object of the panel to be shown
460
+ var showPanel = function(panel){
461
+ // Show first
462
+ panel.show();
463
+ panel.addClass(settings.classes.panelActive).addClass('selected');
464
+
465
+ // Then animate css properties
466
+ panel.animate(panelAnimationCSS($contentDivsContainer.width())['show'][settings.transition], settings.transitionSpeed, settings.transitionEasing, function(){
467
+ selectLock = false;
468
+ heightLock = true;
469
+ reorderPanels();
470
+ });
471
+ };
472
+
473
+ // Animate the height of the content container to height target
474
+ // params: target (int) is the new height
475
+ var resizeContentContainer = function(target){
476
+ if(!settings.height)
477
+ $contentDivsContainer.animate({
478
+ height: actualHeight(target)
479
+ }, 200);
480
+ };
481
+
482
+ // Position the panel arrows
483
+ var positionPanelArrows = function(){
484
+ if(settings.panelArrows){
485
+ // Initialize them if you need to
486
+ if(!$leftPanelArrow && !$rightPanelArrow){
487
+ $leftPanelArrow = $("<div class='ui-slider-tabs-leftPanelArrow'>").click(function(){
488
+ plugin.prev();
489
+ });
490
+ $rightPanelArrow = $("<div class='ui-slider-tabs-rightPanelArrow'>").click(function(){
491
+ plugin.next();
492
+ });
493
+
494
+ $leftPanelArrow.appendTo($contentDivsContainer);
495
+ $rightPanelArrow.appendTo($contentDivsContainer);
496
+ }
497
+
498
+ // Set correct CSS 'top' attribute of each panel arrow
499
+ $rightPanelArrow.css({
500
+ "top": $contentDivsContainer.height()/2 - $rightPanelArrow.outerHeight()/2
501
+ });
502
+ $leftPanelArrow.css({
503
+ "top": $contentDivsContainer.height()/2 - $leftPanelArrow.outerHeight()/2
504
+ });
505
+ }
506
+ };
507
+
508
+ // Change the width of $tabsList to the sum of the outer widths of all tabs
509
+ var resizeTabsList = function(){
510
+ // Calculate total width
511
+ var width = 0;
512
+ $tabsList.children().each(function(index, element){
513
+ width += $(element).outerWidth(true);
514
+ });
515
+ // Set new width of $tabsList
516
+ $tabsList.width(width);
517
+
518
+ // Update minMargin. Hide tab arrows if no overflow
519
+ if($tabsListContainer.width() < width && settings.tabArrows){
520
+ plugin.showTabArrows();
521
+ minMargin = $tabsListContainer.width() - width;
522
+ }
523
+ else plugin.hideTabArrows();
524
+ }
525
+
526
+ // Resize indiviual panels to the width of the new container
527
+ var resizePanels = function(){
528
+ $contentDivs.width($contentDivsContainer.width() - ($contentDivs.outerWidth() - $contentDivs.width()));
529
+ };
530
+
531
+ // Get height of a hidden element
532
+ var actualHeight = function(element){
533
+ var prevCSS = {
534
+ 'display': element.css('display'),
535
+ 'left': element.css('left'),
536
+ 'position': element.css('position')
537
+ };
538
+ element.css({
539
+ 'display': 'normal',
540
+ 'left': -5000,
541
+ 'position': 'absolute'
542
+ });
543
+ var height = element.outerHeight();
544
+ element.css(prevCSS);
545
+ return height;
546
+ };
547
+
548
+
549
+ // Initialize the plugin
550
+ plugin.init();
551
+ };
552
+
553
+ /*
554
+ * Handle input. Call public functions and initializers
555
+ */
556
+ $.fn.sliderTabs = function( data ) {
557
+ return this.each(function(){
558
+ var _this = $(this),
559
+ plugin = _this.data('sliderTabs');
560
+
561
+ // Method calling logic
562
+ if (!plugin) {
563
+ // If no plugin, initialize it
564
+ plugin = new $.sliderTabs(this, data);
565
+ _this.data('sliderTabs', plugin);
566
+ return plugin;
567
+ }
568
+ if (plugin.methods[data]){
569
+ // If plugin exists, call a public method
570
+ return plugin.methods[ data ].apply( this, Array.prototype.slice.call( arguments, 1 ));
571
+ }
572
+ });
573
+ };
574
+ })( jQuery );
575
+
576
+
577
+
578
+
579
+
580
+ /*
581
+ * Additional easing functions
582
+ * Taken from jQuery UI source code
583
+ *
584
+ * https://github.com/jquery/jquery-ui
585
+ */
586
+ (function( $ ){
587
+ $.extend($.easing,
588
+ {
589
+ def: 'easeOutQuad',
590
+ swing: function (x, t, b, c, d) {
591
+ //alert($.easing.default);
592
+ return $.easing[$.easing.def](x, t, b, c, d);
593
+ },
594
+ easeInQuad: function (x, t, b, c, d) {
595
+ return c*(t/=d)*t + b;
596
+ },
597
+ easeOutQuad: function (x, t, b, c, d) {
598
+ return -c *(t/=d)*(t-2) + b;
599
+ },
600
+ easeInOutQuad: function (x, t, b, c, d) {
601
+ if ((t/=d/2) < 1) return c/2*t*t + b;
602
+ return -c/2 * ((--t)*(t-2) - 1) + b;
603
+ },
604
+ easeInCubic: function (x, t, b, c, d) {
605
+ return c*(t/=d)*t*t + b;
606
+ },
607
+ easeOutCubic: function (x, t, b, c, d) {
608
+ return c*((t=t/d-1)*t*t + 1) + b;
609
+ },
610
+ easeInOutCubic: function (x, t, b, c, d) {
611
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
612
+ return c/2*((t-=2)*t*t + 2) + b;
613
+ },
614
+ easeInQuart: function (x, t, b, c, d) {
615
+ return c*(t/=d)*t*t*t + b;
616
+ },
617
+ easeOutQuart: function (x, t, b, c, d) {
618
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
619
+ },
620
+ easeInOutQuart: function (x, t, b, c, d) {
621
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
622
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
623
+ },
624
+ easeInQuint: function (x, t, b, c, d) {
625
+ return c*(t/=d)*t*t*t*t + b;
626
+ },
627
+ easeOutQuint: function (x, t, b, c, d) {
628
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
629
+ },
630
+ easeInOutQuint: function (x, t, b, c, d) {
631
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
632
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
633
+ },
634
+ easeInSine: function (x, t, b, c, d) {
635
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
636
+ },
637
+ easeOutSine: function (x, t, b, c, d) {
638
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
639
+ },
640
+ easeInOutSine: function (x, t, b, c, d) {
641
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
642
+ },
643
+ easeInExpo: function (x, t, b, c, d) {
644
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
645
+ },
646
+ easeOutExpo: function (x, t, b, c, d) {
647
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
648
+ },
649
+ easeInOutExpo: function (x, t, b, c, d) {
650
+ if (t==0) return b;
651
+ if (t==d) return b+c;
652
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
653
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
654
+ },
655
+ easeInCirc: function (x, t, b, c, d) {
656
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
657
+ },
658
+ easeOutCirc: function (x, t, b, c, d) {
659
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
660
+ },
661
+ easeInOutCirc: function (x, t, b, c, d) {
662
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
663
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
664
+ },
665
+ easeInElastic: function (x, t, b, c, d) {
666
+ var s=1.70158;var p=0;var a=c;
667
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
668
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
669
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
670
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
671
+ },
672
+ easeOutElastic: function (x, t, b, c, d) {
673
+ var s=1.70158;var p=0;var a=c;
674
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
675
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
676
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
677
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
678
+ },
679
+ easeInOutElastic: function (x, t, b, c, d) {
680
+ var s=1.70158;var p=0;var a=c;
681
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
682
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
683
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
684
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
685
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
686
+ },
687
+ easeInBack: function (x, t, b, c, d, s) {
688
+ if (s == undefined) s = 1.70158;
689
+ return c*(t/=d)*t*((s+1)*t - s) + b;
690
+ },
691
+ easeOutBack: function (x, t, b, c, d, s) {
692
+ if (s == undefined) s = 1.70158;
693
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
694
+ },
695
+ easeInOutBack: function (x, t, b, c, d, s) {
696
+ if (s == undefined) s = 1.70158;
697
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
698
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
699
+ },
700
+ easeInBounce: function (x, t, b, c, d) {
701
+ return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
702
+ },
703
+ easeOutBounce: function (x, t, b, c, d) {
704
+ if ((t/=d) < (1/2.75)) {
705
+ return c*(7.5625*t*t) + b;
706
+ } else if (t < (2/2.75)) {
707
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
708
+ } else if (t < (2.5/2.75)) {
709
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
710
+ } else {
711
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
712
+ }
713
+ },
714
+ easeInOutBounce: function (x, t, b, c, d) {
715
+ if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
716
+ return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
717
+ }
718
+ });
719
+ })( jQuery );
720
+
721
+
722
+
723
+
724
+
725
+ /*
726
+ * The following is the jQuery Mousewheel plugin. Full credit goes to
727
+ * Brandon Aaron. (https://github.com/brandonaaron/jquery-mousewheel)
728
+ * /
729
+
730
+
731
+ /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
732
+ * Licensed under the MIT License (LICENSE.txt).
733
+ *
734
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
735
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
736
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
737
+ *
738
+ * Version: 3.0.6
739
+ *
740
+ * Requires: 1.2.2+
741
+ */
742
+
743
+ (function($) {
744
+
745
+ var types = ['DOMMouseScroll', 'mousewheel'];
746
+
747
+ if ($.event.fixHooks) {
748
+ for ( var i=types.length; i; ) {
749
+ $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
750
+ }
751
+ }
752
+
753
+ $.event.special.mousewheel = {
754
+ setup: function() {
755
+ if ( this.addEventListener ) {
756
+ for ( var i=types.length; i; ) {
757
+ this.addEventListener( types[--i], handler, false );
758
+ }
759
+ } else {
760
+ this.onmousewheel = handler;
761
+ }
762
+ },
763
+
764
+ teardown: function() {
765
+ if ( this.removeEventListener ) {
766
+ for ( var i=types.length; i; ) {
767
+ this.removeEventListener( types[--i], handler, false );
768
+ }
769
+ } else {
770
+ this.onmousewheel = null;
771
+ }
772
+ }
773
+ };
774
+
775
+ $.fn.extend({
776
+ mousewheel: function(fn) {
777
+ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
778
+ },
779
+
780
+ unmousewheel: function(fn) {
781
+ return this.unbind("mousewheel", fn);
782
+ }
783
+ });
784
+
785
+
786
+ function handler(event) {
787
+ var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
788
+ event = $.event.fix(orgEvent);
789
+ event.type = "mousewheel";
790
+
791
+ // Old school scrollwheel delta
792
+ if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
793
+ if ( orgEvent.detail ) { delta = -orgEvent.detail/3; }
794
+
795
+ // New school multidimensional scroll (touchpads) deltas
796
+ deltaY = delta;
797
+
798
+ // Gecko
799
+ if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
800
+ deltaY = 0;
801
+ deltaX = -1*delta;
802
+ }
803
+
804
+ // Webkit
805
+ if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
806
+ if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
807
+
808
+ // Add event and delta to the front of the arguments
809
+ args.unshift(event, delta, deltaX, deltaY);
810
+
811
+ return ($.event.dispatch || $.event.handle).apply(this, args);
812
+ }
813
+
814
+ })(jQuery);
815
+
816
+
817
+
818
+ /*
819
+ * The following is the jQuery Resize plugin. Full credit goes to
820
+ * "Cowboy" Ben Alman. (https://github.com/cowboy/jquery-resize)
821
+ * /
822
+
823
+ /*
824
+ * jQuery resize event - v1.1 - 3/14/2010
825
+ * http://benalman.com/projects/jquery-resize-plugin/
826
+ *
827
+ * Copyright (c) 2010 "Cowboy" Ben Alman
828
+ * Dual licensed under the MIT and GPL licenses.
829
+ * http://benalman.com/about/license/
830
+ */
831
+ (function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
app/helper/RTMediaAddon.php CHANGED
@@ -170,7 +170,7 @@ if ( ! class_exists( 'RTMediaAddon' ) ){
170
  array(
171
  'title' => __( 'rtMedia Photo Tagging', 'rtmedia' ),
172
  'img_src' => $img_src . 'rtmedia-phototagging-240x184.png',
173
- 'product_link' => 'http://rtcamp.com/store/buddypress-media-photo-tagging/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
174
  'desc' => '<p>' . __( 'rtMedia Photo Tagging add-on enables tagging on photos uploaded using BuddyPress Media.', 'rtmedia' ) . '</p> <p><strong>' . __( 'Important', 'rtmedia' ) . ':</strong> ' . __( 'You need to have ImageMagick installed on your server for this addon to work.', 'rtmedia' ) . '</p>',
175
  'price' => '$49',
176
  'demo_link' => 'http://demo.rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
@@ -181,7 +181,7 @@ if ( ! class_exists( 'RTMediaAddon' ) ){
181
  array(
182
  'title' => __( 'rtMedia Instagram', 'rtmedia' ),
183
  'img_src' => $img_src . 'rtmedia-instagram-240x184.png',
184
- 'product_link' => 'http://rtcamp.com/store/buddypress-media-instagram/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
185
  'desc' => '<p>' . __( 'rtMedia Instagram adds Instagram like filters to images uploaded with rtMedia.', 'rtmedia' ) . '</p> <p><strong>' . __( 'Important', 'rtmedia' ) . ':</strong> ' . __( 'You need to have ImageMagick installed on your server for this addon to work.', 'rtmedia' ) . '</p>',
186
  'price' => '$49',
187
  'demo_link' => 'http://demo.rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
@@ -194,7 +194,7 @@ if ( ! class_exists( 'RTMediaAddon' ) ){
194
  array(
195
  'title' => __( 'rtMedia Kaltura Add-on', 'rtmedia' ),
196
  'img_src' => $img_src . 'rtmedia-kaltura-240x184.png',
197
- 'product_link' => 'http://rtcamp.com/store/buddypress-media-kaltura/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
198
  'desc' => '<p>' . __( 'Add support for more video formats using Kaltura video solution.', 'rtmedia' ) . '</p> <p>' . __( 'Works with Kaltura.com, self-hosted Kaltura-CE and Kaltura-on-premise.', 'rtmedia' ) . '</p>',
199
  'price' => '$199',
200
  'demo_link' => 'http://demo.rtcamp.com/bpm-kaltura/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
170
  array(
171
  'title' => __( 'rtMedia Photo Tagging', 'rtmedia' ),
172
  'img_src' => $img_src . 'rtmedia-phototagging-240x184.png',
173
+ 'product_link' => 'http://rtcamp.com/store/rtmedia-photo-tagging/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
174
  'desc' => '<p>' . __( 'rtMedia Photo Tagging add-on enables tagging on photos uploaded using BuddyPress Media.', 'rtmedia' ) . '</p> <p><strong>' . __( 'Important', 'rtmedia' ) . ':</strong> ' . __( 'You need to have ImageMagick installed on your server for this addon to work.', 'rtmedia' ) . '</p>',
175
  'price' => '$49',
176
  'demo_link' => 'http://demo.rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
181
  array(
182
  'title' => __( 'rtMedia Instagram', 'rtmedia' ),
183
  'img_src' => $img_src . 'rtmedia-instagram-240x184.png',
184
+ 'product_link' => 'http://rtcamp.com/store/rtmedia-instagram/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
185
  'desc' => '<p>' . __( 'rtMedia Instagram adds Instagram like filters to images uploaded with rtMedia.', 'rtmedia' ) . '</p> <p><strong>' . __( 'Important', 'rtmedia' ) . ':</strong> ' . __( 'You need to have ImageMagick installed on your server for this addon to work.', 'rtmedia' ) . '</p>',
186
  'price' => '$49',
187
  'demo_link' => 'http://demo.rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
194
  array(
195
  'title' => __( 'rtMedia Kaltura Add-on', 'rtmedia' ),
196
  'img_src' => $img_src . 'rtmedia-kaltura-240x184.png',
197
+ 'product_link' => 'http://rtcamp.com/store/rtmedia-kaltura-add-on/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
198
  'desc' => '<p>' . __( 'Add support for more video formats using Kaltura video solution.', 'rtmedia' ) . '</p> <p>' . __( 'Works with Kaltura.com, self-hosted Kaltura-CE and Kaltura-on-premise.', 'rtmedia' ) . '</p>',
199
  'price' => '$199',
200
  'demo_link' => 'http://demo.rtcamp.com/bpm-kaltura/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media',
app/main/RTMedia.php CHANGED
@@ -885,13 +885,15 @@ class RTMedia
885
  wp_localize_script('rtmedia-main', 'rtmedia_delete_uploaded_media', __('This media is uploaded. Are you sure you want to delete this media?',"rtmedia"));
886
  wp_localize_script('rtmedia-main', 'rtm_wp_version', get_bloginfo('version') );
887
  wp_localize_script ( 'rtmedia-backbone', 'rMedia_loading_media', RTMEDIA_URL . "app/assets/img/boxspinner.gif" );
888
- global $rtmedia_query;
889
- if( class_exists('BuddyPress') ) {
890
- $rtmedia_user_domain = trailingslashit ( bp_displayed_user_domain() . constant('RTMEDIA_MEDIA_SLUG') );
891
- } else {
892
- $rtmedia_user_domain = trailingslashit( trailingslashit( get_author_posts_url($rtmedia_query->query['context_id'] ) ). constant('RTMEDIA_MEDIA_SLUG') );
893
- }
894
- wp_localize_script ( 'rtmedia-backbone', 'rtmedia_user_domain', $rtmedia_user_domain );
 
 
895
 
896
  // Enqueue touchswipe
897
  wp_enqueue_script( 'rtmedia-touchswipe', RTMEDIA_URL . 'lib/touchswipe/jquery.touchSwipe.min.js', array('jquery'), RTMEDIA_VERSION, true);
885
  wp_localize_script('rtmedia-main', 'rtmedia_delete_uploaded_media', __('This media is uploaded. Are you sure you want to delete this media?',"rtmedia"));
886
  wp_localize_script('rtmedia-main', 'rtm_wp_version', get_bloginfo('version') );
887
  wp_localize_script ( 'rtmedia-backbone', 'rMedia_loading_media', RTMEDIA_URL . "app/assets/img/boxspinner.gif" );
888
+
889
+ // We are not using it anymore and hence commenting
890
+ // global $rtmedia_query;
891
+ // if( class_exists('BuddyPress') ) {
892
+ // $rtmedia_user_domain = trailingslashit ( bp_displayed_user_domain() . constant('RTMEDIA_MEDIA_SLUG') );
893
+ // } else {
894
+ // $rtmedia_user_domain = trailingslashit( trailingslashit( get_author_posts_url($rtmedia_query->query['context_id'] ) ). constant('RTMEDIA_MEDIA_SLUG') );
895
+ // }
896
+ // wp_localize_script ( 'rtmedia-backbone', 'rtmedia_user_domain', $rtmedia_user_domain );
897
 
898
  // Enqueue touchswipe
899
  wp_enqueue_script( 'rtmedia-touchswipe', RTMEDIA_URL . 'lib/touchswipe/jquery.touchSwipe.min.js', array('jquery'), RTMEDIA_VERSION, true);
app/main/controllers/template/RTMediaTemplate.php CHANGED
@@ -319,10 +319,10 @@ class RTMediaTemplate {
319
  }
320
  //refresh
321
  $rtMediaNav = new RTMediaNav();
322
- if ( $rtmedia_query->media[ 0 ]->context == "group" ){
323
- $rtMediaNav->refresh_counts( $rtmedia_query->media[ 0 ]->context_id, array( "context" => $rtmedia_query->media[ 0 ]->context, 'context_id' => $rtmedia_query->media[ 0 ]->context_id ) );
324
  } else {
325
- $rtMediaNav->refresh_counts( $rtmedia_query->media[ 0 ]->media_author, array( "context" => "profile", 'media_author' => $rtmedia_query->media[ 0 ]->media_author ) );
326
  }
327
  wp_safe_redirect( get_rtmedia_permalink( $rtmedia_query->media_query[ 'album_id' ] ) . 'edit/' );
328
  die();
319
  }
320
  //refresh
321
  $rtMediaNav = new RTMediaNav();
322
+ if ( $rtmedia_query->media_query['context'] == "group" ){
323
+ $rtMediaNav->refresh_counts( $rtmedia_query->media_query['context_id'], array( "context" => $rtmedia_query->media_query['context'], 'context_id' => $rtmedia_query->media_query['context_id'] ) );
324
  } else {
325
+ $rtMediaNav->refresh_counts( $rtmedia_query->media_query['media_author'], array( "context" => "profile", 'media_author' => $rtmedia_query->media_query['media_author'] ) );
326
  }
327
  wp_safe_redirect( get_rtmedia_permalink( $rtmedia_query->media_query[ 'album_id' ] ) . 'edit/' );
328
  die();
app/main/controllers/template/rt-template-functions.php CHANGED
@@ -49,7 +49,7 @@ function rtmedia_title() {
49
  echo '<%= media_title %>';
50
  } else {
51
  global $rtmedia_media;
52
- return stripslashes( htmlentities( $rtmedia_media->media_title ) );
53
  }
54
  }
55
 
@@ -566,7 +566,7 @@ function rtmedia_title_input() {
566
  global $rtmedia_media;
567
 
568
  $name = 'media_title';
569
- $value = stripslashes( htmlentities( $rtmedia_media->media_title ) );
570
 
571
  $html = '';
572
 
@@ -910,8 +910,10 @@ function rtmedia_pagination_next_link() {
910
  $link .= $site_url . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/';
911
  }
912
  } else {
913
- //$post = get_post ( $rtmedia_media->post_parent );
914
- $post = get_post( get_post_field( "post_parent", $rtmedia_query->media->media_id ) );
 
 
915
 
916
  $link .= $site_url . $post->post_name . '/';
917
  }
49
  echo '<%= media_title %>';
50
  } else {
51
  global $rtmedia_media;
52
+ return stripslashes( esc_html( $rtmedia_media->media_title ) );
53
  }
54
  }
55
 
566
  global $rtmedia_media;
567
 
568
  $name = 'media_title';
569
+ $value = stripslashes( esc_html( $rtmedia_media->media_title ) );
570
 
571
  $html = '';
572
 
910
  $link .= $site_url . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/';
911
  }
912
  } else {
913
+ // if there are more media than number of media per page to show than $rtmedia_query->media->media_id will be set other wise take media_id of very first media
914
+ // For more understanding why array became object check rewind_media() in RTMediaQuery.php file and check it's call
915
+ $post_id = ( isset( $rtmedia_query->media->media_id ) ? $rtmedia_query->media->media_id : $rtmedia_query->media[0]->media_id );
916
+ $post = get_post( get_post_field( "post_parent", $post_id ) );
917
 
918
  $link .= $site_url . $post->post_name . '/';
919
  }
app/main/interactions/RTMediaInteraction.php CHANGED
@@ -178,7 +178,7 @@ class RTMediaInteraction {
178
  if ( is_array( $rtmedia_query->album ) && count ( $rtmedia_query->album ) > 0 ) {
179
  foreach ( $rtmedia_query->album as $single_album ) {
180
  if ( intval ( $single_album->id ) == intval ( $rtmedia_query->media_query[ "album_id" ] ) ) {
181
- $title .= $sep . stripslashes( htmlentities( ucfirst ( $single_album->media_title ) ) );
182
  $sep = $oldSep;
183
  }
184
  }
@@ -186,7 +186,7 @@ class RTMediaInteraction {
186
  }
187
  } else {
188
  if ( isset ( $rtmedia_query->media ) && count ( $rtmedia_query->media ) > 0 ) {
189
- $title .= $sep . stripslashes( htmlentities( ucfirst ( $rtmedia_query->media[ 0 ]->media_title ) ) );
190
  $sep = $oldSep;
191
  }
192
  $title .= $sep . ucfirst ( $rtmedia_query->query[ "media_type" ] );
178
  if ( is_array( $rtmedia_query->album ) && count ( $rtmedia_query->album ) > 0 ) {
179
  foreach ( $rtmedia_query->album as $single_album ) {
180
  if ( intval ( $single_album->id ) == intval ( $rtmedia_query->media_query[ "album_id" ] ) ) {
181
+ $title .= $sep . stripslashes( esc_html( ucfirst ( $single_album->media_title ) ) );
182
  $sep = $oldSep;
183
  }
184
  }
186
  }
187
  } else {
188
  if ( isset ( $rtmedia_query->media ) && count ( $rtmedia_query->media ) > 0 ) {
189
+ $title .= $sep . stripslashes( esc_html( ucfirst ( $rtmedia_query->media[ 0 ]->media_title ) ) );
190
  $sep = $oldSep;
191
  }
192
  $title .= $sep . ucfirst ( $rtmedia_query->query[ "media_type" ] );
app/schema/rtm_api.schema CHANGED
@@ -7,4 +7,5 @@ CREATE TABLE %s (
7
  status varchar(255),
8
  last_access TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
9
  PRIMARY KEY (id)
10
- );
 
7
  status varchar(255),
8
  last_access TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
9
  PRIMARY KEY (id)
10
+ )
11
+ DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
app/services/RTMediaEncoding.php CHANGED
@@ -619,7 +619,7 @@ class RTMediaEncoding {
619
  }
620
 
621
  public function enter_api_key() {
622
- if (isset($_GET['apikey'])) {
623
  echo json_encode(array('apikey' => $_GET['apikey']));
624
  }
625
  else {
619
  }
620
 
621
  public function enter_api_key() {
622
+ if (isset($_GET['apikey']) && $_GET['apikey'] != '') {
623
  echo json_encode(array('apikey' => $_GET['apikey']));
624
  }
625
  else {
index.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: rtMedia for WordPress, BuddyPress and bbPress
5
  Plugin URI: http://rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media
6
  Description: This plugin adds missing media rich features like photos, videos and audio uploading to BuddyPress which are essential if you are building social network, seriously!
7
- Version: 3.7.31
8
  Author: rtCamp
9
  Text Domain: rtmedia
10
  Author URI: http://rtcamp.com/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media
4
  Plugin Name: rtMedia for WordPress, BuddyPress and bbPress
5
  Plugin URI: http://rtcamp.com/rtmedia/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media
6
  Description: This plugin adds missing media rich features like photos, videos and audio uploading to BuddyPress which are essential if you are building social network, seriously!
7
+ Version: 3.7.32
8
  Author: rtCamp
9
  Text Domain: rtmedia
10
  Author URI: http://rtcamp.com/?utm_source=dashboard&utm_medium=plugin&utm_campaign=buddypress-media
languages/rtmedia-ar_AR.mo CHANGED
Binary file
languages/rtmedia-de_DE.mo CHANGED
Binary file
languages/rtmedia-es_ES.mo CHANGED
Binary file
languages/rtmedia-fa_IR.mo CHANGED
Binary file
languages/rtmedia-fr_FR.mo CHANGED
Binary file
languages/rtmedia-hu_HU.mo CHANGED
Binary file
languages/rtmedia-it_IT.mo CHANGED
Binary file
languages/rtmedia-ja_JA.mo CHANGED
Binary file
languages/rtmedia-nb_NO.mo CHANGED
Binary file
languages/rtmedia-nl_NL.mo CHANGED
Binary file
languages/rtmedia-pl_PL.mo CHANGED
Binary file
languages/rtmedia-pt_BR.mo CHANGED
Binary file
languages/rtmedia-ro_RO.mo CHANGED
Binary file
languages/rtmedia-ru_RU.mo CHANGED
Binary file
languages/rtmedia-sk_SK.mo CHANGED
Binary file
languages/rtmedia-sr_SR.mo CHANGED
Binary file
languages/rtmedia-sv_SE.mo CHANGED
Binary file
languages/rtmedia.mo CHANGED
Binary file
languages/rtmedia.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: BuddyPress Media\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2014-12-30 17:23+0530\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
@@ -60,12 +60,12 @@ msgstr ""
60
 
61
  #: ../app/main/RTMedia.php:555
62
  #: ../app/main/controllers/template/RTMediaNav.php:155
63
- #: ../app/main/controllers/template/rt-template-functions.php:82
64
  msgid "All"
65
  msgstr ""
66
 
67
  #: ../app/main/RTMedia.php:564
68
- #: ../app/main/controllers/template/rt-template-functions.php:1381
69
  #: ../app/main/controllers/media/RTMediaAlbum.php:49
70
  #: ../app/main/controllers/upload/RTMediaUploadView.php:51
71
  #: ../app/main/controllers/upload/RTMediaUploadView.php:54
@@ -80,8 +80,8 @@ msgid "Albums"
80
  msgstr ""
81
 
82
  #: ../app/main/RTMedia.php:575
83
- #: ../app/main/controllers/template/rt-template-functions.php:2126
84
- #: ../app/main/controllers/template/rt-template-functions.php:2130
85
  msgid "Upload"
86
  msgstr ""
87
 
@@ -186,14 +186,14 @@ msgid "Close"
186
  msgstr ""
187
 
188
  #: ../app/main/RTMedia.php:877
189
- #: ../app/main/controllers/template/rt-template-functions.php:723
190
- #: ../app/main/controllers/template/rt-template-functions.php:744
191
  msgid "Edit"
192
  msgstr ""
193
 
194
  #: ../app/main/RTMedia.php:878
195
- #: ../app/main/controllers/template/rt-template-functions.php:1467
196
- #: ../app/main/controllers/template/rt-template-functions.php:1474
197
  #: ../templates/media/album-single-edit.php:60
198
  msgid "Delete"
199
  msgstr ""
@@ -226,7 +226,7 @@ msgstr ""
226
  msgid "This media is uploaded. Are you sure you want to delete this media?"
227
  msgstr ""
228
 
229
- #: ../app/main/RTMedia.php:923
230
  msgid "There are some uploads in progress. Do you want to cancel them?"
231
  msgstr ""
232
 
@@ -241,7 +241,7 @@ msgid "Save Changes"
241
  msgstr ""
242
 
243
  #: ../app/main/controllers/privacy/RTMediaPrivacy.php:289
244
- #: ../app/admin/RTMediaAdmin.php:1400
245
  msgid "Privacy"
246
  msgstr ""
247
 
@@ -250,7 +250,7 @@ msgid "The web browser on your device cannot be used to upload files."
250
  msgstr ""
251
 
252
  #: ../app/main/controllers/shortcodes/RTMediaUploadShortcode.php:103
253
- #: ../app/main/controllers/template/rt-template-functions.php:1502
254
  #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:187
255
  msgid "You are not allowed to upload/attach media."
256
  msgstr ""
@@ -279,411 +279,411 @@ msgstr ""
279
  msgid "Error in updating Media"
280
  msgstr ""
281
 
282
- #: ../app/main/controllers/template/rt-template-functions.php:699
283
- #: ../app/main/controllers/template/rt-template-functions.php:1661
284
  msgid "Options"
285
  msgstr ""
286
 
287
- #: ../app/main/controllers/template/rt-template-functions.php:789
288
  msgid "There are no comments on this media yet."
289
  msgstr ""
290
 
291
- #: ../app/main/controllers/template/rt-template-functions.php:824
292
  msgid "Delete Comment"
293
  msgstr ""
294
 
295
- #: ../app/main/controllers/template/rt-template-functions.php:1019
296
  msgid "Go to page no : "
297
  msgstr ""
298
 
299
- #: ../app/main/controllers/template/rt-template-functions.php:1023
300
  msgid "Go"
301
  msgstr ""
302
 
303
- #: ../app/main/controllers/template/rt-template-functions.php:1200
304
  msgid "Video Thumbnail"
305
  msgstr ""
306
 
307
- #: ../app/main/controllers/template/rt-template-functions.php:1249
308
  msgid "Video Thumbnail:"
309
  msgstr ""
310
 
311
- #: ../app/main/controllers/template/rt-template-functions.php:1333
312
  msgid "Image"
313
  msgstr ""
314
 
315
- #: ../app/main/controllers/template/rt-template-functions.php:1349
316
  msgid "Modify Image"
317
  msgstr ""
318
 
319
- #: ../app/main/controllers/template/rt-template-functions.php:1426
320
  msgid "Type Comment..."
321
  msgstr ""
322
 
323
- #: ../app/main/controllers/template/rt-template-functions.php:1431
324
  #: ../templates/media/media-single.php:79
325
  #: ../templates/media/media-single.php:118
326
  msgid "Comment"
327
  msgstr ""
328
 
329
- #: ../app/main/controllers/template/rt-template-functions.php:1467
330
- #: ../app/main/controllers/template/rt-template-functions.php:1474
331
  msgid "Delete Media"
332
  msgstr ""
333
 
334
- #: ../app/main/controllers/template/rt-template-functions.php:1603
335
  msgid "Profile Albums"
336
  msgstr ""
337
 
338
- #: ../app/main/controllers/template/rt-template-functions.php:1606
339
- #: ../app/main/controllers/template/rt-template-functions.php:1641
340
  msgid "Group Albums"
341
  msgstr ""
342
 
343
- #: ../app/main/controllers/template/rt-template-functions.php:1724
344
- #: ../app/main/controllers/template/rt-template-functions.php:1740
345
  msgid "Create New Album"
346
  msgstr ""
347
 
348
- #: ../app/main/controllers/template/rt-template-functions.php:1724
349
  msgid "Add Album"
350
  msgstr ""
351
 
352
- #: ../app/main/controllers/template/rt-template-functions.php:1742
353
  msgid "Album Title : "
354
  msgstr ""
355
 
356
- #: ../app/main/controllers/template/rt-template-functions.php:1750
357
  #: ../app/main/controllers/media/RTMediaAlbum.php:51
358
  msgid "Create Album"
359
  msgstr ""
360
 
361
- #: ../app/main/controllers/template/rt-template-functions.php:1781
362
- #: ../app/main/controllers/template/rt-template-functions.php:1788
363
- #: ../app/main/controllers/template/rt-template-functions.php:1842
364
  msgid "Merge Album"
365
  msgstr ""
366
 
367
- #: ../app/main/controllers/template/rt-template-functions.php:1784
368
  msgid "Select Album to merge with : "
369
  msgstr ""
370
 
371
- #: ../app/main/controllers/template/rt-template-functions.php:1832
372
  #: ../app/main/controllers/media/RTMediaAlbum.php:52
373
  msgid "Edit Album"
374
  msgstr ""
375
 
376
- #: ../app/main/controllers/template/rt-template-functions.php:1833
377
  msgid "Delete Album"
378
  msgstr ""
379
 
380
- #: ../app/main/controllers/template/rt-template-functions.php:1871
381
  msgid "Merge"
382
  msgstr ""
383
 
384
- #: ../app/main/controllers/template/rt-template-functions.php:1924
385
  msgid "Privacy : "
386
  msgstr ""
387
 
388
- #: ../app/main/controllers/template/rt-template-functions.php:2114
389
  msgid "people like this"
390
  msgstr ""
391
 
392
- #: ../app/main/controllers/template/rt-template-functions.php:2126
393
- #: ../app/main/controllers/template/rt-template-functions.php:2130
394
  msgid "Upload Media"
395
  msgstr ""
396
 
397
- #: ../app/main/controllers/template/rt-template-functions.php:2173
398
  msgid "Go PRO!"
399
  msgstr ""
400
 
401
- #: ../app/main/controllers/template/rt-template-functions.php:2194
402
  msgid "Reasons to buy rtMedia-PRO"
403
  msgstr ""
404
 
405
- #: ../app/main/controllers/template/rt-template-functions.php:2199
406
  msgid "FavList"
407
  msgstr ""
408
 
409
- #: ../app/main/controllers/template/rt-template-functions.php:2200
410
  msgid "Users can create their own list of favorite media."
411
  msgstr ""
412
 
413
- #: ../app/main/controllers/template/rt-template-functions.php:2206
414
  msgid "Media Attributes"
415
  msgstr ""
416
 
417
- #: ../app/main/controllers/template/rt-template-functions.php:2207
418
  msgid "Add media attributes and categories them."
419
  msgstr ""
420
 
421
- #: ../app/main/controllers/template/rt-template-functions.php:2213
422
  msgid "Sort Media"
423
  msgstr ""
424
 
425
- #: ../app/main/controllers/template/rt-template-functions.php:2214
426
  msgid ""
427
  "You can sort media from media gallery according to media size and the date "
428
  "of media upload."
429
  msgstr ""
430
 
431
- #: ../app/main/controllers/template/rt-template-functions.php:2220
432
  msgid "Direct URL upload"
433
  msgstr ""
434
 
435
- #: ../app/main/controllers/template/rt-template-functions.php:2221
436
  msgid ""
437
  "You no longer need to download media from URL and then upload it. Just "
438
  "provide link and rtMedia will handle it."
439
  msgstr ""
440
 
441
- #: ../app/main/controllers/template/rt-template-functions.php:2227
442
  msgid "Per user upload quota"
443
  msgstr ""
444
 
445
- #: ../app/main/controllers/template/rt-template-functions.php:2228
446
  msgid ""
447
  "You can set upload quota for users on the daily, monthly and lifetime basis."
448
  msgstr ""
449
 
450
- #: ../app/main/controllers/template/rt-template-functions.php:2234
451
  msgid "URL preview in BuddyPress activity"
452
  msgstr ""
453
 
454
- #: ../app/main/controllers/template/rt-template-functions.php:2235
455
  msgid "Show URL previews in BuddyPress activity."
456
  msgstr ""
457
 
458
- #: ../app/main/controllers/template/rt-template-functions.php:2241
459
  msgid "Bulk media edit"
460
  msgstr ""
461
 
462
- #: ../app/main/controllers/template/rt-template-functions.php:2242
463
  msgid "You can edit media in bulk mode."
464
  msgstr ""
465
 
466
- #: ../app/main/controllers/template/rt-template-functions.php:2248
467
  msgid "User's liked media page"
468
  msgstr ""
469
 
470
- #: ../app/main/controllers/template/rt-template-functions.php:2249
471
  msgid ""
472
  "Now you can see user's liked media page. A new tab \"Likes\" has been added."
473
  msgstr ""
474
 
475
- #: ../app/main/controllers/template/rt-template-functions.php:2255
476
  msgid "RSS Feed/Podcasting Support"
477
  msgstr ""
478
 
479
- #: ../app/main/controllers/template/rt-template-functions.php:2256
480
  msgid ""
481
  "You can consume rtMedia uploads from iTunes as well as any feed-reader/"
482
  "podcasting software."
483
  msgstr ""
484
 
485
- #: ../app/main/controllers/template/rt-template-functions.php:2262
486
  msgid "WordPress Comment Attachment"
487
  msgstr ""
488
 
489
- #: ../app/main/controllers/template/rt-template-functions.php:2263
490
  msgid "You can attach files to WordPress comments."
491
  msgstr ""
492
 
493
- #: ../app/main/controllers/template/rt-template-functions.php:2269
494
  msgid "bbPress Attachment"
495
  msgstr ""
496
 
497
- #: ../app/main/controllers/template/rt-template-functions.php:2270
498
  msgid "You can attach files to bbPress topic and reply."
499
  msgstr ""
500
 
501
- #: ../app/main/controllers/template/rt-template-functions.php:2276
502
  msgid "Document Support"
503
  msgstr ""
504
 
505
- #: ../app/main/controllers/template/rt-template-functions.php:2277
506
  msgid ""
507
  "You can add, view and download documents like txt, doc, pdf, also add and "
508
  "upload other file types like zip, tar and tar.gz etc."
509
  msgstr ""
510
 
511
- #: ../app/main/controllers/template/rt-template-functions.php:2283
512
  msgid "CubePoints & MyCRED Integration"
513
  msgstr ""
514
 
515
- #: ../app/main/controllers/template/rt-template-functions.php:2284
516
  msgid ""
517
  "Integrating CubePoints/myCRED with rtMedia, you can reward users with "
518
  "virtual points on rtMedia activities."
519
  msgstr ""
520
 
521
- #: ../app/main/controllers/template/rt-template-functions.php:2290
522
  msgid "Album Privacy"
523
  msgstr ""
524
 
525
- #: ../app/main/controllers/template/rt-template-functions.php:2291
526
  msgid ""
527
  "This will allow you to set album privacy while creating albums or change "
528
  "album privacy with editing albums too."
529
  msgstr ""
530
 
531
- #: ../app/main/controllers/template/rt-template-functions.php:2297
532
  msgid "Audio Playlist"
533
  msgstr ""
534
 
535
- #: ../app/main/controllers/template/rt-template-functions.php:2298
536
  msgid ""
537
  "With this feature you can create your audio playlists and listen to your "
538
  "favorite music at will."
539
  msgstr ""
540
 
541
- #: ../app/main/controllers/template/rt-template-functions.php:2304
542
  msgid "Report Button & Moderation Tools"
543
  msgstr ""
544
 
545
- #: ../app/main/controllers/template/rt-template-functions.php:2305
546
  msgid ""
547
  "Users can report media if they find it offensive. Set number of reports to "
548
  "automatically take down media."
549
  msgstr ""
550
 
551
- #: ../app/main/controllers/template/rt-template-functions.php:2311
552
  msgid "Download Button For Media"
553
  msgstr ""
554
 
555
- #: ../app/main/controllers/template/rt-template-functions.php:2312
556
  msgid ""
557
  "Users can download photos, videos and music. Admin has option to allow "
558
  "download the media."
559
  msgstr ""
560
 
561
- #: ../app/main/controllers/template/rt-template-functions.php:2318
562
  msgid "Sidebar widgets"
563
  msgstr ""
564
 
565
- #: ../app/main/controllers/template/rt-template-functions.php:2319
566
  msgid ""
567
  "These will let you display a gallery or an uploader in a sidebar. Several of "
568
  "them can be used in a single sidebar."
569
  msgstr ""
570
 
571
- #: ../app/main/controllers/template/rt-template-functions.php:2325
572
  msgid "Post-editor button"
573
  msgstr ""
574
 
575
- #: ../app/main/controllers/template/rt-template-functions.php:2326
576
  msgid ""
577
  "With this button, a UI appears to quickly generate shortcodes for special "
578
  "pages like \"Editorial Picks\"."
579
  msgstr ""
580
 
581
- #: ../app/main/controllers/template/rt-template-functions.php:2332
582
  msgid "Star-Rating option"
583
  msgstr ""
584
 
585
- #: ../app/main/controllers/template/rt-template-functions.php:2333
586
  msgid ""
587
  "Users can give up to five stars to rate media. This data can be used for "
588
  "\"Most Rated Media\" in sidebars."
589
  msgstr ""
590
 
591
- #: ../app/main/controllers/template/rt-template-functions.php:2339
592
  msgid "Global Albums"
593
  msgstr ""
594
 
595
- #: ../app/main/controllers/template/rt-template-functions.php:2340
596
  msgid ""
597
  "Multiple global albums can be created beforehand. One of these can be chosen "
598
  "as the default album."
599
  msgstr ""
600
 
601
- #: ../app/main/controllers/template/rt-template-functions.php:2346
602
  msgid "Premium one-to-one support"
603
  msgstr ""
604
 
605
- #: ../app/main/controllers/template/rt-template-functions.php:2347
606
  msgid ""
607
  "Without leaving your WordPress dashboard, you can contact us for help using "
608
  "a support form."
609
  msgstr ""
610
 
611
- #: ../app/main/controllers/template/rt-template-functions.php:2354
612
  msgid "Upgrade to rtMedia PRO Now "
613
  msgstr ""
614
 
615
- #: ../app/main/controllers/template/rt-template-functions.php:2366
616
  msgid "You can consider rtMedia Team for following :"
617
  msgstr ""
618
 
619
- #: ../app/main/controllers/template/rt-template-functions.php:2368
620
  msgid "rtMedia Customization ( in Upgrade Safe manner )"
621
  msgstr ""
622
 
623
- #: ../app/main/controllers/template/rt-template-functions.php:2369
624
  msgid "WordPress/BuddyPress Theme Design and Development"
625
  msgstr ""
626
 
627
- #: ../app/main/controllers/template/rt-template-functions.php:2370
628
  msgid "WordPress/BuddyPress Plugin Development"
629
  msgstr ""
630
 
631
- #: ../app/main/controllers/template/rt-template-functions.php:2375
632
  msgid "Contact Us"
633
  msgstr ""
634
 
635
- #: ../app/main/controllers/template/rt-template-functions.php:2395
636
  msgid "Empowering your community with "
637
  msgstr ""
638
 
639
- #: ../app/main/controllers/template/rt-template-functions.php:2397
640
  msgid "The only complete media solution for WordPress, BuddyPress and bbPress"
641
  msgstr ""
642
 
643
- #: ../app/main/controllers/template/rt-template-functions.php:2413
644
  msgid "Close (Esc)"
645
  msgstr ""
646
 
647
- #: ../app/main/controllers/template/rt-template-functions.php:2429
648
  msgid "Public"
649
  msgstr ""
650
 
651
- #: ../app/main/controllers/template/rt-template-functions.php:2433
652
  msgid "All members"
653
  msgstr ""
654
 
655
- #: ../app/main/controllers/template/rt-template-functions.php:2437
656
  msgid "Your friends"
657
  msgstr ""
658
 
659
- #: ../app/main/controllers/template/rt-template-functions.php:2441
660
  msgid "Only you"
661
  msgstr ""
662
 
663
- #: ../app/main/controllers/template/rt-template-functions.php:2445
664
  msgid "Blocked temporarily"
665
  msgstr ""
666
 
667
- #: ../app/main/controllers/template/rt-template-functions.php:2481
668
  #, php-format
669
  msgid "%s ago "
670
  msgstr ""
671
 
672
- #: ../app/main/controllers/template/rt-template-functions.php:2493
673
  #, php-format
674
  msgid "1 second"
675
  msgid_plural "%s seconds"
676
  msgstr[0] ""
677
  msgstr[1] ""
678
 
679
- #: ../app/main/controllers/template/rt-template-functions.php:2496
680
  #, php-format
681
  msgid "1 minute"
682
  msgid_plural "%s minutes"
683
  msgstr[0] ""
684
  msgstr[1] ""
685
 
686
- #: ../app/main/controllers/template/rt-template-functions.php:2499
687
  #, php-format
688
  msgid "1 hour"
689
  msgid_plural "%s hours"
@@ -910,7 +910,7 @@ msgid "Error creating attachment for the media file, please try again"
910
  msgstr ""
911
 
912
  #: ../app/main/controllers/media/RTMediaMedia.php:561
913
- #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:302
914
  #, php-format
915
  msgid "%s added a %s"
916
  msgid_plural "%s added %d %s."
@@ -970,7 +970,7 @@ msgid "Like"
970
  msgstr ""
971
 
972
  #: ../app/main/controllers/media/RTMediaLike.php:16
973
- #: ../app/admin/RTMediaAdmin.php:452
974
  msgid "Likes"
975
  msgstr ""
976
 
@@ -997,17 +997,18 @@ msgstr ""
997
  msgid "Media Files"
998
  msgstr ""
999
 
1000
- #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:306
1001
- #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:308
 
 
 
 
 
1002
  #: ../app/main/controllers/upload/RTMediaUploadEndpoint.php:99
1003
  #, php-format
1004
  msgid "%s added %d %s"
1005
  msgstr ""
1006
 
1007
- #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:308
1008
- msgid "media"
1009
- msgstr ""
1010
-
1011
  #: ../app/main/controllers/group/RTMediaGroupExtension.php:30
1012
  #: ../app/main/controllers/group/RTMediaGroupExtension.php:92
1013
  msgid "Album Creation Control"
@@ -1130,350 +1131,350 @@ msgstr ""
1130
  msgid "Deprecated %s. Please use %s."
1131
  msgstr ""
1132
 
1133
- #: ../app/admin/RTMediaAdmin.php:252 ../app/admin/RTMediaAdmin.php:274
1134
  msgid "rtMedia:"
1135
  msgstr ""
1136
 
1137
- #: ../app/admin/RTMediaAdmin.php:252
1138
  msgid " You must "
1139
  msgstr ""
1140
 
1141
- #: ../app/admin/RTMediaAdmin.php:252
1142
  msgid "update permalink structure"
1143
  msgstr ""
1144
 
1145
- #: ../app/admin/RTMediaAdmin.php:252
1146
  msgid " to something other than the default for it to work."
1147
  msgstr ""
1148
 
1149
- #: ../app/admin/RTMediaAdmin.php:274
1150
  msgid ""
1151
- "Please update all premium add-ons that you had purchased from rtCamp from "
1152
  "your "
1153
  msgstr ""
1154
 
1155
- #: ../app/admin/RTMediaAdmin.php:274
1156
  msgid "account"
1157
  msgstr ""
1158
 
1159
- #: ../app/admin/RTMediaAdmin.php:374
1160
  msgid "rtMedia Pro is released"
1161
  msgstr ""
1162
 
1163
- #: ../app/admin/RTMediaAdmin.php:395
1164
  msgid "Media Stats"
1165
  msgstr ""
1166
 
1167
- #: ../app/admin/RTMediaAdmin.php:420
1168
  msgid "Usage Stats"
1169
  msgstr ""
1170
 
1171
- #: ../app/admin/RTMediaAdmin.php:428
1172
  msgid "Total "
1173
  msgstr ""
1174
 
1175
- #: ../app/admin/RTMediaAdmin.php:436
1176
  msgid "With Media"
1177
  msgstr ""
1178
 
1179
- #: ../app/admin/RTMediaAdmin.php:444
1180
  msgid "Comments "
1181
  msgstr ""
1182
 
1183
- #: ../app/admin/RTMediaAdmin.php:460
1184
  msgid "Homepage"
1185
  msgstr ""
1186
 
1187
- #: ../app/admin/RTMediaAdmin.php:461
1188
  msgid "Free Support"
1189
  msgstr ""
1190
 
1191
- #: ../app/admin/RTMediaAdmin.php:462
1192
  msgid "Premium Addons"
1193
  msgstr ""
1194
 
1195
- #: ../app/admin/RTMediaAdmin.php:479
1196
  msgid "Right Now in rtMedia"
1197
  msgstr ""
1198
 
1199
- #: ../app/admin/RTMediaAdmin.php:533 ../app/admin/RTMediaAdmin.php:744
1200
  msgid "Regenerate Thumbnail"
1201
  msgstr ""
1202
 
1203
- #: ../app/admin/RTMediaAdmin.php:574 ../app/admin/RTMediaAdmin.php:1233
1204
- #: ../app/admin/RTMediaAdmin.php:1234
1205
  msgid "rtMedia"
1206
  msgstr ""
1207
 
1208
- #: ../app/admin/RTMediaAdmin.php:581 ../app/admin/RTMediaAdmin.php:584
1209
- #: ../app/admin/RTMediaAdmin.php:730 ../app/admin/RTMediaAdmin.php:1263
1210
  msgid "Settings"
1211
  msgstr ""
1212
 
1213
- #: ../app/admin/RTMediaAdmin.php:592 ../app/admin/RTMediaAdmin.php:595
1214
- #: ../app/admin/RTMediaAdmin.php:731 ../app/admin/RTMediaAdmin.php:1267
1215
  msgid "Addons"
1216
  msgstr ""
1217
 
1218
- #: ../app/admin/RTMediaAdmin.php:603 ../app/admin/RTMediaAdmin.php:606
1219
- #: ../app/admin/RTMediaAdmin.php:732 ../app/admin/RTMediaAdmin.php:1279
1220
- #: ../app/helper/RTMediaSettings.php:170
1221
  msgid "Support"
1222
  msgstr ""
1223
 
1224
- #: ../app/admin/RTMediaAdmin.php:614 ../app/admin/RTMediaAdmin.php:617
1225
- #: ../app/admin/RTMediaAdmin.php:733 ../app/admin/RTMediaAdmin.php:1271
1226
  msgid "Themes"
1227
  msgstr ""
1228
 
1229
- #: ../app/admin/RTMediaAdmin.php:625 ../app/admin/RTMediaAdmin.php:628
1230
- #: ../app/admin/RTMediaAdmin.php:734 ../app/admin/RTMediaAdmin.php:1275
1231
  msgid "Hire Us"
1232
  msgstr ""
1233
 
1234
- #: ../app/admin/RTMediaAdmin.php:636 ../app/admin/RTMediaAdmin.php:639
1235
- #: ../app/admin/RTMediaAdmin.php:735 ../app/admin/RTMediaAdmin.php:1283
1236
  msgid "Licenses"
1237
  msgstr ""
1238
 
1239
- #: ../app/admin/RTMediaAdmin.php:681
1240
  msgid "ON"
1241
  msgstr ""
1242
 
1243
- #: ../app/admin/RTMediaAdmin.php:682
1244
  msgid "OFF"
1245
  msgstr ""
1246
 
1247
- #: ../app/admin/RTMediaAdmin.php:694
1248
  msgid "Please do not refresh this page."
1249
  msgstr ""
1250
 
1251
- #: ../app/admin/RTMediaAdmin.php:694
1252
  msgid ""
1253
- "Something went wronng. Please <a href onclick=\"location.reload();"
1254
- "\">refresh</a> page."
1255
  msgstr ""
1256
 
1257
- #: ../app/admin/RTMediaAdmin.php:694
1258
  msgid "This will subscribe you to the free plan."
1259
  msgstr ""
1260
 
1261
- #: ../app/admin/RTMediaAdmin.php:694
1262
  msgid ""
1263
  "Are you sure you want to disable the encoding service? Make sure you note "
1264
- "your api key before disabling it incase you want to activate it in future."
1265
  msgstr ""
1266
 
1267
- #: ../app/admin/RTMediaAdmin.php:738
1268
  msgid "Premium"
1269
  msgstr ""
1270
 
1271
- #: ../app/admin/RTMediaAdmin.php:738
1272
  msgid "Premium "
1273
  msgstr ""
1274
 
1275
- #: ../app/admin/RTMediaAdmin.php:744
1276
  msgid "Regen. Thumbnail "
1277
  msgstr ""
1278
 
1279
- #: ../app/admin/RTMediaAdmin.php:767 ../app/admin/RTMediaAdmin.php:1773
1280
  msgid "Regenerate Video Thumbnails"
1281
  msgstr ""
1282
 
1283
- #: ../app/admin/RTMediaAdmin.php:785
1284
  msgid "Regenerate Pending Thumbnails"
1285
  msgstr ""
1286
 
1287
- #: ../app/admin/RTMediaAdmin.php:795
1288
  msgid "Total Videos"
1289
  msgstr ""
1290
 
1291
- #: ../app/admin/RTMediaAdmin.php:798
1292
  msgid "Sent of regenerate thumbails"
1293
  msgstr ""
1294
 
1295
- #: ../app/admin/RTMediaAdmin.php:800
1296
  msgid "Fail to regenerate thumbails"
1297
  msgstr ""
1298
 
1299
- #: ../app/admin/RTMediaAdmin.php:839
1300
  msgid "Regenerate Video Thumbnails Done"
1301
  msgstr ""
1302
 
1303
- #: ../app/admin/RTMediaAdmin.php:883
1304
  #, php-format
1305
  msgid ""
1306
- "You have total %s videos without thumbnails. Click <a href='%s'> here </a> "
1307
- "to generate thumbnails. <a href='#' "
1308
- "onclick='rtmedia_hide_video_thumb_notice()' style='float:right'>Hide</a>"
1309
  msgstr ""
1310
 
1311
- #: ../app/admin/RTMediaAdmin.php:961
1312
  msgid "not a video ..."
1313
  msgstr ""
1314
 
1315
- #: ../app/admin/RTMediaAdmin.php:1140
1316
  msgid "Empowering The Web With WordPress"
1317
  msgstr ""
1318
 
1319
- #: ../app/admin/RTMediaAdmin.php:1171
1320
  msgid "Save Settings"
1321
  msgstr ""
1322
 
1323
- #: ../app/admin/RTMediaAdmin.php:1365 ../app/admin/RTMediaAdmin.php:1366
1324
  msgid "Display"
1325
  msgstr ""
1326
 
1327
- #: ../app/admin/RTMediaAdmin.php:1374
1328
  msgid "rtMedia BuddyPress"
1329
  msgstr ""
1330
 
1331
- #: ../app/admin/RTMediaAdmin.php:1375
1332
  msgid "BuddyPress"
1333
  msgstr ""
1334
 
1335
- #: ../app/admin/RTMediaAdmin.php:1383
1336
  msgid "rtMedia Types"
1337
  msgstr ""
1338
 
1339
- #: ../app/admin/RTMediaAdmin.php:1384
1340
  msgid "Types"
1341
  msgstr ""
1342
 
1343
- #: ../app/admin/RTMediaAdmin.php:1391
1344
  msgid "rtMedia Sizes"
1345
  msgstr ""
1346
 
1347
- #: ../app/admin/RTMediaAdmin.php:1392
1348
  msgid "Image Sizes"
1349
  msgstr ""
1350
 
1351
- #: ../app/admin/RTMediaAdmin.php:1399
1352
  msgid "rtMedia Privacy"
1353
  msgstr ""
1354
 
1355
- #: ../app/admin/RTMediaAdmin.php:1406
1356
  msgid "rtMedia Custom CSS"
1357
  msgstr ""
1358
 
1359
- #: ../app/admin/RTMediaAdmin.php:1407
1360
  msgid "Custom CSS"
1361
  msgstr ""
1362
 
1363
- #: ../app/admin/RTMediaAdmin.php:1416 ../app/admin/RTMediaAdmin.php:1417
1364
  msgid "Other Settings"
1365
  msgstr ""
1366
 
1367
- #: ../app/admin/RTMediaAdmin.php:1516
1368
  #, php-format
1369
  msgid "I use @buddypressmedia http://rt.cx/rtmedia on %s"
1370
  msgstr ""
1371
 
1372
- #: ../app/admin/RTMediaAdmin.php:1520
1373
  msgid "Post to Twitter Now"
1374
  msgstr ""
1375
 
1376
- #: ../app/admin/RTMediaAdmin.php:1520
1377
  msgid "Post to Twitter"
1378
  msgstr ""
1379
 
1380
- #: ../app/admin/RTMediaAdmin.php:1521
1381
  msgid "Share on Facebook Now"
1382
  msgstr ""
1383
 
1384
- #: ../app/admin/RTMediaAdmin.php:1521
1385
  msgid "Share on Facebook"
1386
  msgstr ""
1387
 
1388
- #: ../app/admin/RTMediaAdmin.php:1522
1389
  msgid "Rate rtMedia on Wordpress.org"
1390
  msgstr ""
1391
 
1392
- #: ../app/admin/RTMediaAdmin.php:1522
1393
  msgid "Rate on Wordpress.org"
1394
  msgstr ""
1395
 
1396
- #: ../app/admin/RTMediaAdmin.php:1523
1397
  msgid "Subscribe to our feeds"
1398
  msgstr ""
1399
 
1400
- #: ../app/admin/RTMediaAdmin.php:1523
1401
  msgid "Subscribe to our Feeds"
1402
  msgstr ""
1403
 
1404
- #: ../app/admin/RTMediaAdmin.php:1524
1405
  msgid "Add link to footer"
1406
  msgstr ""
1407
 
1408
- #: ../app/admin/RTMediaAdmin.php:1530
1409
  msgid "Spread the Word"
1410
  msgstr ""
1411
 
1412
- #: ../app/admin/RTMediaAdmin.php:1562 ../app/admin/RTMediaAdmin.php:1565
1413
  msgid "Subscribe"
1414
  msgstr ""
1415
 
1416
- #: ../app/admin/RTMediaAdmin.php:1587
1417
  msgid "Thank you for your time."
1418
  msgstr ""
1419
 
1420
- #: ../app/admin/RTMediaAdmin.php:1599
1421
  msgid "Premium Add-ons"
1422
  msgstr ""
1423
 
1424
- #: ../app/admin/RTMediaAdmin.php:1615
1425
  #, php-format
1426
  msgid ""
1427
- "You have images enabled on rtMedia but your network allowed filetypes does "
1428
- "not allow uploading of %s. Click <a href=\"%s\">here</a> to change your "
1429
  "settings manually."
1430
  msgstr ""
1431
 
1432
- #: ../app/admin/RTMediaAdmin.php:1616 ../app/admin/RTMediaAdmin.php:1627
1433
- #: ../app/admin/RTMediaAdmin.php:1636
1434
  msgid "Recommended"
1435
  msgstr ""
1436
 
1437
- #: ../app/admin/RTMediaAdmin.php:1616 ../app/admin/RTMediaAdmin.php:1627
1438
- #: ../app/admin/RTMediaAdmin.php:1636
1439
  msgid "Update Network Settings Automatically"
1440
  msgstr ""
1441
 
1442
- #: ../app/admin/RTMediaAdmin.php:1626
1443
  #, php-format
1444
  msgid ""
1445
  "You have video enabled on BuddyPress Media but your network allowed "
1446
- "filetypes does not allow uploading of mp4. Click <a href=\"%s\">here</a> to "
1447
  "change your settings manually."
1448
  msgstr ""
1449
 
1450
- #: ../app/admin/RTMediaAdmin.php:1635
1451
  #, php-format
1452
  msgid ""
1453
  "You have audio enabled on BuddyPress Media but your network allowed "
1454
- "filetypes does not allow uploading of mp3. Click <a href=\"%s\">here</a> to "
1455
  "change your settings manually."
1456
  msgstr ""
1457
 
1458
- #: ../app/admin/RTMediaAdmin.php:1650
1459
  msgid "Network settings updated successfully."
1460
  msgstr ""
1461
 
1462
- #: ../app/admin/RTMediaAdmin.php:1757
1463
  msgid "Video is sent to generate thumbnails."
1464
  msgstr ""
1465
 
1466
- #: ../app/admin/RTMediaAdmin.php:1759
1467
- msgid "Video can't be sent to generate thumbnails."
1468
  msgstr ""
1469
 
1470
- #: ../app/admin/RTMediaAdmin.php:1838
1471
  msgid ""
1472
  "Please update rtMedia template files if you have overridden the default "
1473
  "rtMedia templates in your theme. If not, you can ignore and hide this notice."
1474
  msgstr ""
1475
 
1476
- #: ../app/admin/RTMediaAdmin.php:1838
1477
  #: ../app/importers/RTMediaMediaSizeImporter.php:66
1478
  #: ../app/importers/RTMediaMigration.php:64
1479
  msgid "Hide"
@@ -1483,11 +1484,11 @@ msgstr ""
1483
  #: ../app/admin/RTMediaFormHandler.php:109
1484
  #: ../app/admin/RTMediaFormHandler.php:204
1485
  #: ../app/admin/RTMediaFormHandler.php:239
1486
- msgid "Please provide \"value\" in the argument."
1487
  msgstr ""
1488
 
1489
  #: ../app/admin/RTMediaFormHandler.php:152
1490
- msgid "Need to specify atleast to radios else use a checkbox instead"
1491
  msgstr ""
1492
 
1493
  #: ../app/admin/RTMediaFormHandler.php:300
@@ -1496,8 +1497,8 @@ msgstr ""
1496
 
1497
  #: ../app/admin/RTMediaFormHandler.php:305
1498
  msgid ""
1499
- "This will display comment form and comment listing on single media pages as "
1500
- "well as inside lightbox (if lightbox is enabled)."
1501
  msgstr ""
1502
 
1503
  #: ../app/admin/RTMediaFormHandler.php:310
@@ -1513,7 +1514,7 @@ msgid "Number of media per page"
1513
  msgstr ""
1514
 
1515
  #: ../app/admin/RTMediaFormHandler.php:326
1516
- msgid "Number of media you want to show per page on front end."
1517
  msgstr ""
1518
 
1519
  #: ../app/admin/RTMediaFormHandler.php:332
@@ -1521,7 +1522,7 @@ msgid "Media display pagination option"
1521
  msgstr ""
1522
 
1523
  #: ../app/admin/RTMediaFormHandler.php:338
1524
- msgid "Choose whether you want load more button or pagination buttons."
1525
  msgstr ""
1526
 
1527
  #: ../app/admin/RTMediaFormHandler.php:343
@@ -1534,8 +1535,8 @@ msgstr ""
1534
 
1535
  #: ../app/admin/RTMediaFormHandler.php:348
1536
  msgid ""
1537
- "Masonry works by placing elements in optimal position based on available "
1538
- "vertical space, sort of like a mason fitting stones in a wall."
1539
  msgstr ""
1540
 
1541
  #: ../app/admin/RTMediaFormHandler.php:352
@@ -1570,9 +1571,9 @@ msgstr ""
1570
 
1571
  #: ../app/admin/RTMediaFormHandler.php:445
1572
  msgid ""
1573
- "You can help rtMedia team learn what themes and plugins you are using to "
1574
- "make rtMedia better compatible with your sites. No private information about "
1575
- "your setup will be sent during tracking."
1576
  msgstr ""
1577
 
1578
  #: ../app/admin/RTMediaFormHandler.php:449
@@ -1590,7 +1591,7 @@ msgid "Add a link to rtMedia in footer"
1590
  msgstr ""
1591
 
1592
  #: ../app/admin/RTMediaFormHandler.php:464
1593
- msgid "Help us to promote rtMedia."
1594
  msgstr ""
1595
 
1596
  #: ../app/admin/RTMediaFormHandler.php:469
@@ -1599,7 +1600,7 @@ msgstr ""
1599
 
1600
  #: ../app/admin/RTMediaFormHandler.php:474
1601
  msgid ""
1602
- "Add your affiliate-id along with footer link and get benefited from our "
1603
  "affiliation program."
1604
  msgstr ""
1605
 
@@ -1621,12 +1622,12 @@ msgstr ""
1621
 
1622
  #: ../app/admin/RTMediaFormHandler.php:488
1623
  msgid ""
1624
- "You can refer API document from <a href=\"https://rtcamp.com/rtmedia/docs/"
1625
- "developer/json-api/\">here</a>"
1626
  msgstr ""
1627
 
1628
  #: ../app/admin/RTMediaFormHandler.php:646
1629
- #: ../app/helper/RTMediaSettings.php:286
1630
  msgid "Media Type"
1631
  msgstr ""
1632
 
@@ -1639,7 +1640,7 @@ msgid "Allow Upload"
1639
  msgstr ""
1640
 
1641
  #: ../app/admin/RTMediaFormHandler.php:653
1642
- msgid "Put a specific media as a featured content on the post."
1643
  msgstr ""
1644
 
1645
  #: ../app/admin/RTMediaFormHandler.php:654
@@ -1676,14 +1677,14 @@ msgstr ""
1676
 
1677
  #: ../app/admin/RTMediaFormHandler.php:809
1678
  msgid ""
1679
- " If you choose more than 1 thumbnail, your users will be able to change "
1680
  "thumbnail by going to video 'edit' section. Maximum value is 10."
1681
  msgstr ""
1682
 
1683
  #: ../app/admin/RTMediaFormHandler.php:860
1684
  msgid ""
1685
- "If you want to add some custom CSS code to the plugin and don't want to "
1686
- "modify any files, then it's a good place to enter your code at this field."
1687
  msgstr ""
1688
 
1689
  #: ../app/admin/RTMediaFormHandler.php:894
@@ -1726,7 +1727,8 @@ msgstr ""
1726
 
1727
  #: ../app/admin/RTMediaFormHandler.php:957
1728
  msgid ""
1729
- "If you choose this, user will be able to change privacy of their own uploads."
 
1730
  msgstr ""
1731
 
1732
  #: ../app/admin/RTMediaFormHandler.php:959
@@ -1763,9 +1765,10 @@ msgstr ""
1763
 
1764
  #: ../app/admin/RTMediaFormHandler.php:1067
1765
  msgid ""
1766
- "With bulk uploads activity stream may get flooded. You can control maximum "
1767
- "number of medias/files per activity. This limit will not affect the actual "
1768
- "number of uploads. Only display. <em>0</em> means unlimited."
 
1769
  msgstr ""
1770
 
1771
  #: ../app/admin/RTMediaFormHandler.php:1121
@@ -1774,7 +1777,7 @@ msgstr ""
1774
 
1775
  #: ../app/admin/RTMediaFormHandler.php:1127
1776
  msgid ""
1777
- "This will add 'album' tab to BuddyPress profile and group depending on "
1778
  "^above^ settings."
1779
  msgstr ""
1780
 
@@ -1883,13 +1886,13 @@ msgid ""
1883
  msgstr ""
1884
 
1885
  #: ../app/importers/BPMediaAlbumimporter.php:174
1886
- #: ../app/helper/RTMediaAddon.php:163 ../app/helper/RTMediaAddon.php:173
1887
- #: ../app/helper/RTMediaAddon.php:183
1888
  msgid "Important"
1889
  msgstr ""
1890
 
1891
  #: ../app/importers/BPMediaAlbumimporter.php:174
1892
- #: ../app/helper/RTMediaAddon.php:173 ../app/helper/RTMediaAddon.php:183
1893
  msgid ""
1894
  "You need to have ImageMagick installed on your server for this addon to work."
1895
  msgstr ""
@@ -1900,7 +1903,7 @@ msgid "Buy Now"
1900
  msgstr ""
1901
 
1902
  #: ../app/importers/BPMediaAlbumimporter.php:179
1903
- #: ../app/helper/RTMediaAddon.php:322
1904
  msgid "Live Demo"
1905
  msgstr ""
1906
 
@@ -2259,13 +2262,13 @@ msgstr ""
2259
  msgid "There is no media found to migrate."
2260
  msgstr ""
2261
 
2262
- #: ../app/helper/RTMediaSupport.php:396 ../app/helper/RTMediaThemes.php:186
2263
- #: ../app/helper/RTMediaThemes.php:202
2264
  msgid "Click"
2265
  msgstr ""
2266
 
2267
- #: ../app/helper/RTMediaSupport.php:396 ../app/helper/RTMediaThemes.php:186
2268
- #: ../app/helper/RTMediaThemes.php:202
2269
  msgid "here"
2270
  msgstr ""
2271
 
@@ -2285,7 +2288,7 @@ msgstr ""
2285
  msgid "Submit a Premium Support Request"
2286
  msgstr ""
2287
 
2288
- #: ../app/helper/RTMediaSupport.php:437 ../app/helper/RTMediaSettings.php:364
2289
  msgid ""
2290
  "If your site has some issues due to BuddyPress Media and you want one on one "
2291
  "support then you can create a support topic on the <a target=\"_blank\" href="
@@ -2294,7 +2297,7 @@ msgid ""
2294
  "\">rtCamp Support Forum</a>."
2295
  msgstr ""
2296
 
2297
- #: ../app/helper/RTMediaSupport.php:438 ../app/helper/RTMediaSettings.php:365
2298
  msgid ""
2299
  "If you have any suggestions, enhancements or bug reports, then you can open "
2300
  "a new issue on <a target=\"_blank\" href=\"https://github.com/rtCamp/"
@@ -2420,97 +2423,101 @@ msgid ""
2420
  "for this addon to work."
2421
  msgstr ""
2422
 
2423
- #: ../app/helper/RTMediaAddon.php:170
2424
  msgid "rtMedia Photo Tagging"
2425
  msgstr ""
2426
 
2427
- #: ../app/helper/RTMediaAddon.php:173
2428
  msgid ""
2429
  "rtMedia Photo Tagging add-on enables tagging on photos uploaded using "
2430
  "BuddyPress Media."
2431
  msgstr ""
2432
 
2433
- #: ../app/helper/RTMediaAddon.php:180
2434
  msgid "rtMedia Instagram"
2435
  msgstr ""
2436
 
2437
- #: ../app/helper/RTMediaAddon.php:183
2438
  msgid ""
2439
  "rtMedia Instagram adds Instagram like filters to images uploaded with "
2440
  "rtMedia."
2441
  msgstr ""
2442
 
2443
- #: ../app/helper/RTMediaAddon.php:192
2444
  msgid "rtMedia Kaltura Add-on"
2445
  msgstr ""
2446
 
2447
- #: ../app/helper/RTMediaAddon.php:195
2448
  msgid "Add support for more video formats using Kaltura video solution."
2449
  msgstr ""
2450
 
2451
- #: ../app/helper/RTMediaAddon.php:195
2452
  msgid "Works with Kaltura.com, self-hosted Kaltura-CE and Kaltura-on-premise."
2453
  msgstr ""
2454
 
2455
- #: ../app/helper/RTMediaAddon.php:202
2456
  msgid "rtMedia FFMPEG Add-on"
2457
  msgstr ""
2458
 
2459
- #: ../app/helper/RTMediaAddon.php:205
2460
  msgid ""
2461
  "Add supports for more audio & video formats using open-source media-node."
2462
  msgstr ""
2463
 
2464
- #: ../app/helper/RTMediaAddon.php:205
2465
  msgid "Media node comes with automated setup script for Ubuntu/Debian."
2466
  msgstr ""
2467
 
2468
- #: ../app/helper/RTMediaAddon.php:214
2469
  msgid "rtMedia Membership Add-on"
2470
  msgstr ""
2471
 
2472
- #: ../app/helper/RTMediaAddon.php:217
2473
  msgid ""
2474
  "rtMedia Membership addon provides membership functionality in your site."
2475
  msgstr ""
2476
 
2477
- #: ../app/helper/RTMediaAddon.php:217
2478
  msgid ""
2479
  "It controls the number of files a member can upload and size of the files "
2480
  "uploaded based on membership group."
2481
  msgstr ""
2482
 
2483
- #: ../app/helper/RTMediaAddon.php:231
2484
  msgid "rtMedia Addons for Photos"
2485
  msgstr ""
2486
 
2487
- #: ../app/helper/RTMediaAddon.php:239
2488
  msgid "rtMedia Addons for Audio/Video"
2489
  msgstr ""
2490
 
2491
- #: ../app/helper/RTMediaAddon.php:247
2492
  msgid "rtMedia Addon for Membership"
2493
  msgstr ""
2494
 
2495
- #: ../app/helper/RTMediaAddon.php:278
2496
  msgid "Coming Soon !!"
2497
  msgstr ""
2498
 
2499
- #: ../app/helper/RTMediaThemes.php:61 ../app/helper/RTMediaThemes.php:62
 
 
 
 
2500
  msgid "rtMedia Themes By rtCamp"
2501
  msgstr ""
2502
 
2503
- #: ../app/helper/RTMediaThemes.php:67 ../app/helper/RTMediaThemes.php:68
2504
  msgid "3rd Party Themes"
2505
  msgstr ""
2506
 
2507
- #: ../app/helper/RTMediaThemes.php:171
2508
  msgid ""
2509
  "These are the third party themes. For any issues or queries regarding these "
2510
  "themes please contact theme developers."
2511
  msgstr ""
2512
 
2513
- #: ../app/helper/RTMediaThemes.php:183
2514
  msgid ""
2515
  "SweetDate is a unique, clean and modern Premium Wordpress theme. It is "
2516
  "perfect for a dating or community website but can be used as well for any "
@@ -2518,90 +2525,90 @@ msgid ""
2518
  "community system."
2519
  msgstr ""
2520
 
2521
- #: ../app/helper/RTMediaThemes.php:186 ../app/helper/RTMediaThemes.php:202
2522
  msgid "for preview."
2523
  msgstr ""
2524
 
2525
- #: ../app/helper/RTMediaThemes.php:199
2526
  msgid ""
2527
  "You no longer need to be a professional developer or designer to create an "
2528
  "awesome website. Let your imagination run wild and create the site of your "
2529
  "dreams. KLEO has all the tools to get you started."
2530
  msgstr ""
2531
 
2532
- #: ../app/helper/RTMediaThemes.php:209
2533
  msgid "Are you a developer?"
2534
  msgstr ""
2535
 
2536
- #: ../app/helper/RTMediaThemes.php:211
2537
  msgid ""
2538
  "If you have developed a rtMedia compatible theme and would like it to list "
2539
  "here, please email us at"
2540
  msgstr ""
2541
 
2542
- #: ../app/helper/RTMediaThemes.php:212
2543
  msgid "product@rtcamp.com"
2544
  msgstr ""
2545
 
2546
- #: ../app/helper/RTMediaSettings.php:168
2547
  msgid "BuddyPress Media Addons for Photos"
2548
  msgstr ""
2549
 
2550
- #: ../app/helper/RTMediaSettings.php:172
2551
  msgid "rtMedia Themes"
2552
  msgstr ""
2553
 
2554
- #: ../app/helper/RTMediaSettings.php:245
2555
  #, php-format
2556
  msgid ""
2557
  "Currently your network allows uploading of the following file types. You can "
2558
  "change the settings <a href=\"%s\">here</a>.<br /><code>%s</code></span>"
2559
  msgstr ""
2560
 
2561
- #: ../app/helper/RTMediaSettings.php:263 ../app/helper/RTMediaSettings.php:265
2562
  msgid "Recounting of media files done successfully"
2563
  msgstr ""
2564
 
2565
- #: ../app/helper/RTMediaSettings.php:265
2566
  msgid "Recount Success"
2567
  msgstr ""
2568
 
2569
- #: ../app/helper/RTMediaSettings.php:269 ../app/helper/RTMediaSettings.php:271
2570
  msgid "Recounting Failed"
2571
  msgstr ""
2572
 
2573
- #: ../app/helper/RTMediaSettings.php:271
2574
  msgid "Recount Fail"
2575
  msgstr ""
2576
 
2577
- #: ../app/helper/RTMediaSettings.php:284 ../app/helper/RTMediaSettings.php:286
2578
  msgid "Atleast one Media Type Must be selected"
2579
  msgstr ""
2580
 
2581
- #: ../app/helper/RTMediaSettings.php:295 ../app/helper/RTMediaSettings.php:297
2582
  msgid "\"Number of media\" count value should be numeric and greater than 0."
2583
  msgstr ""
2584
 
2585
- #: ../app/helper/RTMediaSettings.php:297
2586
  msgid "Default Count"
2587
  msgstr ""
2588
 
2589
- #: ../app/helper/RTMediaSettings.php:302
2590
  msgid "Settings saved."
2591
  msgstr ""
2592
 
2593
- #: ../app/helper/RTMediaSettings.php:326
2594
  #, php-format
2595
  msgid ""
2596
  "If you make changes to width, height or crop settings, you must use \"<a "
2597
  "href=\"%s\">Regenerate Thumbnail Plugin</a>\" to regenerate old images.\""
2598
  msgstr ""
2599
 
2600
- #: ../app/helper/RTMediaSettings.php:347
2601
  msgid "BuddyPress Media 2.6 requires a database upgrade. "
2602
  msgstr ""
2603
 
2604
- #: ../app/helper/RTMediaSettings.php:347
2605
  msgid "Update Database"
2606
  msgstr ""
2607
 
@@ -2681,17 +2688,17 @@ msgstr ""
2681
  msgid "Sorry !! You do not have rights to edit this media"
2682
  msgstr ""
2683
 
2684
- #: ../templates/media/media-gallery.php:8
2685
- #: ../templates/media/media-gallery.php:14
2686
  msgid "Media Gallery"
2687
  msgstr ""
2688
 
2689
- #: ../templates/media/media-gallery.php:62
2690
  #: ../templates/media/album-gallery.php:49
2691
  msgid "Load More"
2692
  msgstr ""
2693
 
2694
- #: ../templates/media/media-gallery.php:70
2695
  msgid "Oops !! There's no media found for the request !!"
2696
  msgstr ""
2697
 
2
  msgstr ""
3
  "Project-Id-Version: BuddyPress Media\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-02-04 17:52+0530\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
60
 
61
  #: ../app/main/RTMedia.php:555
62
  #: ../app/main/controllers/template/RTMediaNav.php:155
63
+ #: ../app/main/controllers/template/rt-template-functions.php:81
64
  msgid "All"
65
  msgstr ""
66
 
67
  #: ../app/main/RTMedia.php:564
68
+ #: ../app/main/controllers/template/rt-template-functions.php:1382
69
  #: ../app/main/controllers/media/RTMediaAlbum.php:49
70
  #: ../app/main/controllers/upload/RTMediaUploadView.php:51
71
  #: ../app/main/controllers/upload/RTMediaUploadView.php:54
80
  msgstr ""
81
 
82
  #: ../app/main/RTMedia.php:575
83
+ #: ../app/main/controllers/template/rt-template-functions.php:2127
84
+ #: ../app/main/controllers/template/rt-template-functions.php:2131
85
  msgid "Upload"
86
  msgstr ""
87
 
186
  msgstr ""
187
 
188
  #: ../app/main/RTMedia.php:877
189
+ #: ../app/main/controllers/template/rt-template-functions.php:722
190
+ #: ../app/main/controllers/template/rt-template-functions.php:743
191
  msgid "Edit"
192
  msgstr ""
193
 
194
  #: ../app/main/RTMedia.php:878
195
+ #: ../app/main/controllers/template/rt-template-functions.php:1468
196
+ #: ../app/main/controllers/template/rt-template-functions.php:1475
197
  #: ../templates/media/album-single-edit.php:60
198
  msgid "Delete"
199
  msgstr ""
226
  msgid "This media is uploaded. Are you sure you want to delete this media?"
227
  msgstr ""
228
 
229
+ #: ../app/main/RTMedia.php:925
230
  msgid "There are some uploads in progress. Do you want to cancel them?"
231
  msgstr ""
232
 
241
  msgstr ""
242
 
243
  #: ../app/main/controllers/privacy/RTMediaPrivacy.php:289
244
+ #: ../app/admin/RTMediaAdmin.php:1402
245
  msgid "Privacy"
246
  msgstr ""
247
 
250
  msgstr ""
251
 
252
  #: ../app/main/controllers/shortcodes/RTMediaUploadShortcode.php:103
253
+ #: ../app/main/controllers/template/rt-template-functions.php:1503
254
  #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:187
255
  msgid "You are not allowed to upload/attach media."
256
  msgstr ""
279
  msgid "Error in updating Media"
280
  msgstr ""
281
 
282
+ #: ../app/main/controllers/template/rt-template-functions.php:698
283
+ #: ../app/main/controllers/template/rt-template-functions.php:1662
284
  msgid "Options"
285
  msgstr ""
286
 
287
+ #: ../app/main/controllers/template/rt-template-functions.php:788
288
  msgid "There are no comments on this media yet."
289
  msgstr ""
290
 
291
+ #: ../app/main/controllers/template/rt-template-functions.php:823
292
  msgid "Delete Comment"
293
  msgstr ""
294
 
295
+ #: ../app/main/controllers/template/rt-template-functions.php:1020
296
  msgid "Go to page no : "
297
  msgstr ""
298
 
299
+ #: ../app/main/controllers/template/rt-template-functions.php:1024
300
  msgid "Go"
301
  msgstr ""
302
 
303
+ #: ../app/main/controllers/template/rt-template-functions.php:1201
304
  msgid "Video Thumbnail"
305
  msgstr ""
306
 
307
+ #: ../app/main/controllers/template/rt-template-functions.php:1250
308
  msgid "Video Thumbnail:"
309
  msgstr ""
310
 
311
+ #: ../app/main/controllers/template/rt-template-functions.php:1334
312
  msgid "Image"
313
  msgstr ""
314
 
315
+ #: ../app/main/controllers/template/rt-template-functions.php:1350
316
  msgid "Modify Image"
317
  msgstr ""
318
 
319
+ #: ../app/main/controllers/template/rt-template-functions.php:1427
320
  msgid "Type Comment..."
321
  msgstr ""
322
 
323
+ #: ../app/main/controllers/template/rt-template-functions.php:1432
324
  #: ../templates/media/media-single.php:79
325
  #: ../templates/media/media-single.php:118
326
  msgid "Comment"
327
  msgstr ""
328
 
329
+ #: ../app/main/controllers/template/rt-template-functions.php:1468
330
+ #: ../app/main/controllers/template/rt-template-functions.php:1475
331
  msgid "Delete Media"
332
  msgstr ""
333
 
334
+ #: ../app/main/controllers/template/rt-template-functions.php:1604
335
  msgid "Profile Albums"
336
  msgstr ""
337
 
338
+ #: ../app/main/controllers/template/rt-template-functions.php:1607
339
+ #: ../app/main/controllers/template/rt-template-functions.php:1642
340
  msgid "Group Albums"
341
  msgstr ""
342
 
343
+ #: ../app/main/controllers/template/rt-template-functions.php:1725
344
+ #: ../app/main/controllers/template/rt-template-functions.php:1741
345
  msgid "Create New Album"
346
  msgstr ""
347
 
348
+ #: ../app/main/controllers/template/rt-template-functions.php:1725
349
  msgid "Add Album"
350
  msgstr ""
351
 
352
+ #: ../app/main/controllers/template/rt-template-functions.php:1743
353
  msgid "Album Title : "
354
  msgstr ""
355
 
356
+ #: ../app/main/controllers/template/rt-template-functions.php:1751
357
  #: ../app/main/controllers/media/RTMediaAlbum.php:51
358
  msgid "Create Album"
359
  msgstr ""
360
 
361
+ #: ../app/main/controllers/template/rt-template-functions.php:1782
362
+ #: ../app/main/controllers/template/rt-template-functions.php:1789
363
+ #: ../app/main/controllers/template/rt-template-functions.php:1843
364
  msgid "Merge Album"
365
  msgstr ""
366
 
367
+ #: ../app/main/controllers/template/rt-template-functions.php:1785
368
  msgid "Select Album to merge with : "
369
  msgstr ""
370
 
371
+ #: ../app/main/controllers/template/rt-template-functions.php:1833
372
  #: ../app/main/controllers/media/RTMediaAlbum.php:52
373
  msgid "Edit Album"
374
  msgstr ""
375
 
376
+ #: ../app/main/controllers/template/rt-template-functions.php:1834
377
  msgid "Delete Album"
378
  msgstr ""
379
 
380
+ #: ../app/main/controllers/template/rt-template-functions.php:1872
381
  msgid "Merge"
382
  msgstr ""
383
 
384
+ #: ../app/main/controllers/template/rt-template-functions.php:1925
385
  msgid "Privacy : "
386
  msgstr ""
387
 
388
+ #: ../app/main/controllers/template/rt-template-functions.php:2115
389
  msgid "people like this"
390
  msgstr ""
391
 
392
+ #: ../app/main/controllers/template/rt-template-functions.php:2127
393
+ #: ../app/main/controllers/template/rt-template-functions.php:2131
394
  msgid "Upload Media"
395
  msgstr ""
396
 
397
+ #: ../app/main/controllers/template/rt-template-functions.php:2174
398
  msgid "Go PRO!"
399
  msgstr ""
400
 
401
+ #: ../app/main/controllers/template/rt-template-functions.php:2195
402
  msgid "Reasons to buy rtMedia-PRO"
403
  msgstr ""
404
 
405
+ #: ../app/main/controllers/template/rt-template-functions.php:2200
406
  msgid "FavList"
407
  msgstr ""
408
 
409
+ #: ../app/main/controllers/template/rt-template-functions.php:2201
410
  msgid "Users can create their own list of favorite media."
411
  msgstr ""
412
 
413
+ #: ../app/main/controllers/template/rt-template-functions.php:2207
414
  msgid "Media Attributes"
415
  msgstr ""
416
 
417
+ #: ../app/main/controllers/template/rt-template-functions.php:2208
418
  msgid "Add media attributes and categories them."
419
  msgstr ""
420
 
421
+ #: ../app/main/controllers/template/rt-template-functions.php:2214
422
  msgid "Sort Media"
423
  msgstr ""
424
 
425
+ #: ../app/main/controllers/template/rt-template-functions.php:2215
426
  msgid ""
427
  "You can sort media from media gallery according to media size and the date "
428
  "of media upload."
429
  msgstr ""
430
 
431
+ #: ../app/main/controllers/template/rt-template-functions.php:2221
432
  msgid "Direct URL upload"
433
  msgstr ""
434
 
435
+ #: ../app/main/controllers/template/rt-template-functions.php:2222
436
  msgid ""
437
  "You no longer need to download media from URL and then upload it. Just "
438
  "provide link and rtMedia will handle it."
439
  msgstr ""
440
 
441
+ #: ../app/main/controllers/template/rt-template-functions.php:2228
442
  msgid "Per user upload quota"
443
  msgstr ""
444
 
445
+ #: ../app/main/controllers/template/rt-template-functions.php:2229
446
  msgid ""
447
  "You can set upload quota for users on the daily, monthly and lifetime basis."
448
  msgstr ""
449
 
450
+ #: ../app/main/controllers/template/rt-template-functions.php:2235
451
  msgid "URL preview in BuddyPress activity"
452
  msgstr ""
453
 
454
+ #: ../app/main/controllers/template/rt-template-functions.php:2236
455
  msgid "Show URL previews in BuddyPress activity."
456
  msgstr ""
457
 
458
+ #: ../app/main/controllers/template/rt-template-functions.php:2242
459
  msgid "Bulk media edit"
460
  msgstr ""
461
 
462
+ #: ../app/main/controllers/template/rt-template-functions.php:2243
463
  msgid "You can edit media in bulk mode."
464
  msgstr ""
465
 
466
+ #: ../app/main/controllers/template/rt-template-functions.php:2249
467
  msgid "User's liked media page"
468
  msgstr ""
469
 
470
+ #: ../app/main/controllers/template/rt-template-functions.php:2250
471
  msgid ""
472
  "Now you can see user's liked media page. A new tab \"Likes\" has been added."
473
  msgstr ""
474
 
475
+ #: ../app/main/controllers/template/rt-template-functions.php:2256
476
  msgid "RSS Feed/Podcasting Support"
477
  msgstr ""
478
 
479
+ #: ../app/main/controllers/template/rt-template-functions.php:2257
480
  msgid ""
481
  "You can consume rtMedia uploads from iTunes as well as any feed-reader/"
482
  "podcasting software."
483
  msgstr ""
484
 
485
+ #: ../app/main/controllers/template/rt-template-functions.php:2263
486
  msgid "WordPress Comment Attachment"
487
  msgstr ""
488
 
489
+ #: ../app/main/controllers/template/rt-template-functions.php:2264
490
  msgid "You can attach files to WordPress comments."
491
  msgstr ""
492
 
493
+ #: ../app/main/controllers/template/rt-template-functions.php:2270
494
  msgid "bbPress Attachment"
495
  msgstr ""
496
 
497
+ #: ../app/main/controllers/template/rt-template-functions.php:2271
498
  msgid "You can attach files to bbPress topic and reply."
499
  msgstr ""
500
 
501
+ #: ../app/main/controllers/template/rt-template-functions.php:2277
502
  msgid "Document Support"
503
  msgstr ""
504
 
505
+ #: ../app/main/controllers/template/rt-template-functions.php:2278
506
  msgid ""
507
  "You can add, view and download documents like txt, doc, pdf, also add and "
508
  "upload other file types like zip, tar and tar.gz etc."
509
  msgstr ""
510
 
511
+ #: ../app/main/controllers/template/rt-template-functions.php:2284
512
  msgid "CubePoints & MyCRED Integration"
513
  msgstr ""
514
 
515
+ #: ../app/main/controllers/template/rt-template-functions.php:2285
516
  msgid ""
517
  "Integrating CubePoints/myCRED with rtMedia, you can reward users with "
518
  "virtual points on rtMedia activities."
519
  msgstr ""
520
 
521
+ #: ../app/main/controllers/template/rt-template-functions.php:2291
522
  msgid "Album Privacy"
523
  msgstr ""
524
 
525
+ #: ../app/main/controllers/template/rt-template-functions.php:2292
526
  msgid ""
527
  "This will allow you to set album privacy while creating albums or change "
528
  "album privacy with editing albums too."
529
  msgstr ""
530
 
531
+ #: ../app/main/controllers/template/rt-template-functions.php:2298
532
  msgid "Audio Playlist"
533
  msgstr ""
534
 
535
+ #: ../app/main/controllers/template/rt-template-functions.php:2299
536
  msgid ""
537
  "With this feature you can create your audio playlists and listen to your "
538
  "favorite music at will."
539
  msgstr ""
540
 
541
+ #: ../app/main/controllers/template/rt-template-functions.php:2305
542
  msgid "Report Button & Moderation Tools"
543
  msgstr ""
544
 
545
+ #: ../app/main/controllers/template/rt-template-functions.php:2306
546
  msgid ""
547
  "Users can report media if they find it offensive. Set number of reports to "
548
  "automatically take down media."
549
  msgstr ""
550
 
551
+ #: ../app/main/controllers/template/rt-template-functions.php:2312
552
  msgid "Download Button For Media"
553
  msgstr ""
554
 
555
+ #: ../app/main/controllers/template/rt-template-functions.php:2313
556
  msgid ""
557
  "Users can download photos, videos and music. Admin has option to allow "
558
  "download the media."
559
  msgstr ""
560
 
561
+ #: ../app/main/controllers/template/rt-template-functions.php:2319
562
  msgid "Sidebar widgets"
563
  msgstr ""
564
 
565
+ #: ../app/main/controllers/template/rt-template-functions.php:2320
566
  msgid ""
567
  "These will let you display a gallery or an uploader in a sidebar. Several of "
568
  "them can be used in a single sidebar."
569
  msgstr ""
570
 
571
+ #: ../app/main/controllers/template/rt-template-functions.php:2326
572
  msgid "Post-editor button"
573
  msgstr ""
574
 
575
+ #: ../app/main/controllers/template/rt-template-functions.php:2327
576
  msgid ""
577
  "With this button, a UI appears to quickly generate shortcodes for special "
578
  "pages like \"Editorial Picks\"."
579
  msgstr ""
580
 
581
+ #: ../app/main/controllers/template/rt-template-functions.php:2333
582
  msgid "Star-Rating option"
583
  msgstr ""
584
 
585
+ #: ../app/main/controllers/template/rt-template-functions.php:2334
586
  msgid ""
587
  "Users can give up to five stars to rate media. This data can be used for "
588
  "\"Most Rated Media\" in sidebars."
589
  msgstr ""
590
 
591
+ #: ../app/main/controllers/template/rt-template-functions.php:2340
592
  msgid "Global Albums"
593
  msgstr ""
594
 
595
+ #: ../app/main/controllers/template/rt-template-functions.php:2341
596
  msgid ""
597
  "Multiple global albums can be created beforehand. One of these can be chosen "
598
  "as the default album."
599
  msgstr ""
600
 
601
+ #: ../app/main/controllers/template/rt-template-functions.php:2347
602
  msgid "Premium one-to-one support"
603
  msgstr ""
604
 
605
+ #: ../app/main/controllers/template/rt-template-functions.php:2348
606
  msgid ""
607
  "Without leaving your WordPress dashboard, you can contact us for help using "
608
  "a support form."
609
  msgstr ""
610
 
611
+ #: ../app/main/controllers/template/rt-template-functions.php:2355
612
  msgid "Upgrade to rtMedia PRO Now "
613
  msgstr ""
614
 
615
+ #: ../app/main/controllers/template/rt-template-functions.php:2367
616
  msgid "You can consider rtMedia Team for following :"
617
  msgstr ""
618
 
619
+ #: ../app/main/controllers/template/rt-template-functions.php:2369
620
  msgid "rtMedia Customization ( in Upgrade Safe manner )"
621
  msgstr ""
622
 
623
+ #: ../app/main/controllers/template/rt-template-functions.php:2370
624
  msgid "WordPress/BuddyPress Theme Design and Development"
625
  msgstr ""
626
 
627
+ #: ../app/main/controllers/template/rt-template-functions.php:2371
628
  msgid "WordPress/BuddyPress Plugin Development"
629
  msgstr ""
630
 
631
+ #: ../app/main/controllers/template/rt-template-functions.php:2376
632
  msgid "Contact Us"
633
  msgstr ""
634
 
635
+ #: ../app/main/controllers/template/rt-template-functions.php:2396
636
  msgid "Empowering your community with "
637
  msgstr ""
638
 
639
+ #: ../app/main/controllers/template/rt-template-functions.php:2398
640
  msgid "The only complete media solution for WordPress, BuddyPress and bbPress"
641
  msgstr ""
642
 
643
+ #: ../app/main/controllers/template/rt-template-functions.php:2414
644
  msgid "Close (Esc)"
645
  msgstr ""
646
 
647
+ #: ../app/main/controllers/template/rt-template-functions.php:2430
648
  msgid "Public"
649
  msgstr ""
650
 
651
+ #: ../app/main/controllers/template/rt-template-functions.php:2434
652
  msgid "All members"
653
  msgstr ""
654
 
655
+ #: ../app/main/controllers/template/rt-template-functions.php:2438
656
  msgid "Your friends"
657
  msgstr ""
658
 
659
+ #: ../app/main/controllers/template/rt-template-functions.php:2442
660
  msgid "Only you"
661
  msgstr ""
662
 
663
+ #: ../app/main/controllers/template/rt-template-functions.php:2446
664
  msgid "Blocked temporarily"
665
  msgstr ""
666
 
667
+ #: ../app/main/controllers/template/rt-template-functions.php:2482
668
  #, php-format
669
  msgid "%s ago "
670
  msgstr ""
671
 
672
+ #: ../app/main/controllers/template/rt-template-functions.php:2494
673
  #, php-format
674
  msgid "1 second"
675
  msgid_plural "%s seconds"
676
  msgstr[0] ""
677
  msgstr[1] ""
678
 
679
+ #: ../app/main/controllers/template/rt-template-functions.php:2497
680
  #, php-format
681
  msgid "1 minute"
682
  msgid_plural "%s minutes"
683
  msgstr[0] ""
684
  msgstr[1] ""
685
 
686
+ #: ../app/main/controllers/template/rt-template-functions.php:2500
687
  #, php-format
688
  msgid "1 hour"
689
  msgid_plural "%s hours"
910
  msgstr ""
911
 
912
  #: ../app/main/controllers/media/RTMediaMedia.php:561
913
+ #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:307
914
  #, php-format
915
  msgid "%s added a %s"
916
  msgid_plural "%s added %d %s."
970
  msgstr ""
971
 
972
  #: ../app/main/controllers/media/RTMediaLike.php:16
973
+ #: ../app/admin/RTMediaAdmin.php:454
974
  msgid "Likes"
975
  msgstr ""
976
 
997
  msgid "Media Files"
998
  msgstr ""
999
 
1000
+ #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:301
1001
+ #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:313
1002
+ msgid "media"
1003
+ msgstr ""
1004
+
1005
+ #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:311
1006
+ #: ../app/main/controllers/activity/RTMediaBuddyPressActivity.php:313
1007
  #: ../app/main/controllers/upload/RTMediaUploadEndpoint.php:99
1008
  #, php-format
1009
  msgid "%s added %d %s"
1010
  msgstr ""
1011
 
 
 
 
 
1012
  #: ../app/main/controllers/group/RTMediaGroupExtension.php:30
1013
  #: ../app/main/controllers/group/RTMediaGroupExtension.php:92
1014
  msgid "Album Creation Control"
1131
  msgid "Deprecated %s. Please use %s."
1132
  msgstr ""
1133
 
1134
+ #: ../app/admin/RTMediaAdmin.php:254 ../app/admin/RTMediaAdmin.php:276
1135
  msgid "rtMedia:"
1136
  msgstr ""
1137
 
1138
+ #: ../app/admin/RTMediaAdmin.php:254
1139
  msgid " You must "
1140
  msgstr ""
1141
 
1142
+ #: ../app/admin/RTMediaAdmin.php:254
1143
  msgid "update permalink structure"
1144
  msgstr ""
1145
 
1146
+ #: ../app/admin/RTMediaAdmin.php:254
1147
  msgid " to something other than the default for it to work."
1148
  msgstr ""
1149
 
1150
+ #: ../app/admin/RTMediaAdmin.php:276
1151
  msgid ""
1152
+ "Please update all premium add-ons that you have purchased from rtCamp from "
1153
  "your "
1154
  msgstr ""
1155
 
1156
+ #: ../app/admin/RTMediaAdmin.php:276
1157
  msgid "account"
1158
  msgstr ""
1159
 
1160
+ #: ../app/admin/RTMediaAdmin.php:376
1161
  msgid "rtMedia Pro is released"
1162
  msgstr ""
1163
 
1164
+ #: ../app/admin/RTMediaAdmin.php:397
1165
  msgid "Media Stats"
1166
  msgstr ""
1167
 
1168
+ #: ../app/admin/RTMediaAdmin.php:422
1169
  msgid "Usage Stats"
1170
  msgstr ""
1171
 
1172
+ #: ../app/admin/RTMediaAdmin.php:430
1173
  msgid "Total "
1174
  msgstr ""
1175
 
1176
+ #: ../app/admin/RTMediaAdmin.php:438
1177
  msgid "With Media"
1178
  msgstr ""
1179
 
1180
+ #: ../app/admin/RTMediaAdmin.php:446
1181
  msgid "Comments "
1182
  msgstr ""
1183
 
1184
+ #: ../app/admin/RTMediaAdmin.php:462
1185
  msgid "Homepage"
1186
  msgstr ""
1187
 
1188
+ #: ../app/admin/RTMediaAdmin.php:463
1189
  msgid "Free Support"
1190
  msgstr ""
1191
 
1192
+ #: ../app/admin/RTMediaAdmin.php:464
1193
  msgid "Premium Addons"
1194
  msgstr ""
1195
 
1196
+ #: ../app/admin/RTMediaAdmin.php:481
1197
  msgid "Right Now in rtMedia"
1198
  msgstr ""
1199
 
1200
+ #: ../app/admin/RTMediaAdmin.php:535 ../app/admin/RTMediaAdmin.php:746
1201
  msgid "Regenerate Thumbnail"
1202
  msgstr ""
1203
 
1204
+ #: ../app/admin/RTMediaAdmin.php:576 ../app/admin/RTMediaAdmin.php:1235
1205
+ #: ../app/admin/RTMediaAdmin.php:1236
1206
  msgid "rtMedia"
1207
  msgstr ""
1208
 
1209
+ #: ../app/admin/RTMediaAdmin.php:583 ../app/admin/RTMediaAdmin.php:586
1210
+ #: ../app/admin/RTMediaAdmin.php:732 ../app/admin/RTMediaAdmin.php:1265
1211
  msgid "Settings"
1212
  msgstr ""
1213
 
1214
+ #: ../app/admin/RTMediaAdmin.php:594 ../app/admin/RTMediaAdmin.php:597
1215
+ #: ../app/admin/RTMediaAdmin.php:733 ../app/admin/RTMediaAdmin.php:1269
1216
  msgid "Addons"
1217
  msgstr ""
1218
 
1219
+ #: ../app/admin/RTMediaAdmin.php:605 ../app/admin/RTMediaAdmin.php:608
1220
+ #: ../app/admin/RTMediaAdmin.php:734 ../app/admin/RTMediaAdmin.php:1281
1221
+ #: ../app/helper/RTMediaSettings.php:183
1222
  msgid "Support"
1223
  msgstr ""
1224
 
1225
+ #: ../app/admin/RTMediaAdmin.php:616 ../app/admin/RTMediaAdmin.php:619
1226
+ #: ../app/admin/RTMediaAdmin.php:735 ../app/admin/RTMediaAdmin.php:1273
1227
  msgid "Themes"
1228
  msgstr ""
1229
 
1230
+ #: ../app/admin/RTMediaAdmin.php:627 ../app/admin/RTMediaAdmin.php:630
1231
+ #: ../app/admin/RTMediaAdmin.php:736 ../app/admin/RTMediaAdmin.php:1277
1232
  msgid "Hire Us"
1233
  msgstr ""
1234
 
1235
+ #: ../app/admin/RTMediaAdmin.php:638 ../app/admin/RTMediaAdmin.php:641
1236
+ #: ../app/admin/RTMediaAdmin.php:737 ../app/admin/RTMediaAdmin.php:1285
1237
  msgid "Licenses"
1238
  msgstr ""
1239
 
1240
+ #: ../app/admin/RTMediaAdmin.php:683
1241
  msgid "ON"
1242
  msgstr ""
1243
 
1244
+ #: ../app/admin/RTMediaAdmin.php:684
1245
  msgid "OFF"
1246
  msgstr ""
1247
 
1248
+ #: ../app/admin/RTMediaAdmin.php:696
1249
  msgid "Please do not refresh this page."
1250
  msgstr ""
1251
 
1252
+ #: ../app/admin/RTMediaAdmin.php:696
1253
  msgid ""
1254
+ "Something went wrong. Please <a href onclick=\"location.reload();\">refresh</"
1255
+ "a> page."
1256
  msgstr ""
1257
 
1258
+ #: ../app/admin/RTMediaAdmin.php:696
1259
  msgid "This will subscribe you to the free plan."
1260
  msgstr ""
1261
 
1262
+ #: ../app/admin/RTMediaAdmin.php:696
1263
  msgid ""
1264
  "Are you sure you want to disable the encoding service? Make sure you note "
1265
+ "your api key before disabling it, incase you want to activate it in future."
1266
  msgstr ""
1267
 
1268
+ #: ../app/admin/RTMediaAdmin.php:740
1269
  msgid "Premium"
1270
  msgstr ""
1271
 
1272
+ #: ../app/admin/RTMediaAdmin.php:740
1273
  msgid "Premium "
1274
  msgstr ""
1275
 
1276
+ #: ../app/admin/RTMediaAdmin.php:746
1277
  msgid "Regen. Thumbnail "
1278
  msgstr ""
1279
 
1280
+ #: ../app/admin/RTMediaAdmin.php:769 ../app/admin/RTMediaAdmin.php:1775
1281
  msgid "Regenerate Video Thumbnails"
1282
  msgstr ""
1283
 
1284
+ #: ../app/admin/RTMediaAdmin.php:787
1285
  msgid "Regenerate Pending Thumbnails"
1286
  msgstr ""
1287
 
1288
+ #: ../app/admin/RTMediaAdmin.php:797
1289
  msgid "Total Videos"
1290
  msgstr ""
1291
 
1292
+ #: ../app/admin/RTMediaAdmin.php:800
1293
  msgid "Sent of regenerate thumbails"
1294
  msgstr ""
1295
 
1296
+ #: ../app/admin/RTMediaAdmin.php:802
1297
  msgid "Fail to regenerate thumbails"
1298
  msgstr ""
1299
 
1300
+ #: ../app/admin/RTMediaAdmin.php:841
1301
  msgid "Regenerate Video Thumbnails Done"
1302
  msgstr ""
1303
 
1304
+ #: ../app/admin/RTMediaAdmin.php:885
1305
  #, php-format
1306
  msgid ""
1307
+ "You have %s videos without thumbnails. Click <a href='%s'> here </a> to "
1308
+ "generate thumbnails. <a href='#' onclick='rtmedia_hide_video_thumb_notice()' "
1309
+ "style='float:right'>Hide</a>"
1310
  msgstr ""
1311
 
1312
+ #: ../app/admin/RTMediaAdmin.php:963
1313
  msgid "not a video ..."
1314
  msgstr ""
1315
 
1316
+ #: ../app/admin/RTMediaAdmin.php:1142
1317
  msgid "Empowering The Web With WordPress"
1318
  msgstr ""
1319
 
1320
+ #: ../app/admin/RTMediaAdmin.php:1173
1321
  msgid "Save Settings"
1322
  msgstr ""
1323
 
1324
+ #: ../app/admin/RTMediaAdmin.php:1367 ../app/admin/RTMediaAdmin.php:1368
1325
  msgid "Display"
1326
  msgstr ""
1327
 
1328
+ #: ../app/admin/RTMediaAdmin.php:1376
1329
  msgid "rtMedia BuddyPress"
1330
  msgstr ""
1331
 
1332
+ #: ../app/admin/RTMediaAdmin.php:1377
1333
  msgid "BuddyPress"
1334
  msgstr ""
1335
 
1336
+ #: ../app/admin/RTMediaAdmin.php:1385
1337
  msgid "rtMedia Types"
1338
  msgstr ""
1339
 
1340
+ #: ../app/admin/RTMediaAdmin.php:1386
1341
  msgid "Types"
1342
  msgstr ""
1343
 
1344
+ #: ../app/admin/RTMediaAdmin.php:1393
1345
  msgid "rtMedia Sizes"
1346
  msgstr ""
1347
 
1348
+ #: ../app/admin/RTMediaAdmin.php:1394
1349
  msgid "Image Sizes"
1350
  msgstr ""
1351
 
1352
+ #: ../app/admin/RTMediaAdmin.php:1401
1353
  msgid "rtMedia Privacy"
1354
  msgstr ""
1355
 
1356
+ #: ../app/admin/RTMediaAdmin.php:1408
1357
  msgid "rtMedia Custom CSS"
1358
  msgstr ""
1359
 
1360
+ #: ../app/admin/RTMediaAdmin.php:1409
1361
  msgid "Custom CSS"
1362
  msgstr ""
1363
 
1364
+ #: ../app/admin/RTMediaAdmin.php:1418 ../app/admin/RTMediaAdmin.php:1419
1365
  msgid "Other Settings"
1366
  msgstr ""
1367
 
1368
+ #: ../app/admin/RTMediaAdmin.php:1518
1369
  #, php-format
1370
  msgid "I use @buddypressmedia http://rt.cx/rtmedia on %s"
1371
  msgstr ""
1372
 
1373
+ #: ../app/admin/RTMediaAdmin.php:1522
1374
  msgid "Post to Twitter Now"
1375
  msgstr ""
1376
 
1377
+ #: ../app/admin/RTMediaAdmin.php:1522
1378
  msgid "Post to Twitter"
1379
  msgstr ""
1380
 
1381
+ #: ../app/admin/RTMediaAdmin.php:1523
1382
  msgid "Share on Facebook Now"
1383
  msgstr ""
1384
 
1385
+ #: ../app/admin/RTMediaAdmin.php:1523
1386
  msgid "Share on Facebook"
1387
  msgstr ""
1388
 
1389
+ #: ../app/admin/RTMediaAdmin.php:1524
1390
  msgid "Rate rtMedia on Wordpress.org"
1391
  msgstr ""
1392
 
1393
+ #: ../app/admin/RTMediaAdmin.php:1524
1394
  msgid "Rate on Wordpress.org"
1395
  msgstr ""
1396
 
1397
+ #: ../app/admin/RTMediaAdmin.php:1525
1398
  msgid "Subscribe to our feeds"
1399
  msgstr ""
1400
 
1401
+ #: ../app/admin/RTMediaAdmin.php:1525
1402
  msgid "Subscribe to our Feeds"
1403
  msgstr ""
1404
 
1405
+ #: ../app/admin/RTMediaAdmin.php:1526
1406
  msgid "Add link to footer"
1407
  msgstr ""
1408
 
1409
+ #: ../app/admin/RTMediaAdmin.php:1532
1410
  msgid "Spread the Word"
1411
  msgstr ""
1412
 
1413
+ #: ../app/admin/RTMediaAdmin.php:1564 ../app/admin/RTMediaAdmin.php:1567
1414
  msgid "Subscribe"
1415
  msgstr ""
1416
 
1417
+ #: ../app/admin/RTMediaAdmin.php:1589
1418
  msgid "Thank you for your time."
1419
  msgstr ""
1420
 
1421
+ #: ../app/admin/RTMediaAdmin.php:1601
1422
  msgid "Premium Add-ons"
1423
  msgstr ""
1424
 
1425
+ #: ../app/admin/RTMediaAdmin.php:1617
1426
  #, php-format
1427
  msgid ""
1428
+ "You have images enabled on rtMedia but your network allowed filetypes do not "
1429
+ "permit uploading of %s. Click <a href=\"%s\">here</a> to change your "
1430
  "settings manually."
1431
  msgstr ""
1432
 
1433
+ #: ../app/admin/RTMediaAdmin.php:1618 ../app/admin/RTMediaAdmin.php:1629
1434
+ #: ../app/admin/RTMediaAdmin.php:1638
1435
  msgid "Recommended"
1436
  msgstr ""
1437
 
1438
+ #: ../app/admin/RTMediaAdmin.php:1618 ../app/admin/RTMediaAdmin.php:1629
1439
+ #: ../app/admin/RTMediaAdmin.php:1638
1440
  msgid "Update Network Settings Automatically"
1441
  msgstr ""
1442
 
1443
+ #: ../app/admin/RTMediaAdmin.php:1628
1444
  #, php-format
1445
  msgid ""
1446
  "You have video enabled on BuddyPress Media but your network allowed "
1447
+ "filetypes do not permit uploading of mp4. Click <a href=\"%s\">here</a> to "
1448
  "change your settings manually."
1449
  msgstr ""
1450
 
1451
+ #: ../app/admin/RTMediaAdmin.php:1637
1452
  #, php-format
1453
  msgid ""
1454
  "You have audio enabled on BuddyPress Media but your network allowed "
1455
+ "filetypes do not permit uploading of mp3. Click <a href=\"%s\">here</a> to "
1456
  "change your settings manually."
1457
  msgstr ""
1458
 
1459
+ #: ../app/admin/RTMediaAdmin.php:1652
1460
  msgid "Network settings updated successfully."
1461
  msgstr ""
1462
 
1463
+ #: ../app/admin/RTMediaAdmin.php:1759
1464
  msgid "Video is sent to generate thumbnails."
1465
  msgstr ""
1466
 
1467
+ #: ../app/admin/RTMediaAdmin.php:1761
1468
+ msgid "Video cannot be sent to generate thumbnails."
1469
  msgstr ""
1470
 
1471
+ #: ../app/admin/RTMediaAdmin.php:1840
1472
  msgid ""
1473
  "Please update rtMedia template files if you have overridden the default "
1474
  "rtMedia templates in your theme. If not, you can ignore and hide this notice."
1475
  msgstr ""
1476
 
1477
+ #: ../app/admin/RTMediaAdmin.php:1840
1478
  #: ../app/importers/RTMediaMediaSizeImporter.php:66
1479
  #: ../app/importers/RTMediaMigration.php:64
1480
  msgid "Hide"
1484
  #: ../app/admin/RTMediaFormHandler.php:109
1485
  #: ../app/admin/RTMediaFormHandler.php:204
1486
  #: ../app/admin/RTMediaFormHandler.php:239
1487
+ msgid "Please provide a \"value\" in the argument."
1488
  msgstr ""
1489
 
1490
  #: ../app/admin/RTMediaFormHandler.php:152
1491
+ msgid "Need to specify atleast two radios, else use a checkbox instead"
1492
  msgstr ""
1493
 
1494
  #: ../app/admin/RTMediaFormHandler.php:300
1497
 
1498
  #: ../app/admin/RTMediaFormHandler.php:305
1499
  msgid ""
1500
+ "This will display the comment form and comment listing on single media pages "
1501
+ "as well as inside lightbox (if lightbox is enabled)."
1502
  msgstr ""
1503
 
1504
  #: ../app/admin/RTMediaFormHandler.php:310
1514
  msgstr ""
1515
 
1516
  #: ../app/admin/RTMediaFormHandler.php:326
1517
+ msgid "Number of media items you want to show per page on front end."
1518
  msgstr ""
1519
 
1520
  #: ../app/admin/RTMediaFormHandler.php:332
1522
  msgstr ""
1523
 
1524
  #: ../app/admin/RTMediaFormHandler.php:338
1525
+ msgid "Choose whether you want the load more button or pagination buttons."
1526
  msgstr ""
1527
 
1528
  #: ../app/admin/RTMediaFormHandler.php:343
1535
 
1536
  #: ../app/admin/RTMediaFormHandler.php:348
1537
  msgid ""
1538
+ "Masonry works by placing elements in an optimal position based on available "
1539
+ "vertical space, similar to a mason fitting stones in a wall."
1540
  msgstr ""
1541
 
1542
  #: ../app/admin/RTMediaFormHandler.php:352
1571
 
1572
  #: ../app/admin/RTMediaFormHandler.php:445
1573
  msgid ""
1574
+ "To make rtMedia better compatible with your sites, you can help the rtMedia "
1575
+ "team learn what themes and plugins you are using. No private information "
1576
+ "about your setup will be sent during tracking."
1577
  msgstr ""
1578
 
1579
  #: ../app/admin/RTMediaFormHandler.php:449
1591
  msgstr ""
1592
 
1593
  #: ../app/admin/RTMediaFormHandler.php:464
1594
+ msgid "Help us promote rtMedia."
1595
  msgstr ""
1596
 
1597
  #: ../app/admin/RTMediaFormHandler.php:469
1600
 
1601
  #: ../app/admin/RTMediaFormHandler.php:474
1602
  msgid ""
1603
+ "Add your affiliate-id along with footer link and get rewarded by our "
1604
  "affiliation program."
1605
  msgstr ""
1606
 
1622
 
1623
  #: ../app/admin/RTMediaFormHandler.php:488
1624
  msgid ""
1625
+ "You can refer to the API document from <a href=\"https://rtcamp.com/rtmedia/"
1626
+ "docs/developer/json-api/\">here</a>"
1627
  msgstr ""
1628
 
1629
  #: ../app/admin/RTMediaFormHandler.php:646
1630
+ #: ../app/helper/RTMediaSettings.php:299
1631
  msgid "Media Type"
1632
  msgstr ""
1633
 
1640
  msgstr ""
1641
 
1642
  #: ../app/admin/RTMediaFormHandler.php:653
1643
+ msgid "Place a specific media as a featured content on the post."
1644
  msgstr ""
1645
 
1646
  #: ../app/admin/RTMediaFormHandler.php:654
1677
 
1678
  #: ../app/admin/RTMediaFormHandler.php:809
1679
  msgid ""
1680
+ " If you choose more than 1 thumbnail, your users will be able to change the "
1681
  "thumbnail by going to video 'edit' section. Maximum value is 10."
1682
  msgstr ""
1683
 
1684
  #: ../app/admin/RTMediaFormHandler.php:860
1685
  msgid ""
1686
+ "If you want to add some custom CSS code to the plugin and do not want to "
1687
+ "modify any files, then this is a good place to enter your code."
1688
  msgstr ""
1689
 
1690
  #: ../app/admin/RTMediaFormHandler.php:894
1727
 
1728
  #: ../app/admin/RTMediaFormHandler.php:957
1729
  msgid ""
1730
+ "If you choose this, users will be able to change privacy of their own "
1731
+ "uploads."
1732
  msgstr ""
1733
 
1734
  #: ../app/admin/RTMediaFormHandler.php:959
1765
 
1766
  #: ../app/admin/RTMediaFormHandler.php:1067
1767
  msgid ""
1768
+ "With bulk uploads activity, the stream may get flooded. You can control the "
1769
+ "maximum number of media items or files per activity. This limit will not "
1770
+ "affect the actual number of uploads. This is only for display. <em>0</em> "
1771
+ "means unlimited."
1772
  msgstr ""
1773
 
1774
  #: ../app/admin/RTMediaFormHandler.php:1121
1777
 
1778
  #: ../app/admin/RTMediaFormHandler.php:1127
1779
  msgid ""
1780
+ "This will add 'album' tab to BuddyPress profile and group depending on the "
1781
  "^above^ settings."
1782
  msgstr ""
1783
 
1886
  msgstr ""
1887
 
1888
  #: ../app/importers/BPMediaAlbumimporter.php:174
1889
+ #: ../app/helper/RTMediaAddon.php:163 ../app/helper/RTMediaAddon.php:174
1890
+ #: ../app/helper/RTMediaAddon.php:185
1891
  msgid "Important"
1892
  msgstr ""
1893
 
1894
  #: ../app/importers/BPMediaAlbumimporter.php:174
1895
+ #: ../app/helper/RTMediaAddon.php:174 ../app/helper/RTMediaAddon.php:185
1896
  msgid ""
1897
  "You need to have ImageMagick installed on your server for this addon to work."
1898
  msgstr ""
1903
  msgstr ""
1904
 
1905
  #: ../app/importers/BPMediaAlbumimporter.php:179
1906
+ #: ../app/helper/RTMediaAddon.php:335
1907
  msgid "Live Demo"
1908
  msgstr ""
1909
 
2262
  msgid "There is no media found to migrate."
2263
  msgstr ""
2264
 
2265
+ #: ../app/helper/RTMediaSupport.php:396 ../app/helper/RTMediaThemes.php:216
2266
+ #: ../app/helper/RTMediaThemes.php:232
2267
  msgid "Click"
2268
  msgstr ""
2269
 
2270
+ #: ../app/helper/RTMediaSupport.php:396 ../app/helper/RTMediaThemes.php:216
2271
+ #: ../app/helper/RTMediaThemes.php:232
2272
  msgid "here"
2273
  msgstr ""
2274
 
2288
  msgid "Submit a Premium Support Request"
2289
  msgstr ""
2290
 
2291
+ #: ../app/helper/RTMediaSupport.php:437 ../app/helper/RTMediaSettings.php:377
2292
  msgid ""
2293
  "If your site has some issues due to BuddyPress Media and you want one on one "
2294
  "support then you can create a support topic on the <a target=\"_blank\" href="
2297
  "\">rtCamp Support Forum</a>."
2298
  msgstr ""
2299
 
2300
+ #: ../app/helper/RTMediaSupport.php:438 ../app/helper/RTMediaSettings.php:378
2301
  msgid ""
2302
  "If you have any suggestions, enhancements or bug reports, then you can open "
2303
  "a new issue on <a target=\"_blank\" href=\"https://github.com/rtCamp/"
2423
  "for this addon to work."
2424
  msgstr ""
2425
 
2426
+ #: ../app/helper/RTMediaAddon.php:171
2427
  msgid "rtMedia Photo Tagging"
2428
  msgstr ""
2429
 
2430
+ #: ../app/helper/RTMediaAddon.php:174
2431
  msgid ""
2432
  "rtMedia Photo Tagging add-on enables tagging on photos uploaded using "
2433
  "BuddyPress Media."
2434
  msgstr ""
2435
 
2436
+ #: ../app/helper/RTMediaAddon.php:182
2437
  msgid "rtMedia Instagram"
2438
  msgstr ""
2439
 
2440
+ #: ../app/helper/RTMediaAddon.php:185
2441
  msgid ""
2442
  "rtMedia Instagram adds Instagram like filters to images uploaded with "
2443
  "rtMedia."
2444
  msgstr ""
2445
 
2446
+ #: ../app/helper/RTMediaAddon.php:195
2447
  msgid "rtMedia Kaltura Add-on"
2448
  msgstr ""
2449
 
2450
+ #: ../app/helper/RTMediaAddon.php:198
2451
  msgid "Add support for more video formats using Kaltura video solution."
2452
  msgstr ""
2453
 
2454
+ #: ../app/helper/RTMediaAddon.php:198
2455
  msgid "Works with Kaltura.com, self-hosted Kaltura-CE and Kaltura-on-premise."
2456
  msgstr ""
2457
 
2458
+ #: ../app/helper/RTMediaAddon.php:206
2459
  msgid "rtMedia FFMPEG Add-on"
2460
  msgstr ""
2461
 
2462
+ #: ../app/helper/RTMediaAddon.php:209
2463
  msgid ""
2464
  "Add supports for more audio & video formats using open-source media-node."
2465
  msgstr ""
2466
 
2467
+ #: ../app/helper/RTMediaAddon.php:209
2468
  msgid "Media node comes with automated setup script for Ubuntu/Debian."
2469
  msgstr ""
2470
 
2471
+ #: ../app/helper/RTMediaAddon.php:219
2472
  msgid "rtMedia Membership Add-on"
2473
  msgstr ""
2474
 
2475
+ #: ../app/helper/RTMediaAddon.php:222
2476
  msgid ""
2477
  "rtMedia Membership addon provides membership functionality in your site."
2478
  msgstr ""
2479
 
2480
+ #: ../app/helper/RTMediaAddon.php:222
2481
  msgid ""
2482
  "It controls the number of files a member can upload and size of the files "
2483
  "uploaded based on membership group."
2484
  msgstr ""
2485
 
2486
+ #: ../app/helper/RTMediaAddon.php:237
2487
  msgid "rtMedia Addons for Photos"
2488
  msgstr ""
2489
 
2490
+ #: ../app/helper/RTMediaAddon.php:245
2491
  msgid "rtMedia Addons for Audio/Video"
2492
  msgstr ""
2493
 
2494
+ #: ../app/helper/RTMediaAddon.php:253
2495
  msgid "rtMedia Addon for Membership"
2496
  msgstr ""
2497
 
2498
+ #: ../app/helper/RTMediaAddon.php:284
2499
  msgid "Coming Soon !!"
2500
  msgstr ""
2501
 
2502
+ #: ../app/helper/RTMediaAddon.php:318
2503
+ msgid "Purchased"
2504
+ msgstr ""
2505
+
2506
+ #: ../app/helper/RTMediaThemes.php:55 ../app/helper/RTMediaThemes.php:56
2507
  msgid "rtMedia Themes By rtCamp"
2508
  msgstr ""
2509
 
2510
+ #: ../app/helper/RTMediaThemes.php:61 ../app/helper/RTMediaThemes.php:62
2511
  msgid "3rd Party Themes"
2512
  msgstr ""
2513
 
2514
+ #: ../app/helper/RTMediaThemes.php:201
2515
  msgid ""
2516
  "These are the third party themes. For any issues or queries regarding these "
2517
  "themes please contact theme developers."
2518
  msgstr ""
2519
 
2520
+ #: ../app/helper/RTMediaThemes.php:213
2521
  msgid ""
2522
  "SweetDate is a unique, clean and modern Premium Wordpress theme. It is "
2523
  "perfect for a dating or community website but can be used as well for any "
2525
  "community system."
2526
  msgstr ""
2527
 
2528
+ #: ../app/helper/RTMediaThemes.php:216 ../app/helper/RTMediaThemes.php:232
2529
  msgid "for preview."
2530
  msgstr ""
2531
 
2532
+ #: ../app/helper/RTMediaThemes.php:229
2533
  msgid ""
2534
  "You no longer need to be a professional developer or designer to create an "
2535
  "awesome website. Let your imagination run wild and create the site of your "
2536
  "dreams. KLEO has all the tools to get you started."
2537
  msgstr ""
2538
 
2539
+ #: ../app/helper/RTMediaThemes.php:239
2540
  msgid "Are you a developer?"
2541
  msgstr ""
2542
 
2543
+ #: ../app/helper/RTMediaThemes.php:241
2544
  msgid ""
2545
  "If you have developed a rtMedia compatible theme and would like it to list "
2546
  "here, please email us at"
2547
  msgstr ""
2548
 
2549
+ #: ../app/helper/RTMediaThemes.php:242
2550
  msgid "product@rtcamp.com"
2551
  msgstr ""
2552
 
2553
+ #: ../app/helper/RTMediaSettings.php:181
2554
  msgid "BuddyPress Media Addons for Photos"
2555
  msgstr ""
2556
 
2557
+ #: ../app/helper/RTMediaSettings.php:185
2558
  msgid "rtMedia Themes"
2559
  msgstr ""
2560
 
2561
+ #: ../app/helper/RTMediaSettings.php:258
2562
  #, php-format
2563
  msgid ""
2564
  "Currently your network allows uploading of the following file types. You can "
2565
  "change the settings <a href=\"%s\">here</a>.<br /><code>%s</code></span>"
2566
  msgstr ""
2567
 
2568
+ #: ../app/helper/RTMediaSettings.php:276 ../app/helper/RTMediaSettings.php:278
2569
  msgid "Recounting of media files done successfully"
2570
  msgstr ""
2571
 
2572
+ #: ../app/helper/RTMediaSettings.php:278
2573
  msgid "Recount Success"
2574
  msgstr ""
2575
 
2576
+ #: ../app/helper/RTMediaSettings.php:282 ../app/helper/RTMediaSettings.php:284
2577
  msgid "Recounting Failed"
2578
  msgstr ""
2579
 
2580
+ #: ../app/helper/RTMediaSettings.php:284
2581
  msgid "Recount Fail"
2582
  msgstr ""
2583
 
2584
+ #: ../app/helper/RTMediaSettings.php:297 ../app/helper/RTMediaSettings.php:299
2585
  msgid "Atleast one Media Type Must be selected"
2586
  msgstr ""
2587
 
2588
+ #: ../app/helper/RTMediaSettings.php:308 ../app/helper/RTMediaSettings.php:310
2589
  msgid "\"Number of media\" count value should be numeric and greater than 0."
2590
  msgstr ""
2591
 
2592
+ #: ../app/helper/RTMediaSettings.php:310
2593
  msgid "Default Count"
2594
  msgstr ""
2595
 
2596
+ #: ../app/helper/RTMediaSettings.php:315
2597
  msgid "Settings saved."
2598
  msgstr ""
2599
 
2600
+ #: ../app/helper/RTMediaSettings.php:339
2601
  #, php-format
2602
  msgid ""
2603
  "If you make changes to width, height or crop settings, you must use \"<a "
2604
  "href=\"%s\">Regenerate Thumbnail Plugin</a>\" to regenerate old images.\""
2605
  msgstr ""
2606
 
2607
+ #: ../app/helper/RTMediaSettings.php:360
2608
  msgid "BuddyPress Media 2.6 requires a database upgrade. "
2609
  msgstr ""
2610
 
2611
+ #: ../app/helper/RTMediaSettings.php:360
2612
  msgid "Update Database"
2613
  msgstr ""
2614
 
2688
  msgid "Sorry !! You do not have rights to edit this media"
2689
  msgstr ""
2690
 
2691
+ #: ../templates/media/media-gallery.php:9
2692
+ #: ../templates/media/media-gallery.php:21
2693
  msgid "Media Gallery"
2694
  msgstr ""
2695
 
2696
+ #: ../templates/media/media-gallery.php:70
2697
  #: ../templates/media/album-gallery.php:49
2698
  msgid "Load More"
2699
  msgstr ""
2700
 
2701
+ #: ../templates/media/media-gallery.php:78
2702
  msgid "Oops !! There's no media found for the request !!"
2703
  msgstr ""
2704
 
readme.txt CHANGED
@@ -5,10 +5,10 @@ Tags: BuddyPress, media, multimedia, album, audio, songs, music, video, photo, i
5
  License: GPLv2 or later
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
  Requires at least: WordPress 3.6
8
- Tested up to: WordPress 4.1 + BuddyPress 2.1.1
9
- Stable tag: 3.7.31
10
 
11
- Add albums, photo, audio/video encoding, privacy, sharing, front-end uploads & more. All this works mobile/tablets devices.
12
 
13
  == Description ==
14
 
@@ -36,7 +36,7 @@ http://www.youtube.com/watch?v=dJrykKQGDcs
36
 
37
  = rtMedia Features =
38
 
39
- * **[Free Audio/Video conversion](http://rtcamp.com/rtmedia/addons/audio-video-encoding-service/?utm_source=readme&utm_medium=plugin&utm_campaign=buddypress-media "Free Audio/Video Encoding Service")** - rtCamp (company behind rtMedia) has setup dedicated serves to provide free audio/video encoding services for all sites running rtMedia.
40
  * **WordPress Integration** - Display media on WordPress author pages ( eg: http://demo.rtcamp.com/rtmedia/author/admin/media/ )
41
  * **BuddyPress Integration** - Find a new media tab under BuddyPress Profiles & Groups.
42
  * **BuddyPress Activity Stream** - Attach media to activity status updates just like Facebook.
@@ -128,6 +128,12 @@ http://www.youtube.com/watch?v=dJrykKQGDcs
128
 
129
  Please visit [rtMedia's Roadmap page](http://rtcamp.com/rtmedia/roadmap/?utm_source=readme&utm_medium=plugin&utm_campaign=buddypress-media "Visit rtMedia's Features page") to get some details about future releases.
130
 
 
 
 
 
 
 
131
  = 3.7.31 =
132
  * Fix BuddyPress group media gets upload to user profile issue
133
 
@@ -742,7 +748,7 @@ Please visit [rtMedia's Roadmap page](http://rtcamp.com/rtmedia/roadmap/?utm_sou
742
  * Added Privacy for Media.
743
  * Added crude support for activity privacy (due for revision)
744
  * Revised media count functionality
745
- * Fixed widget to recognise enabled/disabled media types
746
  * Renamed 'Featured' to 'Set as Album Cover' in the UI for clarity
747
  * Fixed featured functionality
748
  * Fixed download functionality
@@ -897,8 +903,8 @@ Please visit [rtMedia's Roadmap page](http://rtcamp.com/rtmedia/roadmap/?utm_sou
897
 
898
  == Upgrade Notice ==
899
 
900
- = 3.7.31 =
901
- Requires BuddyPress 1.7 or higher, if using BuddyPress. Fix BuddyPress group media gets upload to user profile issue.
902
 
903
  == Sponsors ==
904
 
5
  License: GPLv2 or later
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
  Requires at least: WordPress 3.6
8
+ Tested up to: WordPress 4.1 + BuddyPress 2.2.0
9
+ Stable tag: 3.7.32
10
 
11
+ Add albums, photo, audio/video encoding, privacy, sharing, front-end uploads & more. All this works on mobile/tablets devices.
12
 
13
  == Description ==
14
 
36
 
37
  = rtMedia Features =
38
 
39
+ * **[Free Audio/Video conversion](http://rtcamp.com/rtmedia/addons/audio-video-encoding-service/?utm_source=readme&utm_medium=plugin&utm_campaign=buddypress-media "Free Audio/Video Encoding Service")** - rtCamp (company behind rtMedia) has setup dedicated servers to provide free audio/video encoding services for all sites running rtMedia.
40
  * **WordPress Integration** - Display media on WordPress author pages ( eg: http://demo.rtcamp.com/rtmedia/author/admin/media/ )
41
  * **BuddyPress Integration** - Find a new media tab under BuddyPress Profiles & Groups.
42
  * **BuddyPress Activity Stream** - Attach media to activity status updates just like Facebook.
128
 
129
  Please visit [rtMedia's Roadmap page](http://rtcamp.com/rtmedia/roadmap/?utm_source=readme&utm_medium=plugin&utm_campaign=buddypress-media "Visit rtMedia's Features page") to get some details about future releases.
130
 
131
+ = 3.7.32 =
132
+ * Update all translation files
133
+ * Update templates
134
+ * Fix media title issue
135
+ * Fix warnings
136
+
137
  = 3.7.31 =
138
  * Fix BuddyPress group media gets upload to user profile issue
139
 
748
  * Added Privacy for Media.
749
  * Added crude support for activity privacy (due for revision)
750
  * Revised media count functionality
751
+ * Fixed widget to recognize enabled/disabled media types
752
  * Renamed 'Featured' to 'Set as Album Cover' in the UI for clarity
753
  * Fixed featured functionality
754
  * Fixed download functionality
903
 
904
  == Upgrade Notice ==
905
 
906
+ = 3.7.32 =
907
+ Requires BuddyPress 1.7 or higher, if using BuddyPress. Update all translation files, update templates, fix media title issue.
908
 
909
  == Sponsors ==
910
 
templates/main.php CHANGED
@@ -10,140 +10,138 @@ global $rt_ajax_request ;
10
  $rt_ajax_request = false ;
11
 
12
  // check if it is an ajax request
13
- if ( ! empty ( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
14
- strtolower ( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) == 'xmlhttprequest'
15
- ) {
16
  $rt_ajax_request = true ;
17
  }
18
  ?>
19
  <div id="buddypress">
20
- <?php
21
  //if it's not an ajax request, load headers
22
- if ( ! $rt_ajax_request ) {
23
- // if this is a BuddyPress page, set template type to
24
- // buddypress to load appropriate headers
25
- if ( class_exists ( 'BuddyPress' ) && ! bp_is_blog_page () && apply_filters( 'rtm_main_template_buddypress_enable', true ) ) {
26
- $template_type = 'buddypress' ;
27
- }
28
- else {
29
- $template_type = '' ;
30
- }
31
- //get_header( $template_type );
32
 
33
- if ( $template_type == 'buddypress' ) {
34
- //load buddypress markup
35
- if ( bp_displayed_user_id () ) {
36
 
37
- //if it is a buddypress member profile
38
- ?>
39
- <div id="item-header">
 
40
 
41
- <?php bp_get_template_part ( 'members/single/member-header' ) ?>
42
 
43
- </div><!--#item-header-->
44
 
45
- <div id="item-nav">
46
- <div class="item-list-tabs no-ajax" id="object-nav" role="navigation">
47
- <ul>
48
 
49
- <?php bp_get_displayed_user_nav () ; ?>
50
 
51
- <?php do_action ( 'bp_member_options_nav' ) ; ?>
52
 
53
- </ul>
54
- </div>
55
- </div><!--#item-nav-->
56
 
57
- <div id="item-body">
58
 
59
- <?php do_action ( 'bp_before_member_body' ) ; ?>
60
- <?php do_action ( 'bp_before_member_media' ) ; ?>
61
- <div class="item-list-tabs no-ajax" id="subnav">
62
- <ul>
63
 
64
- <?php rtmedia_sub_nav () ; ?>
65
 
66
- <?php do_action ( 'rtmedia_sub_nav' ) ; ?>
67
 
68
- </ul>
69
- </div><!-- .item-list-tabs -->
70
 
71
- <?php
72
- }
73
- else if ( bp_is_group () ) {
74
 
75
- //not a member profile, but a group
76
- ?>
77
 
78
- <?php
79
- if ( bp_has_groups () ) : while ( bp_groups () ) : bp_the_group () ;
80
- ?>
81
- <div id="item-header">
82
 
83
- <?php bp_get_template_part ( 'groups/single/group-header' ) ; ?>
84
 
85
- </div><!--#item-header-->
86
 
87
- <div id="item-nav">
88
- <div class="item-list-tabs no-ajax" id="object-nav" role="navigation">
89
- <ul>
90
 
91
- <?php bp_get_options_nav () ; ?>
92
 
93
- <?php do_action ( 'bp_group_options_nav' ) ; ?>
94
 
95
- </ul>
96
- </div>
97
- </div><!-- #item-nav -->
98
 
99
 
100
- <div id="item-body">
101
 
102
- <?php do_action ( 'bp_before_group_body' ) ; ?>
103
- <?php do_action ( 'bp_before_group_media' ) ; ?>
104
- <div class="item-list-tabs no-ajax" id="subnav">
105
- <ul>
106
 
107
- <?php rtmedia_sub_nav () ; ?>
108
 
109
- <?php do_action ( 'rtmedia_sub_nav' ) ; ?>
110
 
111
- </ul>
112
- </div><!-- .item-list-tabs -->
113
- <?php
114
- endwhile ;
115
- endif ;
116
- } // group/profile if/else
117
- ?>
118
- <?php
119
- }else{ ////if BuddyPress
120
- ?>
121
- <div id="item-body">
122
- <?php
123
- }
124
- } // if ajax
125
  // include the right rtMedia template
126
  rtmedia_load_template () ;
127
- ?>
128
- </div>
129
- <?php
130
 
131
  if ( ! $rt_ajax_request ) {
132
- if ( function_exists ( "bp_displayed_user_id" ) && $template_type == 'buddypress' && (bp_displayed_user_id () || bp_is_group ()) ) {
133
-
134
- if ( bp_is_group () ) {
135
- do_action ( 'bp_after_group_media' ) ;
136
- do_action ( 'bp_after_group_body' ) ;
137
- }
138
- if ( bp_displayed_user_id () ) {
139
- do_action ( 'bp_after_member_media' ) ;
140
- do_action ( 'bp_after_member_body' ) ;
141
- }
142
- }
 
 
 
 
 
 
 
 
 
 
143
  }
144
  //close all markup
145
  ?>
146
- </div><!--#buddypress-->
147
  <?php
148
  //get_sidebar($template_type);
149
  //get_footer($template_type);
10
  $rt_ajax_request = false ;
11
 
12
  // check if it is an ajax request
13
+ if ( ! empty ( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) && strtolower ( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) == 'xmlhttprequest') {
 
 
14
  $rt_ajax_request = true ;
15
  }
16
  ?>
17
  <div id="buddypress">
18
+ <?php
19
  //if it's not an ajax request, load headers
20
+ if ( ! $rt_ajax_request ) {
21
+ // if this is a BuddyPress page, set template type to
22
+ // buddypress to load appropriate headers
23
+ if ( class_exists ( 'BuddyPress' ) && ! bp_is_blog_page () && apply_filters( 'rtm_main_template_buddypress_enable', true ) ) {
24
+ $template_type = 'buddypress' ;
25
+ } else {
26
+ $template_type = '' ;
27
+ }
28
+ //get_header( $template_type );
 
29
 
30
+ if ( $template_type == 'buddypress' ) {
31
+ //load buddypress markup
32
+ if ( bp_displayed_user_id () ) {
33
 
34
+ //if it is a buddypress member profile
35
+ ?>
36
+ <?php do_action( 'bp_before_member_home_content' ); ?>
37
+ <div id="item-header" role="complementary">
38
 
39
+ <?php bp_get_template_part ( 'members/single/member-header' ) ?>
40
 
41
+ </div><!--#item-header-->
42
 
43
+ <div id="item-nav">
44
+ <div class="item-list-tabs no-ajax" id="object-nav" role="navigation">
45
+ <ul>
46
 
47
+ <?php bp_get_displayed_user_nav () ; ?>
48
 
49
+ <?php do_action ( 'bp_member_options_nav' ) ; ?>
50
 
51
+ </ul>
52
+ </div>
53
+ </div><!--#item-nav-->
54
 
55
+ <div id="item-body" role="main">
56
 
57
+ <?php do_action ( 'bp_before_member_body' ) ; ?>
58
+ <?php do_action ( 'bp_before_member_media' ) ; ?>
59
+ <div class="item-list-tabs no-ajax" id="subnav">
60
+ <ul>
61
 
62
+ <?php rtmedia_sub_nav () ; ?>
63
 
64
+ <?php do_action ( 'rtmedia_sub_nav' ) ; ?>
65
 
66
+ </ul>
67
+ </div><!-- .item-list-tabs -->
68
 
69
+ <?php
70
+ } else if ( bp_is_group () ) {
 
71
 
72
+ //not a member profile, but a group
73
+ ?>
74
 
75
+ <?php if (bp_has_groups()) : while (bp_groups()) : bp_the_group(); ?>
76
+ <div id="item-header">
 
 
77
 
78
+ <?php bp_get_template_part( 'groups/single/group-header' ); ?>
79
 
80
+ </div><!--#item-header-->
81
 
82
+ <div id="item-nav">
83
+ <div class="item-list-tabs no-ajax" id="object-nav" role="navigation">
84
+ <ul>
85
 
86
+ <?php bp_get_options_nav(); ?>
87
 
88
+ <?php do_action( 'bp_group_options_nav' ); ?>
89
 
90
+ </ul>
91
+ </div>
92
+ </div><!-- #item-nav -->
93
 
94
 
95
+ <div id="item-body">
96
 
97
+ <?php do_action( 'bp_before_group_body' ); ?>
98
+ <?php do_action( 'bp_before_group_media' ); ?>
99
+ <div class="item-list-tabs no-ajax" id="subnav">
100
+ <ul>
101
 
102
+ <?php rtmedia_sub_nav(); ?>
103
 
104
+ <?php do_action( 'rtmedia_sub_nav' ); ?>
105
 
106
+ </ul>
107
+ </div><!-- .item-list-tabs -->
108
+ <?php endwhile; endif; // group/profile if/else
109
+ }
110
+ }else{ ////if BuddyPress
111
+ ?>
112
+ <div id="item-body">
113
+ <?php
114
+ }
115
+ } // if ajax
 
 
 
 
116
  // include the right rtMedia template
117
  rtmedia_load_template () ;
 
 
 
118
 
119
  if ( ! $rt_ajax_request ) {
120
+ if ( function_exists ( "bp_displayed_user_id" ) && $template_type == 'buddypress' && (bp_displayed_user_id () || bp_is_group ()) ) {
121
+ if ( bp_is_group () ) {
122
+ do_action ( 'bp_after_group_media' ) ;
123
+ do_action ( 'bp_after_group_body' ) ;
124
+ }
125
+ if ( bp_displayed_user_id () ) {
126
+ do_action ( 'bp_after_member_media' ) ;
127
+ do_action ( 'bp_after_member_body' ) ;
128
+ }
129
+ }
130
+ ?>
131
+ </div><!--#item-body-->
132
+ <?php
133
+ if ( function_exists ( "bp_displayed_user_id" ) && $template_type == 'buddypress' && (bp_displayed_user_id () || bp_is_group ()) ) {
134
+ if ( bp_is_group () ) {
135
+ do_action( 'bp_after_group_home_content' );
136
+ }
137
+ if ( bp_displayed_user_id () ) {
138
+ do_action( 'bp_after_member_home_content' );
139
+ }
140
+ }
141
  }
142
  //close all markup
143
  ?>
144
+ </div><!--#buddypress-->
145
  <?php
146
  //get_sidebar($template_type);
147
  //get_footer($template_type);
templates/media/media-gallery.php CHANGED
@@ -11,6 +11,7 @@
11
  <?php do_action ( 'rtmedia_media_gallery_shortcode_actions' ); ?>
12
  </div>
13
  </div>
 
14
  <div class="clear"></div>
15
  <?php }
16
  else { ?>
@@ -21,6 +22,7 @@
21
  </h2>
22
  <div id="rtm-media-options" class="columns large-7 small-12 medium-7"><?php do_action ( 'rtmedia_media_gallery_actions' ); ?></div>
23
  </div>
 
24
  <div class="clear"></div>
25
 
26
  <div id="rtm-media-gallery-uploader">
11
  <?php do_action ( 'rtmedia_media_gallery_shortcode_actions' ); ?>
12
  </div>
13
  </div>
14
+ <?php do_action ( 'rtmedia_gallery_after_title' ); ?>
15
  <div class="clear"></div>
16
  <?php }
17
  else { ?>
22
  </h2>
23
  <div id="rtm-media-options" class="columns large-7 small-12 medium-7"><?php do_action ( 'rtmedia_media_gallery_actions' ); ?></div>
24
  </div>
25
+ <?php do_action ( 'rtmedia_gallery_after_title' ); ?>
26
  <div class="clear"></div>
27
 
28
  <div id="rtm-media-gallery-uploader">