PowerPress Podcasting plugin by Blubrry - Version 1.0.2

Version Description

  • Released on 10/13/2009
  • Added 4 new mp3 flash players: 1 Pixel Out Audio Player, Mp3 Player Maxi, Simple Flash MP3 Player and AudioPlay player.
  • Added PodPress Stats Archive view (option available in Settings > Basic Settings page).
  • Added 'Verify' media option next to Media URL box to check entered URL and detect file size/duration information.
  • Added Password Protect option for Custom Podcast Channels, allows for Premium Content (feature explained and enabled under Tools page).
  • Relabeled Custom Podcast Feeds to Custom Podcast Channels to clear up confusion.
  • Reorganized settings pages with tabbed sections.
Download this release

Release Info

Developer amandato
Plugin Icon 128x128 PowerPress Podcasting plugin by Blubrry
Version 1.0.2
Comparing to
See all releases

Code changes from version 0.9.11 to 1.0.2

Files changed (77) hide show
  1. 3rdparty/colorpicker/css/colorpicker.css +155 -0
  2. 3rdparty/colorpicker/images/colorpicker_overlay.png +0 -0
  3. 3rdparty/colorpicker/images/colorpicker_select.gif +0 -0
  4. 3rdparty/colorpicker/images/custom_background2.png +0 -0
  5. 3rdparty/colorpicker/images/custom_indic.gif +0 -0
  6. 3rdparty/colorpicker/js/colorpicker.js +496 -0
  7. 3rdparty/jquery.cookie.js +97 -0
  8. 3rdparty/maxi_player/generator.js +147 -0
  9. audio-player.swf +0 -0
  10. audioplay.swf +0 -0
  11. buttons/classic/pausedown.png +0 -0
  12. buttons/classic/pauseover.png +0 -0
  13. buttons/classic/pauseup.png +0 -0
  14. buttons/classic/playdown.png +0 -0
  15. buttons/classic/playover.png +0 -0
  16. buttons/classic/playup.png +0 -0
  17. buttons/classic/stopdown.png +0 -0
  18. buttons/classic/stopover.png +0 -0
  19. buttons/classic/stopup.png +0 -0
  20. buttons/classic_small/pausedown.png +0 -0
  21. buttons/classic_small/pauseover.png +0 -0
  22. buttons/classic_small/pauseup.png +0 -0
  23. buttons/classic_small/playdown.png +0 -0
  24. buttons/classic_small/playover.png +0 -0
  25. buttons/classic_small/playup.png +0 -0
  26. buttons/classic_small/stopdown.png +0 -0
  27. buttons/classic_small/stopover.png +0 -0
  28. buttons/classic_small/stopup.png +0 -0
  29. buttons/negative/pausedown.png +0 -0
  30. buttons/negative/pauseover.png +0 -0
  31. buttons/negative/pauseup.png +0 -0
  32. buttons/negative/playdown.png +0 -0
  33. buttons/negative/playover.png +0 -0
  34. buttons/negative/playup.png +0 -0
  35. buttons/negative/stopdown.png +0 -0
  36. buttons/negative/stopover.png +0 -0
  37. buttons/negative/stopup.png +0 -0
  38. buttons/negative_small/pausedown.png +0 -0
  39. buttons/negative_small/pauseover.png +0 -0
  40. buttons/negative_small/pauseup.png +0 -0
  41. buttons/negative_small/playdown.png +0 -0
  42. buttons/negative_small/playover.png +0 -0
  43. buttons/negative_small/playup.png +0 -0
  44. buttons/negative_small/stopdown.png +0 -0
  45. buttons/negative_small/stopover.png +0 -0
  46. buttons/negative_small/stopup.png +0 -0
  47. css/admin.css +132 -0
  48. images/color_preview.gif +0 -0
  49. mp3info.class.php +7 -7
  50. player.js +3 -3
  51. player_mp3_maxi.swf +0 -0
  52. powerpress-feed-auth.php +51 -0
  53. powerpress-player.php +303 -0
  54. powerpress.php +133 -27
  55. powerpressadmin-appearance.php +0 -191
  56. powerpressadmin-basic.php +517 -186
  57. powerpressadmin-customfeeds.php +12 -12
  58. powerpressadmin-editfeed.php +444 -168
  59. powerpressadmin-metabox.php +17 -13
  60. powerpressadmin-mode.php +1 -5
  61. powerpressadmin-player-page.php +1612 -0
  62. powerpressadmin-player.php +109 -0
  63. powerpressadmin-podpress-stats.php +61 -0
  64. powerpressadmin-podpress.php +1 -1
  65. powerpressadmin-tools.php +48 -10
  66. powerpressadmin.php +477 -174
  67. readme.txt +123 -46
  68. screenshot-1.jpg +0 -0
  69. screenshot-1.png +0 -0
  70. screenshot-2.jpg +0 -0
  71. screenshot-2.png +0 -0
  72. screenshot-3.jpg +0 -0
  73. screenshot-3.png +0 -0
  74. screenshot-4.jpg +0 -0
  75. screenshot-4.png +0 -0
  76. screenshot-5.png +0 -0
  77. simple_mp3.swf +0 -0
3rdparty/colorpicker/css/colorpicker.css ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .colorpicker {
2
+ width: 286px;
3
+ height: 176px;
4
+ overflow: hidden;
5
+ position: absolute;
6
+ font-family: Arial, Helvetica, sans-serif;
7
+ display: none;
8
+ background-image: url(../images/custom_background2.png);
9
+ position: absolute;
10
+ bottom: 0;
11
+ left: 0;
12
+ }
13
+ .colorpicker_color {
14
+ width: 150px;
15
+ height: 150px;
16
+ left: 14px;
17
+ top: 13px;
18
+ position: absolute;
19
+ background: #f00;
20
+ overflow: hidden;
21
+ cursor: crosshair;
22
+ }
23
+ .colorpicker_color div {
24
+ position: absolute;
25
+ top: 0;
26
+ left: 0;
27
+ width: 150px;
28
+ height: 150px;
29
+ background: url(../images/colorpicker_overlay.png);
30
+ }
31
+ .colorpicker_color div div {
32
+ position: absolute;
33
+ top: 0;
34
+ left: 0;
35
+ width: 11px;
36
+ height: 11px;
37
+ overflow: hidden;
38
+ background: url(../images/colorpicker_select.gif);
39
+ margin: -5px 0 0 -5px;
40
+ }
41
+ .colorpicker_hue {
42
+ position: absolute;
43
+ top: 13px;
44
+ left: 171px;
45
+ width: 35px;
46
+ height: 150px;
47
+ cursor: n-resize;
48
+ }
49
+ .colorpicker_hue div {
50
+ position: absolute;
51
+ width: 35px;
52
+ height: 9px;
53
+ overflow: hidden;
54
+ background: url(../images/custom_indic.gif) left top;
55
+ margin: -4px 0 0 0;
56
+ left: 0px;
57
+ }
58
+ .colorpicker_new_color {
59
+ position: absolute;
60
+ width: 60px;
61
+ height: 30px;
62
+ left: 213px;
63
+ top: 13px;
64
+ background: #f00;
65
+ }
66
+ .colorpicker_current_color {
67
+ position: absolute;
68
+ width: 60px;
69
+ height: 30px;
70
+ left: 283px;
71
+ top: 13px;
72
+ background: #f00;
73
+ display: none;
74
+ }
75
+ .colorpicker input {
76
+ background-color: transparent;
77
+ border: 1px solid transparent;
78
+ position: absolute;
79
+ font-size: 10px;
80
+ font-family: Arial, Helvetica, sans-serif;
81
+ color: #898989;
82
+ top: 4px;
83
+ right: 11px;
84
+ text-align: right;
85
+ margin: 0;
86
+ padding: 0;
87
+ height: 11px;
88
+ }
89
+ .colorpicker_hex {
90
+ display: none;
91
+ }
92
+ .colorpicker_hex input {
93
+ display: none;
94
+ }
95
+ .colorpicker_field {
96
+ height: 22px;
97
+ width: 62px;
98
+ background-position: top;
99
+ position: absolute;
100
+ }
101
+ .colorpicker_field span {
102
+ position: absolute;
103
+ width: 12px;
104
+ height: 22px;
105
+ overflow: hidden;
106
+ top: 0;
107
+ right: 0;
108
+ cursor: n-resize;
109
+ }
110
+ .colorpicker_rgb_r {
111
+ display: none;
112
+ }
113
+ .colorpicker_rgb_g {
114
+ display: none;
115
+ }
116
+ .colorpicker_rgb_b {
117
+ display: none;
118
+ }
119
+ .colorpicker_hsb_h {
120
+ display: none;
121
+ }
122
+ .colorpicker_hsb_s {
123
+ display: none;
124
+ }
125
+ .colorpicker_hsb_b {
126
+ display: none;
127
+ }
128
+ .colorpicker_submit {
129
+ position: absolute;
130
+ left: 210px;
131
+ top: 142px;
132
+ overflow: hidden;
133
+ width: 60px;
134
+ font-family: Arial, Helvetica, sans-serif;
135
+ font-weight: bold;
136
+ }
137
+ .colorpicker_focus {
138
+ background-position: center;
139
+ }
140
+ .colorpicker_hex.colorpicker_focus {
141
+ background-position: bottom;
142
+ }
143
+ .colorpicker_submit.colorpicker_focus {
144
+ background-position: bottom;
145
+ }
146
+ .colorpicker_slider {
147
+ background-position: bottom;
148
+ }
149
+ .color_preview {
150
+ vertical-align:text-top;
151
+ margin-top: 3px;
152
+ margin-left: 4px;
153
+ cursor: pointer;
154
+ border: 1px solid #000000;
155
+ }
3rdparty/colorpicker/images/colorpicker_overlay.png ADDED
Binary file
3rdparty/colorpicker/images/colorpicker_select.gif ADDED
Binary file
3rdparty/colorpicker/images/custom_background2.png ADDED
Binary file
3rdparty/colorpicker/images/custom_indic.gif ADDED
Binary file
3rdparty/colorpicker/js/colorpicker.js ADDED
@@ -0,0 +1,496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Color picker
4
+ * Author: Stefan Petre www.eyecon.ro
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses
7
+ *
8
+ */
9
+ (function ($) {
10
+ var ColorPicker = function () {
11
+ var
12
+ ids = {},
13
+ inAction,
14
+ charMin = 65,
15
+ visible,
16
+ tpl = '<div class="colorpicker round"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" class="round picker_hex" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" class="round" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" class="round" /><span></span></div><button class="colorpicker_submit">Done</button></div>',
17
+ defaults = {
18
+ eventName: 'click',
19
+ onShow: function () {},
20
+ onBeforeShow: function(){},
21
+ onHide: function () {},
22
+ onChange: function () {},
23
+ onSubmit: function () {},
24
+ color: 'ff0000',
25
+ livePreview: true,
26
+ flat: false
27
+ },
28
+ fillRGBFields = function (hsb, cal) {
29
+ var rgb = HSBToRGB(hsb);
30
+ $(cal).data('colorpicker').fields
31
+ .eq(1).val(rgb.r).end()
32
+ .eq(2).val(rgb.g).end()
33
+ .eq(3).val(rgb.b).end();
34
+ },
35
+ fillHSBFields = function (hsb, cal) {
36
+ $(cal).data('colorpicker').fields
37
+ .eq(4).val(hsb.h).end()
38
+ .eq(5).val(hsb.s).end()
39
+ .eq(6).val(hsb.b).end();
40
+ },
41
+ fillHexFields = function (hsb, cal) {
42
+ $(cal).data('colorpicker').fields
43
+ .eq(0).val(HSBToHex(hsb)).end();
44
+ },
45
+ setSelector = function (hsb, cal) {
46
+ $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
47
+ $(cal).data('colorpicker').selectorIndic.css({
48
+ left: parseInt(150 * hsb.s/100, 10),
49
+ top: parseInt(150 * (100-hsb.b)/100, 10)
50
+ });
51
+ },
52
+ setHue = function (hsb, cal) {
53
+ $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
54
+ },
55
+ setCurrentColor = function (hsb, cal) {
56
+ $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
57
+ },
58
+ setNewColor = function (hsb, cal) {
59
+ $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
60
+ },
61
+ keyDown = function (ev) {
62
+ var pressedKey = ev.charCode || ev.keyCode || -1;
63
+ if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
64
+ return false;
65
+ }
66
+ var cal = $(this).parent().parent();
67
+ if (cal.data('colorpicker').livePreview === true) {
68
+ change.apply(this);
69
+ }
70
+ },
71
+ change = function (ev) {
72
+ var cal = $(this).parent().parent(), col;
73
+ if (this.parentNode.className.indexOf('_hex') > 0) {
74
+ cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
75
+ } else if (this.parentNode.className.indexOf('_hsb') > 0) {
76
+ cal.data('colorpicker').color = col = fixHSB({
77
+ h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
78
+ s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
79
+ b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
80
+ });
81
+ } else {
82
+ cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
83
+ r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
84
+ g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
85
+ b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
86
+ }));
87
+ }
88
+ if (ev) {
89
+ fillRGBFields(col, cal.get(0));
90
+ fillHexFields(col, cal.get(0));
91
+ fillHSBFields(col, cal.get(0));
92
+ }
93
+ setSelector(col, cal.get(0));
94
+ setHue(col, cal.get(0));
95
+ setNewColor(col, cal.get(0));
96
+ cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
97
+ },
98
+ blur = function (ev) {
99
+ var cal = $(this).parent().parent();
100
+ cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
101
+ },
102
+ focus = function () {
103
+ charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
104
+ $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
105
+ $(this).parent().addClass('colorpicker_focus');
106
+ },
107
+ downIncrement = function (ev) {
108
+ var field = $(this).parent().find('input').focus();
109
+ var current = {
110
+ el: $(this).parent().addClass('colorpicker_slider'),
111
+ max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
112
+ y: ev.pageY,
113
+ field: field,
114
+ val: parseInt(field.val(), 10),
115
+ preview: $(this).parent().parent().data('colorpicker').livePreview
116
+ };
117
+ $(document).bind('mouseup', current, upIncrement);
118
+ $(document).bind('mousemove', current, moveIncrement);
119
+ $(document).bind('mousedown', current, moveIncrement);
120
+ },
121
+ moveIncrement = function (ev) {
122
+ ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
123
+ if (ev.data.preview) {
124
+ change.apply(ev.data.field.get(0), [true]);
125
+ }
126
+ return false;
127
+ },
128
+ upIncrement = function (ev) {
129
+ change.apply(ev.data.field.get(0), [true]);
130
+ ev.data.el.removeClass('colorpicker_slider').find('input').focus();
131
+ $(document).unbind('mouseup', upIncrement);
132
+ $(document).unbind('mousemove', moveIncrement);
133
+ $(document).unbind('mousedown', moveIncrement);
134
+ return false;
135
+ },
136
+ downHue = function (ev) {
137
+ var current = {
138
+ cal: $(this).parent(),
139
+ y: $(this).offset().top
140
+ };
141
+ current.preview = current.cal.data('colorpicker').livePreview;
142
+ $(document).bind('mouseup', current, upHue);
143
+ $(document).bind('mousemove', current, moveHue);
144
+ $(document).bind('mousedown', current, moveHue);
145
+ },
146
+ moveHue = function (ev) {
147
+ change.apply(
148
+ ev.data.cal.data('colorpicker')
149
+ .fields
150
+ .eq(4)
151
+ .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
152
+ .get(0),
153
+ [ev.data.preview]
154
+ );
155
+ return false;
156
+ },
157
+ upHue = function (ev) {
158
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
159
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
160
+ $(document).unbind('mouseup', upHue);
161
+ $(document).unbind('mousemove', moveHue);
162
+ $(document).unbind('mousedown', moveHue);
163
+ return false;
164
+ },
165
+ downSelector = function (ev) {
166
+ var current = {
167
+ cal: $(this).parent(),
168
+ pos: $(this).offset()
169
+ };
170
+ current.preview = current.cal.data('colorpicker').livePreview;
171
+ $(document).bind('mouseup', current, upSelector);
172
+ $(document).bind('mousemove', current, moveSelector);
173
+ $(document).bind('mousedown', current, moveSelector);
174
+ },
175
+ moveSelector = function (ev) {
176
+ change.apply(
177
+ ev.data.cal.data('colorpicker')
178
+ .fields
179
+ .eq(6)
180
+ .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
181
+ .end()
182
+ .eq(5)
183
+ .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
184
+ .get(0),
185
+ [ev.data.preview]
186
+ );
187
+ return false;
188
+ },
189
+ upSelector = function (ev) {
190
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
191
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
192
+ $(document).unbind('mouseup', upSelector);
193
+ $(document).unbind('mousemove', moveSelector);
194
+ $(document).unbind('mousedown', moveSelector);
195
+ return false;
196
+ },
197
+ enterSubmit = function (ev) {
198
+ $(this).addClass('colorpicker_focus');
199
+ },
200
+ leaveSubmit = function (ev) {
201
+ $(this).removeClass('colorpicker_focus');
202
+ },
203
+ clickSubmit = function (ev) {
204
+ var cal = $(this).parent();
205
+ var col = cal.data('colorpicker').color;
206
+ cal.data('colorpicker').origColor = col;
207
+ setCurrentColor(col, cal.get(0));
208
+ cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
209
+ ev.preventDefault();
210
+ return false;
211
+ },
212
+ show = function (ev) {
213
+ var cal = $('#' + $(this).data('colorpickerId'));
214
+ cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
215
+ var pos = $(this).offset();
216
+ var viewPort = getViewport();
217
+ var top = pos.top + this.offsetHeight;
218
+ var left = pos.left;
219
+ if (top + 176 > viewPort.t + viewPort.h) {
220
+ top -= this.offsetHeight + 176;
221
+ }
222
+ if (left + 356 > viewPort.l + viewPort.w) {
223
+ left -= 356;
224
+ }
225
+ cal.css({left: left + 'px', top: top + 'px'});
226
+ if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
227
+ cal.show();
228
+ }
229
+ $(document).bind('mousedown', {cal: cal}, hide);
230
+ return false;
231
+ },
232
+ hide = function (ev) {
233
+ if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
234
+ var hex = HSBToHex(ev.data.cal.data('colorpicker').color);
235
+ if (ev.data.cal.data('colorpicker').onHide(ev.data.cal.get(0), hex) != false) {
236
+ ev.data.cal.hide();
237
+ }
238
+ $(document).unbind('mousedown', hide);
239
+ }
240
+ },
241
+ isChildOf = function(parentEl, el, container) {
242
+ if (parentEl == el) {
243
+ return true;
244
+ }
245
+ if (parentEl.contains) {
246
+ return parentEl.contains(el);
247
+ }
248
+ if ( parentEl.compareDocumentPosition ) {
249
+ return !!(parentEl.compareDocumentPosition(el) & 16);
250
+ }
251
+ var prEl = el.parentNode;
252
+ while(prEl && prEl != container) {
253
+ if (prEl == parentEl)
254
+ return true;
255
+ prEl = prEl.parentNode;
256
+ }
257
+ return false;
258
+ },
259
+ getViewport = function () {
260
+ var m = document.compatMode == 'CSS1Compat';
261
+ return {
262
+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
263
+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
264
+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
265
+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
266
+ };
267
+ },
268
+ fixHSB = function (hsb) {
269
+ return {
270
+ h: Math.min(360, Math.max(0, hsb.h)),
271
+ s: Math.min(100, Math.max(0, hsb.s)),
272
+ b: Math.min(100, Math.max(0, hsb.b))
273
+ };
274
+ },
275
+ fixRGB = function (rgb) {
276
+ return {
277
+ r: Math.min(255, Math.max(0, rgb.r)),
278
+ g: Math.min(255, Math.max(0, rgb.g)),
279
+ b: Math.min(255, Math.max(0, rgb.b))
280
+ };
281
+ },
282
+ fixHex = function (hex) {
283
+ var len = 6 - hex.length;
284
+ if (len > 0) {
285
+ var o = [];
286
+ for (var i=0; i<len; i++) {
287
+ o.push('0');
288
+ }
289
+ o.push(hex);
290
+ hex = o.join('');
291
+ }
292
+ return hex;
293
+ },
294
+ HexToRGB = function (hex) {
295
+ var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
296
+ return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
297
+ },
298
+ HexToHSB = function (hex) {
299
+ return RGBToHSB(HexToRGB(hex));
300
+ },
301
+ RGBToHSB = function (rgb) {
302
+ var hsb = {
303
+ h: 0,
304
+ s: 0,
305
+ b: 0
306
+ };
307
+ var min = Math.min(rgb.r, rgb.g, rgb.b);
308
+ var max = Math.max(rgb.r, rgb.g, rgb.b);
309
+ var delta = max - min;
310
+ hsb.b = max;
311
+ if (max != 0) {
312
+
313
+ }
314
+ hsb.s = max != 0 ? 255 * delta / max : 0;
315
+ if (hsb.s != 0) {
316
+ if (rgb.r == max) {
317
+ hsb.h = (rgb.g - rgb.b) / delta;
318
+ } else if (rgb.g == max) {
319
+ hsb.h = 2 + (rgb.b - rgb.r) / delta;
320
+ } else {
321
+ hsb.h = 4 + (rgb.r - rgb.g) / delta;
322
+ }
323
+ } else {
324
+ hsb.h = -1;
325
+ }
326
+ hsb.h *= 60;
327
+ if (hsb.h < 0) {
328
+ hsb.h += 360;
329
+ }
330
+ hsb.s *= 100/255;
331
+ hsb.b *= 100/255;
332
+ return hsb;
333
+ },
334
+ HSBToRGB = function (hsb) {
335
+ var rgb = {};
336
+ var h = Math.round(hsb.h);
337
+ var s = Math.round(hsb.s*255/100);
338
+ var v = Math.round(hsb.b*255/100);
339
+ if(s == 0) {
340
+ rgb.r = rgb.g = rgb.b = v;
341
+ } else {
342
+ var t1 = v;
343
+ var t2 = (255-s)*v/255;
344
+ var t3 = (t1-t2)*(h%60)/60;
345
+ if(h==360) h = 0;
346
+ if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
347
+ else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
348
+ else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
349
+ else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
350
+ else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
351
+ else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
352
+ else {rgb.r=0; rgb.g=0; rgb.b=0}
353
+ }
354
+ return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
355
+ },
356
+ RGBToHex = function (rgb) {
357
+ var hex = [
358
+ rgb.r.toString(16),
359
+ rgb.g.toString(16),
360
+ rgb.b.toString(16)
361
+ ];
362
+ $.each(hex, function (nr, val) {
363
+ if (val.length == 1) {
364
+ hex[nr] = '0' + val;
365
+ }
366
+ });
367
+ return hex.join('');
368
+ },
369
+ HSBToHex = function (hsb) {
370
+ return RGBToHex(HSBToRGB(hsb));
371
+ },
372
+ restoreOriginal = function () {
373
+ var cal = $(this).parent();
374
+ var col = cal.data('colorpicker').origColor;
375
+ cal.data('colorpicker').color = col;
376
+ fillRGBFields(col, cal.get(0));
377
+ fillHexFields(col, cal.get(0));
378
+ fillHSBFields(col, cal.get(0));
379
+ setSelector(col, cal.get(0));
380
+ setHue(col, cal.get(0));
381
+ setNewColor(col, cal.get(0));
382
+ };
383
+ return {
384
+ init: function (opt) {
385
+ opt = $.extend({}, defaults, opt||{});
386
+ if (typeof opt.color == 'string') {
387
+ opt.color = HexToHSB(opt.color);
388
+ } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
389
+ opt.color = RGBToHSB(opt.color);
390
+ } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
391
+ opt.color = fixHSB(opt.color);
392
+ } else {
393
+ return this;
394
+ }
395
+ return this.each(function () {
396
+ if (!$(this).data('colorpickerId')) {
397
+ var options = $.extend({}, opt);
398
+ options.origColor = opt.color;
399
+ var id = 'collorpicker_' + parseInt(Math.random() * 1000);
400
+ $(this).data('colorpickerId', id);
401
+ var cal = $(tpl).attr('id', id);
402
+ if (options.flat) {
403
+ cal.appendTo(this).show();
404
+ } else {
405
+ cal.appendTo(document.body);
406
+ }
407
+ options.fields = cal
408
+ .find('input')
409
+ .bind('keyup', keyDown)
410
+ .bind('change', change)
411
+ .bind('blur', blur)
412
+ .bind('focus', focus);
413
+ cal
414
+ .find('span').bind('mousedown', downIncrement).end()
415
+ .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
416
+ options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
417
+ options.selectorIndic = options.selector.find('div div');
418
+ options.el = this;
419
+ options.hue = cal.find('div.colorpicker_hue div');
420
+ cal.find('div.colorpicker_hue').bind('mousedown', downHue);
421
+ options.newColor = cal.find('div.colorpicker_new_color');
422
+ options.currentColor = cal.find('div.colorpicker_current_color');
423
+ cal.data('colorpicker', options);
424
+ cal.find('.colorpicker_submit')
425
+ .bind('mouseenter', enterSubmit)
426
+ .bind('mouseleave', leaveSubmit)
427
+ .bind('click', clickSubmit);
428
+ fillRGBFields(options.color, cal.get(0));
429
+ fillHSBFields(options.color, cal.get(0));
430
+ fillHexFields(options.color, cal.get(0));
431
+ setHue(options.color, cal.get(0));
432
+ setSelector(options.color, cal.get(0));
433
+ setCurrentColor(options.color, cal.get(0));
434
+ setNewColor(options.color, cal.get(0));
435
+ if (options.flat) {
436
+ cal.css({
437
+ position: 'relative',
438
+ display: 'block'
439
+ });
440
+ } else {
441
+ $(this).bind(options.eventName, show);
442
+ }
443
+ }
444
+ });
445
+ },
446
+ showPicker: function() {
447
+ return this.each( function () {
448
+ if ($(this).data('colorpickerId')) {
449
+ show.apply(this);
450
+ }
451
+ });
452
+ },
453
+ hidePicker: function() {
454
+ return this.each( function () {
455
+ if ($(this).data('colorpickerId')) {
456
+ $('#' + $(this).data('colorpickerId')).hide();
457
+ }
458
+ });
459
+ },
460
+ setColor: function(col) {
461
+ if (typeof col == 'string') {
462
+ col = HexToHSB(col);
463
+ } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
464
+ col = RGBToHSB(col);
465
+ } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
466
+ col = fixHSB(col);
467
+ } else {
468
+ return this;
469
+ }
470
+ return this.each(function(){
471
+ if ($(this).data('colorpickerId')) {
472
+ var cal = $('#' + $(this).data('colorpickerId'));
473
+ cal.data('colorpicker').color = col;
474
+ cal.data('colorpicker').origColor = col;
475
+ fillRGBFields(col, cal.get(0));
476
+ fillHSBFields(col, cal.get(0));
477
+ fillHexFields(col, cal.get(0));
478
+ setHue(col, cal.get(0));
479
+ setSelector(col, cal.get(0));
480
+ setCurrentColor(col, cal.get(0));
481
+ setNewColor(col, cal.get(0));
482
+ }
483
+ });
484
+ },
485
+ rgb2hex: function(rgb) {
486
+
487
+ }
488
+ };
489
+ }();
490
+ $.fn.extend({
491
+ ColorPicker: ColorPicker.init,
492
+ ColorPickerHide: ColorPicker.hidePicker,
493
+ ColorPickerShow: ColorPicker.showPicker,
494
+ ColorPickerSetColor: ColorPicker.setColor
495
+ });
496
+ })(jQuery)
3rdparty/jquery.cookie.js ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Cookie plugin
3
+ *
4
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
5
+ * Dual licensed under the MIT and GPL licenses:
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ * http://www.gnu.org/licenses/gpl.html
8
+ *
9
+ */
10
+
11
+ /**
12
+ * Create a cookie with the given name and value and other optional parameters.
13
+ *
14
+ * @example $.cookie('the_cookie', 'the_value');
15
+ * @desc Set the value of a cookie.
16
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
17
+ * @desc Create a cookie with all available options.
18
+ * @example $.cookie('the_cookie', 'the_value');
19
+ * @desc Create a session cookie.
20
+ * @example $.cookie('the_cookie', null);
21
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
22
+ * used when the cookie was set.
23
+ *
24
+ * @param String name The name of the cookie.
25
+ * @param String value The value of the cookie.
26
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
27
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
28
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
29
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
30
+ * when the the browser exits.
31
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
32
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
33
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
34
+ * require a secure protocol (like HTTPS).
35
+ * @type undefined
36
+ *
37
+ * @name $.cookie
38
+ * @cat Plugins/Cookie
39
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
40
+ */
41
+
42
+ /**
43
+ * Get the value of a cookie with the given name.
44
+ *
45
+ * @example $.cookie('the_cookie');
46
+ * @desc Get the value of a cookie.
47
+ *
48
+ * @param String name The name of the cookie.
49
+ * @return The value of the cookie.
50
+ * @type String
51
+ *
52
+ * @name $.cookie
53
+ * @cat Plugins/Cookie
54
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
55
+ */
56
+ jQuery.cookie = function(name, value, options) {
57
+
58
+ if (typeof value != 'undefined') { // name and value given, set cookie
59
+ options = options || {};
60
+ if (value === null) {
61
+ value = '';
62
+ options.expires = -1;
63
+ }
64
+ var expires = '';
65
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
66
+ var date;
67
+ if (typeof options.expires == 'number') {
68
+ date = new Date();
69
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
70
+ } else {
71
+ date = options.expires;
72
+ }
73
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
74
+ }
75
+ // CAUTION: Needed to parenthesize options.path and options.domain
76
+ // in the following expressions, otherwise they evaluate to undefined
77
+ // in the packed version for some reason...
78
+ var path = options.path ? '; path=' + (options.path) : '';
79
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
80
+ var secure = options.secure ? '; secure' : '';
81
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
82
+ } else { // only name given, get cookie
83
+ var cookieValue = null;
84
+ if (document.cookie && document.cookie != '') {
85
+ var cookies = document.cookie.split(';');
86
+ for (var i = 0; i < cookies.length; i++) {
87
+ var cookie = jQuery.trim(cookies[i]);
88
+ // Does this cookie string begin with the name we want?
89
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
90
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
91
+ break;
92
+ }
93
+ }
94
+ }
95
+ return cookieValue;
96
+ }
97
+ };
3rdparty/maxi_player/generator.js ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var generator = new Object();
2
+ generator.params = new Object();
3
+ generator.updateParam = function(name, value)
4
+ {
5
+ //var element = document.getElementById(id);
6
+ switch (this.params[name].type) {
7
+ case "url":
8
+ case "text":
9
+ case "color":
10
+ this.params[name].value = value;
11
+ break;
12
+ case "int":
13
+ this.params[name].value = Number(value);
14
+ break;
15
+ case "bool":
16
+ this.params[name].value = value; // (value == "on")?1:0;
17
+ break;
18
+ }
19
+ }
20
+
21
+ generator.addParam = function(id, name, type, defaultValue)
22
+ {
23
+ var element = document.getElementById(id);
24
+ this.params[name] = new Object();
25
+ this.params[name].type = type;
26
+ this.params[name].defaultValue = defaultValue;
27
+ this.params[name].element = element;
28
+ switch (type) {
29
+ case "url":
30
+ case "text":
31
+ this.params[name].value = element.value;
32
+ element.onchange = delegate(this.params[name], function()
33
+ {
34
+ this.value = this.element.value;
35
+ generator.updatePlayer();
36
+ });
37
+ break;
38
+ case "color":
39
+ this.params[name].value = element.value.replace(/#/, '');
40
+ element.onchange = delegate(this.params[name], function()
41
+ {
42
+ this.value = this.element.value;
43
+ generator.updatePlayer();
44
+ });
45
+ break;
46
+ break;
47
+ case "int":
48
+ this.params[name].value = Number(element.value);
49
+ element.onchange = delegate(this.params[name], function()
50
+ {
51
+ this.value = Number(this.element.value);
52
+ generator.updatePlayer();
53
+ });
54
+ break;
55
+ case "bool":
56
+ this.params[name].value = element.value; // (element.value == "on")?1:0;
57
+ element.onchange = delegate(this.params[name], function()
58
+ {
59
+ this.value = this.element.value; // (this.element.value == "on")?1:0;
60
+ generator.updatePlayer();
61
+ });
62
+ break;
63
+ }
64
+ };
65
+ generator.updatePlayer = function()
66
+ {
67
+ var out = '<object type="application/x-shockwave-flash" data="'+this.player+'" width="'+this.params.width.value+'" height="'+this.params.height.value+'">'+"\n";
68
+ out += ' <param name="movie" value="'+this.player+'" />'+"\n";
69
+ if (this.params.bgcolor) {
70
+ out += ' <param name="bgcolor" value="#'+this.params.bgcolor.value.replace(/#/, '')+'" />'+"\n";
71
+ }
72
+ out += ' <param name="FlashVars" value="';
73
+
74
+ var separator = '';
75
+ for (var i in this.params) {
76
+ if (this.params[i].value != this.params[i].defaultValue && this.params[i].value != '' ) {
77
+ if (this.params[i].type == "url") {
78
+ out += separator + i + '=' + escape(this.params[i].value);
79
+ }
80
+ else if(this.params[i].type == "color") {
81
+ out += separator + i + '=' + this.params[i].value.replace(/#/, '');
82
+ }
83
+ else {
84
+ out += separator + i + '=' + escapeHTML(this.params[i].value);
85
+ }
86
+ separator = '&amp;';
87
+ }
88
+ }
89
+
90
+ out += '" />'+"\n";
91
+ out += '</object>';
92
+
93
+ var player = document.getElementById("player_preview");
94
+ player.innerHTML = out;
95
+ };
96
+
97
+ var params = new Object();
98
+
99
+ /* =============== UTILS =============== */
100
+ var delegate = function(pTarget, pFunction)
101
+ {
102
+ var f = function(){
103
+ arguments.callee.func.apply(arguments.callee.target, arguments);
104
+ };
105
+ f.target = pTarget;
106
+ f.func = pFunction;
107
+ return f;
108
+ }
109
+ var escapeHTML = function(str) {
110
+ str = String(str);
111
+ str = str.replace(/&/gi, '');
112
+
113
+ var div = document.createElement("div");
114
+ var text = document.createTextNode('');
115
+ div.appendChild(text);
116
+ text.data = str;
117
+
118
+ var result = div.innerHTML;
119
+ result = result.replace(/"/gi, '&quot;');
120
+
121
+ return result;
122
+ }
123
+ var findPosX = function (obj)
124
+ {
125
+ var curleft = 0;
126
+ do {
127
+ curleft += obj.offsetLeft || 0;
128
+ obj = obj.offsetParent;
129
+ } while (obj);
130
+ return curleft;
131
+ };
132
+ var findPosY = function (obj)
133
+ {
134
+ var curtop = 0;
135
+ do {
136
+ curtop += obj.offsetTop || 0;
137
+ obj = obj.offsetParent;
138
+ } while (obj);
139
+ return curtop;
140
+ };
141
+ var twoChar = function (str)
142
+ {
143
+ if (str.length == 1) {
144
+ return "0" + str;
145
+ }
146
+ return str;
147
+ };
audio-player.swf ADDED
Binary file
audioplay.swf ADDED
Binary file
buttons/classic/pausedown.png ADDED
Binary file
buttons/classic/pauseover.png ADDED
Binary file
buttons/classic/pauseup.png ADDED
Binary file
buttons/classic/playdown.png ADDED
Binary file
buttons/classic/playover.png ADDED
Binary file
buttons/classic/playup.png ADDED
Binary file
buttons/classic/stopdown.png ADDED
Binary file
buttons/classic/stopover.png ADDED
Binary file
buttons/classic/stopup.png ADDED
Binary file
buttons/classic_small/pausedown.png ADDED
Binary file
buttons/classic_small/pauseover.png ADDED
Binary file
buttons/classic_small/pauseup.png ADDED
Binary file
buttons/classic_small/playdown.png ADDED
Binary file
buttons/classic_small/playover.png ADDED
Binary file
buttons/classic_small/playup.png ADDED
Binary file
buttons/classic_small/stopdown.png ADDED
Binary file
buttons/classic_small/stopover.png ADDED
Binary file
buttons/classic_small/stopup.png ADDED
Binary file
buttons/negative/pausedown.png ADDED
Binary file
buttons/negative/pauseover.png ADDED
Binary file
buttons/negative/pauseup.png ADDED
Binary file
buttons/negative/playdown.png ADDED
Binary file
buttons/negative/playover.png ADDED
Binary file
buttons/negative/playup.png ADDED
Binary file
buttons/negative/stopdown.png ADDED
Binary file
buttons/negative/stopover.png ADDED
Binary file
buttons/negative/stopup.png ADDED
Binary file
buttons/negative_small/pausedown.png ADDED
Binary file
buttons/negative_small/pauseover.png ADDED
Binary file
buttons/negative_small/pauseup.png ADDED
Binary file
buttons/negative_small/playdown.png ADDED
Binary file
buttons/negative_small/playover.png ADDED
Binary file
buttons/negative_small/playup.png ADDED
Binary file
buttons/negative_small/stopdown.png ADDED
Binary file
buttons/negative_small/stopover.png ADDED
Binary file
buttons/negative_small/stopup.png ADDED
Binary file
css/admin.css ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* admin.css */
2
+
3
+ .powerpress-notice {
4
+ margin-top: 10px;
5
+ margin-bottom: 10px;
6
+ line-height: 29px;
7
+ font-size: 12px;
8
+ border-width: 1px;
9
+ border-style: solid;
10
+ font-weight: bold;
11
+ }
12
+ .powerpress-error {
13
+ margin-top: 10px;
14
+ margin-bottom: 10px;
15
+ line-height: 29px;
16
+ font-size: 12px;
17
+ border-width: 1px;
18
+ border-style: solid;
19
+ font-weight: bold;
20
+ }
21
+ #powerpress_settings {
22
+ background-image:url(http://images.blubrry.com/powerpress/blubrry_logo.png);
23
+ background-repeat: no-repeat;
24
+ background-position: bottom right;
25
+ }
26
+
27
+ #powerpress_settings ul li ul {
28
+ list-style: disc;
29
+ }
30
+ #powerpress_settings ul li ul li {
31
+ margin-left: 50px;
32
+ font-size: 90%;
33
+ }
34
+ #powerpress_settings label {
35
+ font-size: 120%;
36
+ }
37
+ .bpp_input_sm {
38
+ width: 120px;
39
+ }
40
+ .bpp_input_med {
41
+ width: 250px;
42
+ }
43
+ .powerpress_color_box {
44
+ float: left;
45
+ width: 16px;
46
+ height: 16px;
47
+ cursor: pointer;
48
+ margin: 4px 1px;
49
+ border: 1px solid #666666;
50
+
51
+ }
52
+
53
+ .powerpress_tabbed_content > ul {
54
+ margin-left:10px;
55
+ position:relative;
56
+ top:1px;
57
+ z-index:100;
58
+ }
59
+
60
+ .powerpress_tabbed_content > ul li { list-style:none; float:left; margin-bottom:0;}
61
+ .powerpress_tabbed_content > ul a {
62
+ text-decoration:none;
63
+ -moz-border-radius-bottomleft:0;
64
+ -moz-border-radius-bottomright:0;
65
+ -moz-border-radius-topleft:3px;
66
+ -moz-border-radius-topright:3px;
67
+ border-style:solid;
68
+ border-width:1px;
69
+ cursor:pointer;
70
+ display:block;
71
+ height:18px;
72
+ margin:5px 5px 0 0;
73
+ padding:4px 5px 2px;
74
+ background-color:#F1F1F1;
75
+ border-color:#DFDFDF;
76
+ color:#999999;
77
+
78
+ }
79
+ .powerpress_tabbed_content ul a:hover {
80
+ }
81
+
82
+ .powerpress_tabbed_content ul .ui-tabs-selected a {
83
+ background-color:#FFFFFF;
84
+ border-bottom:0 none;
85
+ color:#333333;
86
+ cursor:default;
87
+ padding-bottom:3px;
88
+ }
89
+
90
+ .powerpress_tabbed_content > div {
91
+ padding: 0px 10px 10px 10px;
92
+ *padding-top:3px;
93
+ *margin-top:-15px;
94
+ clear:left;
95
+ }
96
+ .powerpress_tabbed_content .wrap {
97
+ padding:0;
98
+ }
99
+
100
+ .powerpress_tab {
101
+ -moz-border-radius-bottomleft:0;
102
+ -moz-border-radius-bottomright:0;
103
+ -moz-border-radius-topleft:6px;
104
+ -moz-border-radius-topright:6px;
105
+ background: #FFF;
106
+ border-collapse:separate;
107
+ border-style:solid;
108
+ border-width:1px;
109
+ border-color:#DFDFDF;
110
+ padding-bottom: 15px;
111
+ }
112
+ .powerpress_tab .form-table {
113
+ margin-top: 0;
114
+ margin-bottom: 0;
115
+ }
116
+
117
+ .powerpress_tab .form-table td {
118
+ margin-bottom: 4px;
119
+ padding: 4px 10px 4px;
120
+ line-height: 20px;
121
+ font-size: 11px;
122
+ }
123
+
124
+ #powerpress_support {
125
+
126
+ }
127
+ #powerpress_support li {
128
+ margin-left: 70px;
129
+ list-style-type:disc;
130
+ margin-top: 0;
131
+ margin-bottom: 0;
132
+ }
images/color_preview.gif ADDED
Binary file
mp3info.class.php CHANGED
@@ -6,10 +6,10 @@
6
  // for efficienccy
7
 
8
  class Mp3Info {
9
- //var $m_DownloadBytesLimit = 1638400; // 200K (200*1024*8) bytes file
10
- //var $m_DownloadBytesLimit = 204800; // 25K (25*1024*8) bytes file
11
- var $m_DownloadBytesLimit = 327680; // 40K (40*1024*8) bytes file
12
- //var $m_DownloadBytesLimit = 409600; // 50K (50*1024*8) bytes file
13
  var $m_RedirectLimit = 12; // Number of times to do the 302 redirect
14
  var $m_UserAgent = 'Blubrry PowerPress';
15
  var $m_error = '';
@@ -110,7 +110,7 @@
110
  // The following code relies on fopen_url capability.
111
  if( $RedirectCount > $this->m_RedirectLimit )
112
  {
113
- $this->SetError( 'Download exceeded redirect limit of '.$this->m_RedirectLimit .' (fopen).' );
114
  return false;
115
  }
116
 
@@ -263,7 +263,7 @@
263
  {
264
  if( $RedirectCount > $this->m_RedirectLimit )
265
  {
266
- $this->SetError( 'Download exceeded redirect limit of '.$this->m_RedirectLimit .' (cURL in safe mode).' );
267
  return false;
268
  }
269
  $this->m_RedirectCount = $RedirectCount;
@@ -305,7 +305,7 @@
305
  case 307: {
306
  if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
307
  {
308
- $this->SetError( 'Download exceeded redirect limit of '.$this->m_RedirectLimit .' (cURL).' );
309
  }
310
  else
311
  {
6
  // for efficienccy
7
 
8
  class Mp3Info {
9
+ //var $m_DownloadBytesLimit = 1638400; // 1600K (1600*1024) bytes file
10
+ //var $m_DownloadBytesLimit = 204800; // 200K (200*1024) bytes file
11
+ var $m_DownloadBytesLimit = 327680; // 320K (320*1024) bytes file
12
+ //var $m_DownloadBytesLimit = 409600; // 400K (400*1024) bytes file
13
  var $m_RedirectLimit = 12; // Number of times to do the 302 redirect
14
  var $m_UserAgent = 'Blubrry PowerPress';
15
  var $m_error = '';
110
  // The following code relies on fopen_url capability.
111
  if( $RedirectCount > $this->m_RedirectLimit )
112
  {
113
+ $this->SetError( 'Media URL exceeded redirect limit of '.$this->m_RedirectLimit .' (fopen).' );
114
  return false;
115
  }
116
 
263
  {
264
  if( $RedirectCount > $this->m_RedirectLimit )
265
  {
266
+ $this->SetError( 'Media URL exceeded redirect limit of '.$this->m_RedirectLimit .' (cURL in safe mode).' );
267
  return false;
268
  }
269
  $this->m_RedirectCount = $RedirectCount;
305
  case 307: {
306
  if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
307
  {
308
+ $this->SetError( 'Media URL exceeded redirect limit of '.$this->m_RedirectLimit .' (cURL).' );
309
  }
310
  else
311
  {
player.js CHANGED
@@ -28,7 +28,7 @@
28
  @width - width of player
29
  @height - height of player
30
  */
31
- function powerpress_embed_quicktime(div,media_url,width,height)
32
  {
33
  if( document.getElementById(div) )
34
  {
@@ -48,11 +48,11 @@ function powerpress_embed_quicktime(div,media_url,width,height)
48
  Html += '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="'+ width +'" height="'+ height +'" codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n';
49
  Html += ' <param name="src" value="'+ media_url +'" />\n';
50
  Html += ' <param name="href" value="'+ media_url +'" />\n';
51
- Html += ' <param name="scale" value="tofit" />\n';
52
  Html += ' <param name="controller" value="true" />\n';
53
  Html += ' <param name="autoplay" value="true" />\n';
54
  Html += ' <param name="pluginspage" value="http://www.apple.com/quicktime/download/" />\n';
55
- Html += ' <embed type="'+ contentType +'" src="'+ media_url +'" width="'+ width +'" height="'+ height +'" scale="tofit" correction="full" cache="true" autoplay="true" controller="true" pluginspage="http://www.apple.com/quicktime/download/"></embed>';
56
  Html += '</object>\n';
57
  document.getElementById(div).innerHTML = Html;
58
  return false; // stop the default link from proceeding
28
  @width - width of player
29
  @height - height of player
30
  */
31
+ function powerpress_embed_quicktime(div,media_url,width,height,scale)
32
  {
33
  if( document.getElementById(div) )
34
  {
48
  Html += '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="'+ width +'" height="'+ height +'" codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n';
49
  Html += ' <param name="src" value="'+ media_url +'" />\n';
50
  Html += ' <param name="href" value="'+ media_url +'" />\n';
51
+ Html += ' <param name="scale" value="'+ scale +'" />\n';
52
  Html += ' <param name="controller" value="true" />\n';
53
  Html += ' <param name="autoplay" value="true" />\n';
54
  Html += ' <param name="pluginspage" value="http://www.apple.com/quicktime/download/" />\n';
55
+ Html += ' <embed type="'+ contentType +'" src="'+ media_url +'" width="'+ width +'" height="'+ height +'" scale="'+ scale +'" correction="full" cache="true" autoplay="true" controller="true" pluginspage="http://www.apple.com/quicktime/download/"></embed>';
56
  Html += '</object>\n';
57
  document.getElementById(div).innerHTML = Html;
58
  return false; // stop the default link from proceeding
player_mp3_maxi.swf ADDED
Binary file
powerpress-feed-auth.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // powerpress-feed-auth.php
3
+
4
+ function powerpress_feed_auth($feed_slug)
5
+ {
6
+ $FeedSettings = get_option('powerpress_feed_'.$feed_slug);
7
+
8
+ if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) )
9
+ powerpress_feed_auth_basic( $FeedSettings['title'] );
10
+
11
+ $user = $_SERVER['PHP_AUTH_USER'];
12
+ $password = $_SERVER['PHP_AUTH_PW'];
13
+
14
+ $user = wp_authenticate($user, $password);
15
+
16
+ if( !is_wp_error($user) )
17
+ {
18
+ // Check capability...
19
+ if( $user->has_cap( $FeedSettings['premium'] ) )
20
+ return; // Nice, let us continue...
21
+
22
+ powerpress_feed_auth_basic( $FeedSettings['title'], __('Access Denied') );
23
+ }
24
+
25
+ // user authenticated here
26
+ powerpress_feed_auth_basic( $FeedSettings['title'], __('Authorization Failed') );
27
+ }
28
+
29
+ function powerpress_feed_auth_basic($realm_name, $error = false )
30
+ {
31
+ if( !$error )
32
+ $error = __('Unauthorized');
33
+ header('HTTP/1.0 401 Unauthorized');
34
+ header('WWW-Authenticate: Basic realm="'. str_replace('"', '', $realm_name).'"');
35
+
36
+ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">';
37
+ echo "\n";
38
+ ?>
39
+ <html>
40
+ <head>
41
+ <title><?php echo $error; ?></title>
42
+ </head>
43
+ <body>
44
+ <p><?php echo $error; ?></p>
45
+ </body>
46
+ </html>
47
+ <?php
48
+ exit;
49
+ }
50
+
51
+ ?>
powerpress-player.php ADDED
@@ -0,0 +1,303 @@