Regenerate Thumbnails - Version 2.0.0

Version Description

Download this release

Release Info

Developer Viper007Bond
Plugin Icon 128x128 Regenerate Thumbnails
Version 2.0.0
Comparing to
See all releases

Code changes from version 1.1.0 to 2.0.0

jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png ADDED
Binary file
jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png ADDED
Binary file
jquery-ui/redmond/jquery-ui-1.7.2.custom.css ADDED
@@ -0,0 +1,406 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
+
39
+
40
+
41
+ /*
42
+ * jQuery UI CSS Framework
43
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
44
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
45
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
46
+ */
47
+
48
+
49
+ /* Component containers
50
+ ----------------------------------*/
51
+ .ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
52
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
53
+ .ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
54
+ .ui-widget-content a { color: #222222; }
55
+ .ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
56
+ .ui-widget-header a { color: #ffffff; }
57
+
58
+ /* Interaction states
59
+ ----------------------------------*/
60
+ .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; outline: none; }
61
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; outline: none; }
62
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; outline: none; }
63
+ .ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; outline: none; }
64
+ .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; outline: none; }
65
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; outline: none; text-decoration: none; }
66
+
67
+ /* Interaction Cues
68
+ ----------------------------------*/
69
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
70
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
71
+ .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
72
+ .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
73
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
74
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
75
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
76
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
77
+
78
+ /* Icons
79
+ ----------------------------------*/
80
+
81
+ /* states and images */
82
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
83
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
84
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
85
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
86
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
87
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
88
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
89
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
90
+
91
+ /* positioning */
92
+ .ui-icon-carat-1-n { background-position: 0 0; }
93
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
94
+ .ui-icon-carat-1-e { background-position: -32px 0; }
95
+ .ui-icon-carat-1-se { background-position: -48px 0; }
96
+ .ui-icon-carat-1-s { background-position: -64px 0; }
97
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
98
+ .ui-icon-carat-1-w { background-position: -96px 0; }
99
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
100
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
101
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
102
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
103
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
104
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
105
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
106
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
107
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
108
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
109
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
110
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
111
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
112
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
113
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
114
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
115
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
116
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
117
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
118
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
119
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
120
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
121
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
122
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
123
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
124
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
125
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
126
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
127
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
128
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
129
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
130
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
131
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
132
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
133
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
134
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
135
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
136
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
137
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
138
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
139
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
140
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
141
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
142
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
143
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
144
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
145
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
146
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
147
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
148
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
149
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
150
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
151
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
152
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
153
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
154
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
155
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
156
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
157
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
158
+ .ui-icon-extlink { background-position: -32px -80px; }
159
+ .ui-icon-newwin { background-position: -48px -80px; }
160
+ .ui-icon-refresh { background-position: -64px -80px; }
161
+ .ui-icon-shuffle { background-position: -80px -80px; }
162
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
163
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
164
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
165
+ .ui-icon-folder-open { background-position: -16px -96px; }
166
+ .ui-icon-document { background-position: -32px -96px; }
167
+ .ui-icon-document-b { background-position: -48px -96px; }
168
+ .ui-icon-note { background-position: -64px -96px; }
169
+ .ui-icon-mail-closed { background-position: -80px -96px; }
170
+ .ui-icon-mail-open { background-position: -96px -96px; }
171
+ .ui-icon-suitcase { background-position: -112px -96px; }
172
+ .ui-icon-comment { background-position: -128px -96px; }
173
+ .ui-icon-person { background-position: -144px -96px; }
174
+ .ui-icon-print { background-position: -160px -96px; }
175
+ .ui-icon-trash { background-position: -176px -96px; }
176
+ .ui-icon-locked { background-position: -192px -96px; }
177
+ .ui-icon-unlocked { background-position: -208px -96px; }
178
+ .ui-icon-bookmark { background-position: -224px -96px; }
179
+ .ui-icon-tag { background-position: -240px -96px; }
180
+ .ui-icon-home { background-position: 0 -112px; }
181
+ .ui-icon-flag { background-position: -16px -112px; }
182
+ .ui-icon-calendar { background-position: -32px -112px; }
183
+ .ui-icon-cart { background-position: -48px -112px; }
184
+ .ui-icon-pencil { background-position: -64px -112px; }
185
+ .ui-icon-clock { background-position: -80px -112px; }
186
+ .ui-icon-disk { background-position: -96px -112px; }
187
+ .ui-icon-calculator { background-position: -112px -112px; }
188
+ .ui-icon-zoomin { background-position: -128px -112px; }
189
+ .ui-icon-zoomout { background-position: -144px -112px; }
190
+ .ui-icon-search { background-position: -160px -112px; }
191
+ .ui-icon-wrench { background-position: -176px -112px; }
192
+ .ui-icon-gear { background-position: -192px -112px; }
193
+ .ui-icon-heart { background-position: -208px -112px; }
194
+ .ui-icon-star { background-position: -224px -112px; }
195
+ .ui-icon-link { background-position: -240px -112px; }
196
+ .ui-icon-cancel { background-position: 0 -128px; }
197
+ .ui-icon-plus { background-position: -16px -128px; }
198
+ .ui-icon-plusthick { background-position: -32px -128px; }
199
+ .ui-icon-minus { background-position: -48px -128px; }
200
+ .ui-icon-minusthick { background-position: -64px -128px; }
201
+ .ui-icon-close { background-position: -80px -128px; }
202
+ .ui-icon-closethick { background-position: -96px -128px; }
203
+ .ui-icon-key { background-position: -112px -128px; }
204
+ .ui-icon-lightbulb { background-position: -128px -128px; }
205
+ .ui-icon-scissors { background-position: -144px -128px; }
206
+ .ui-icon-clipboard { background-position: -160px -128px; }
207
+ .ui-icon-copy { background-position: -176px -128px; }
208
+ .ui-icon-contact { background-position: -192px -128px; }
209
+ .ui-icon-image { background-position: -208px -128px; }
210
+ .ui-icon-video { background-position: -224px -128px; }
211
+ .ui-icon-script { background-position: -240px -128px; }
212
+ .ui-icon-alert { background-position: 0 -144px; }
213
+ .ui-icon-info { background-position: -16px -144px; }
214
+ .ui-icon-notice { background-position: -32px -144px; }
215
+ .ui-icon-help { background-position: -48px -144px; }
216
+ .ui-icon-check { background-position: -64px -144px; }
217
+ .ui-icon-bullet { background-position: -80px -144px; }
218
+ .ui-icon-radio-off { background-position: -96px -144px; }
219
+ .ui-icon-radio-on { background-position: -112px -144px; }
220
+ .ui-icon-pin-w { background-position: -128px -144px; }
221
+ .ui-icon-pin-s { background-position: -144px -144px; }
222
+ .ui-icon-play { background-position: 0 -160px; }
223
+ .ui-icon-pause { background-position: -16px -160px; }
224
+ .ui-icon-seek-next { background-position: -32px -160px; }
225
+ .ui-icon-seek-prev { background-position: -48px -160px; }
226
+ .ui-icon-seek-end { background-position: -64px -160px; }
227
+ .ui-icon-seek-first { background-position: -80px -160px; }
228
+ .ui-icon-stop { background-position: -96px -160px; }
229
+ .ui-icon-eject { background-position: -112px -160px; }
230
+ .ui-icon-volume-off { background-position: -128px -160px; }
231
+ .ui-icon-volume-on { background-position: -144px -160px; }
232
+ .ui-icon-power { background-position: 0 -176px; }
233
+ .ui-icon-signal-diag { background-position: -16px -176px; }
234
+ .ui-icon-signal { background-position: -32px -176px; }
235
+ .ui-icon-battery-0 { background-position: -48px -176px; }
236
+ .ui-icon-battery-1 { background-position: -64px -176px; }
237
+ .ui-icon-battery-2 { background-position: -80px -176px; }
238
+ .ui-icon-battery-3 { background-position: -96px -176px; }
239
+ .ui-icon-circle-plus { background-position: 0 -192px; }
240
+ .ui-icon-circle-minus { background-position: -16px -192px; }
241
+ .ui-icon-circle-close { background-position: -32px -192px; }
242
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
243
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
244
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
245
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
246
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
247
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
248
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
249
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
250
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
251
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
252
+ .ui-icon-circle-check { background-position: -208px -192px; }
253
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
254
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
255
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
256
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
257
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
258
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
259
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
260
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
261
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
262
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
263
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
264
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
265
+
266
+
267
+ /* Misc visuals
268
+ ----------------------------------*/
269
+
270
+ /* Corner radius */
271
+ .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; }
272
+ .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
273
+ .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
274
+ .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
275
+ .ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
276
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
277
+ .ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
278
+ .ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
279
+ .ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; }
280
+
281
+ /* Overlays */
282
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
283
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
284
+ ----------------------------------*/
285
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
286
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
287
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
288
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
289
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
290
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
291
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
292
+ ----------------------------------*/
293
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
294
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
295
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
296
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
297
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
298
+ .ui-datepicker .ui-datepicker-next { right:2px; }
299
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
300
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
301
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
302
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
303
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
304
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
305
+ .ui-datepicker select.ui-datepicker-month,
306
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
307
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
308
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
309
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
310
+ .ui-datepicker td { border: 0; padding: 1px; }
311
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
312
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
313
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
314
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
315
+
316
+ /* with multiple calendars */
317
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
318
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
319
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
320
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
321
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
322
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
323
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
324
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
325
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
326
+ .ui-datepicker-row-break { clear:both; width:100%; }
327
+
328
+ /* RTL support */
329
+ .ui-datepicker-rtl { direction: rtl; }
330
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
331
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
332
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
333
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
334
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
335
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
336
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
337
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
338
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
339
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
340
+
341
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
342
+ .ui-datepicker-cover {
343
+ display: none; /*sorry for IE5*/
344
+ display/**/: block; /*sorry for IE5*/
345
+ position: absolute; /*must have*/
346
+ z-index: -1; /*must have*/
347
+ filter: mask(); /*must have*/
348
+ top: -4px; /*must have*/
349
+ left: -4px; /*must have*/
350
+ width: 200px; /*must have*/
351
+ height: 200px; /*must have*/
352
+ }/* Dialog
353
+ ----------------------------------*/
354
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
355
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
356
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
357
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
358
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
359
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
360
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
361
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
362
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
363
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
364
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
365
+ /* Progressbar
366
+ ----------------------------------*/
367
+ .ui-progressbar { height:2em; text-align: left; }
368
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
369
+ ----------------------------------*/
370
+ .ui-resizable { position: relative;}
371
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
372
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
373
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
374
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
375
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
376
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
377
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
378
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
379
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
380
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
381
+ ----------------------------------*/
382
+ .ui-slider { position: relative; text-align: left; }
383
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
384
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
385
+
386
+ .ui-slider-horizontal { height: .8em; }
387
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
388
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
389
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
390
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
391
+
392
+ .ui-slider-vertical { width: .8em; height: 100px; }
393
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
394
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
395
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
396
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
397
+ ----------------------------------*/
398
+ .ui-tabs { padding: .2em; zoom: 1; }
399
+ .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
400
+ .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
401
+ .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
402
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
403
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
404
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
405
+ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
406
+ .ui-tabs .ui-tabs-hide { display: none !important; }
jquery-ui/ui.progressbar.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Progressbar 1.7.2
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Progressbar
9
+ *
10
+ * Depends:
11
+ * ui.core.js
12
+ */
13
+ (function(a){a.widget("ui.progressbar",{_init:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=a('<div class="ui-progressbar-value ui-widget-header ui-corner-left"></div>').appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow").removeData("progressbar").unbind(".progressbar");this.valueDiv.remove();a.widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===undefined){return this._value()}this._setData("value",b);return this},_setData:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change",null,{});break}a.widget.prototype._setData.apply(this,arguments)},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_valueMin:function(){var b=0;return b},_valueMax:function(){var b=100;return b},_refreshValue:function(){var b=this.value();this.valueDiv[b==this._valueMax()?"addClass":"removeClass"]("ui-corner-right");this.valueDiv.width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.7.2",defaults:{value:0}})})(jQuery);;
readme.txt CHANGED
@@ -2,15 +2,15 @@
2
  Contributors: Viper007Bond
3
  Donate link: http://www.viper007bond.com/donate/
4
  Tags: thumbnail, thumbnails
5
- Requires at least: 2.5
6
- Tested up to: 2.8
7
  Stable tag: trunk
8
 
9
- Allows you to regenerate all attachment thumbnails in just one-click.
10
 
11
  == Description ==
12
 
13
- With just one click, Regenerate Thumbnails will allow you to regenerate both sized thumbnails for all attachments. This is very handy if you've changed either of your thumbnail dimensions (via Settings -> Miscellaneous) after uploading images.
14
 
15
  == Installation ==
16
 
@@ -22,14 +22,6 @@ To upgrade from a previous version of this plugin, delete the entire folder and
22
 
23
  Extract all files from the ZIP file, making sure to keep the file structure intact, and then upload it to `/wp-content/plugins/`.
24
 
25
- This should result in the following file structure:
26
-
27
- `- wp-content
28
- - plugins
29
- - regenerate-thumbnails
30
- | readme.txt
31
- | regenerate-thumbnails.php`
32
-
33
  Then just visit your admin area and activate the plugin.
34
 
35
  ###Plugin Usage###
@@ -40,6 +32,10 @@ Visit Tools -> Regen. Thumbnails to get started.
40
 
41
  == ChangeLog ==
42
 
 
 
 
 
43
  **Version 1.1.0**
44
 
45
  * WordPress 2.7 updates -- code + UI. Thanks to jdub and Patrick F.
2
  Contributors: Viper007Bond
3
  Donate link: http://www.viper007bond.com/donate/
4
  Tags: thumbnail, thumbnails
5
+ Requires at least: 2.6
6
+ Tested up to: 2.9
7
  Stable tag: trunk
8
 
9
+ Allows you to regenerate all thumbnails after changing the thumbnail sizes.
10
 
11
  == Description ==
12
 
13
+ Regenerate Thumbnails allows you to regenerate the thumbnails for all of your image attachments. This is very handy if you've changed any of your thumbnail dimensions (via Settings -> Media) after previously uploading images.
14
 
15
  == Installation ==
16
 
22
 
23
  Extract all files from the ZIP file, making sure to keep the file structure intact, and then upload it to `/wp-content/plugins/`.
24
 
 
 
 
 
 
 
 
 
25
  Then just visit your admin area and activate the plugin.
26
 
27
  ###Plugin Usage###
32
 
33
  == ChangeLog ==
34
 
35
+ **Version 2.0.0**
36
+
37
+ * Recoded from scratch. Now uses an AJAX request per attachment to do the resizing. No more PHP maximum execution time errors or anything like that. Also features a pretty progress bar to let the user know how it's going.
38
+
39
  **Version 1.1.0**
40
 
41
  * WordPress 2.7 updates -- code + UI. Thanks to jdub and Patrick F.
regenerate-thumbnails.php CHANGED
@@ -5,7 +5,7 @@
5
  Plugin Name: Regenerate Thumbnails
6
  Plugin URI: http://www.viper007bond.com/wordpress-plugins/regenerate-thumbnails/
7
  Description: Allows you to regenerate all thumbnails after changing the thumbnail sizes.
8
- Version: 1.1.0
9
  Author: Viper007Bond
10
  Author URI: http://www.viper007bond.com/
11
 
@@ -32,26 +32,41 @@ class RegenerateThumbnails {
32
 
33
  // Plugin initialization
34
  function RegenerateThumbnails() {
 
 
 
35
  // Load up the localization file if we're using WordPress in a different language
36
- // Place it in this plugin's folder and name it "regenerate-thumbnails-[value in wp-config].mo"
37
- load_plugin_textdomain( 'regenerate-thumbnails', FALSE, '/regenerate-thumbnails' );
38
 
39
- add_action( 'admin_menu', array(&$this, 'AddAdminMenu') );
 
 
40
  }
41
 
42
 
43
  // Register the management page
44
- function AddAdminMenu() {
45
- add_management_page( __( 'Regenerate Thumbnails', 'regenerate-thumbnails' ), __( 'Regen. Thumbnails', 'regenerate-thumbnails' ), 'manage_options', 'regenerate-thumbnails', array(&$this, 'ManagementPage') );
 
 
 
 
 
 
 
 
 
 
46
  }
47
 
48
 
49
  // The user interface plus thumbnail regenerator
50
- function ManagementPage() { ?>
51
 
52
  <div id="message" class="updated fade" style="display:none"></div>
53
 
54
- <div class="wrap">
55
  <h2><?php _e('Regenerate Thumbnails', 'regenerate-thumbnails'); ?></h2>
56
 
57
  <?php
@@ -63,76 +78,73 @@ class RegenerateThumbnails {
63
  wp_die( __('Cheatin&#8217; uh?') );
64
 
65
  // Form nonce check
66
- check_admin_referer('regenerate-thumbnails');
67
-
68
- // Record start time
69
- $rt_starttime = explode(' ', microtime() );
70
- $rt_starttime = $rt_starttime[1] + $rt_starttime[0];
71
 
72
  // Get all image attachments
73
- $attachments =& get_children( array(
74
  'post_type' => 'attachment',
75
  'post_mime_type' => 'image',
76
  'numberposts' => -1,
77
- 'post_status' => null,
78
  'post_parent' => null, // any parent
79
  'output' => 'object',
80
  ) );
81
 
82
- // Check for results
83
- if ( FALSE === $attachments ) {
84
- echo ' <p>' . __( "No attachments were found. Go upload some!", 'regenerate-thumbnails' ) . "</p>\n\n";
85
  }
86
 
87
- // Valid results, process them
88
  else {
89
- echo ' <p>' . __( "Please be patient while all thumbnails are regenerated. This can take a while if your server is slow (cheap hosting) or if you have many attachments. Do not navigate away from this page until this script is done or all thumbnails won't be resized. You will be notified when all regenerating is completed.", 'regenerate-thumbnails' ) . "</p>\n\n";
90
 
91
- // Find out the path to the upload directory (so we can hide it)
92
- $upload = wp_upload_dir();
93
- $uploadpath = $upload['basedir'];
 
 
94
 
95
- // Output progress so far to browser
96
- $this->flush();
97
 
98
- // Loop through each attachment
99
- $count = 0;
100
- echo " <ol>\n";
101
- foreach ( $attachments as $attachment ) {
102
- $fullsizepath = get_attached_file( $attachment->ID );
103
 
104
- // If the file exists, regenerate thumbnail and update attachment metadata in all one go
105
- if ( FALSE !== $fullsizepath && @file_exists($fullsizepath) ) {
106
- // Start the execution time limit over but only allow 30 seconds for the image to be resized.
107
- // This is a better solution than just doing set_time_limit( 0 ); in my opinion.
108
- set_time_limit( 30 );
109
 
110
- wp_update_attachment_metadata( $attachment->ID, wp_generate_attachment_metadata( $attachment->ID, $fullsizepath ) );
 
 
111
 
112
- echo ' <li>' . str_replace( $uploadpath, '', $fullsizepath ) . " processed.</code></li>\n";
113
- $count++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
115
 
116
- // Output progress so far to browser
117
- $this->flush();
118
- }
119
- echo " </ol>\n\n";
120
-
121
- // Calculate time taken
122
- $rt_endtime = explode(' ', microtime() );
123
- $rt_endtime = $rt_endtime[1] + $rt_endtime[0];
124
- $rt_timetotal = number_format_i18n( $rt_endtime - $rt_starttime, 3 );
125
-
126
- // Output the fallback for no-JS users
127
- echo ' <p><noscript>' . sprintf( __( 'All done! Processed %d attachments in %s seconds.', 'regenerate-thumbnails' ), $count, $rt_timetotal ) . "</noscript></p>\n\n";
128
 
129
- // Output the Javascript to show the success box
130
- ?>
131
- <script type="text/javascript">
132
- // <![CDATA[
133
- jQuery(document).ready(function() {
134
- jQuery("#message").html("<p><strong><?php echo js_escape( sprintf( __( 'All done! Processed %d attachments in %s seconds.', 'regenerate-thumbnails' ), $count, $rt_timetotal ) ); ?></strong></p>");
135
- jQuery("#message").show();
136
  });
137
  // ]]>
138
  </script>
@@ -143,21 +155,19 @@ class RegenerateThumbnails {
143
  // No button click? Display the form.
144
  else {
145
  ?>
146
- <p><?php
147
 
148
- $optionsmisc_url = ( function_exists('admin_url') ) ? admin_url('options-misc.php') : 'options-misc.php';
149
 
150
- printf( __( "After you've changed either of the thumbnail dimensions on the <a href='%s'>miscellaneous settings page</a>, click the button below to regenerate all thumbnails (both the small and medium sizes) for all attachments. The old thumbnails will be kept to avoid any broken images due to hard-coded URLs.", 'regenerate-thumbnails'), $optionsmisc_url );
151
-
152
- ?></p>
153
-
154
- <p><?php _e( "This process is not reversible, although you can just change your thumbnail dimensions to old values and click the button again if you don't like the results.", 'regenerate-thumbnails'); ?></p>
155
 
156
  <form method="post" action="">
157
  <?php wp_nonce_field('regenerate-thumbnails') ?>
158
 
159
 
160
- <p><input type="submit" class="button" name="regenerate-thumbnails" id="regenerate-thumbnails" value="<?php _e( 'Regenerate All Thumbnails', 'regenerate-thumbnails' ) ?>" /></p>
 
 
161
 
162
  </form>
163
  <?php
@@ -169,14 +179,35 @@ class RegenerateThumbnails {
169
  }
170
 
171
 
172
- // Outputs all HTML up to this point to the browser
173
- function flush() {
174
- ob_flush();
175
- flush();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  }
177
  }
178
 
179
- // Start this plugin once all other plugins are fully loaded
180
- add_action( 'plugins_loaded', create_function( '', 'global $RegenerateThumbnails; $RegenerateThumbnails = new RegenerateThumbnails();' ) );
 
 
 
 
181
 
182
  ?>
5
  Plugin Name: Regenerate Thumbnails
6
  Plugin URI: http://www.viper007bond.com/wordpress-plugins/regenerate-thumbnails/
7
  Description: Allows you to regenerate all thumbnails after changing the thumbnail sizes.
8
+ Version: 2.0.0
9
  Author: Viper007Bond
10
  Author URI: http://www.viper007bond.com/
11
 
32
 
33
  // Plugin initialization
34
  function RegenerateThumbnails() {
35
+ if ( !function_exists('admin_url') )
36
+ return false;
37
+
38
  // Load up the localization file if we're using WordPress in a different language
39
+ // Place it in this plugin's "localization" folder and name it "regenerate-thumbnails-[value in wp-config].mo"
40
+ load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );
41
 
42
+ add_action( 'admin_menu', array(&$this, 'add_admin_menu') );
43
+ add_action( 'admin_enqueue_scripts', array(&$this, 'admin_enqueues') );
44
+ add_action( 'wp_ajax_regeneratethumbnail', array(&$this, 'ajax_process_image') );
45
  }
46
 
47
 
48
  // Register the management page
49
+ function add_admin_menu() {
50
+ add_management_page( __( 'Regenerate Thumbnails', 'regenerate-thumbnails' ), __( 'Regen. Thumbnails', 'regenerate-thumbnails' ), 'manage_options', 'regenerate-thumbnails', array(&$this, 'regenerate_interface') );
51
+ }
52
+
53
+
54
+ // Enqueue the needed Javascript and CSS
55
+ function admin_enqueues( $hook_suffix ) {
56
+ if ( 'tools_page_regenerate-thumbnails' != $hook_suffix )
57
+ return;
58
+
59
+ wp_enqueue_script( 'jquery-ui-progressbar', plugins_url( 'jquery-ui/ui.progressbar.js', __FILE__ ), array('jquery-ui-core'), '1.7.2' );
60
+ wp_enqueue_style( 'jquery-ui-regenthumbs', plugins_url( 'jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array(), '1.7.2' );
61
  }
62
 
63
 
64
  // The user interface plus thumbnail regenerator
65
+ function regenerate_interface() { ?>
66
 
67
  <div id="message" class="updated fade" style="display:none"></div>
68
 
69
+ <div class="wrap regenthumbs">
70
  <h2><?php _e('Regenerate Thumbnails', 'regenerate-thumbnails'); ?></h2>
71
 
72
  <?php
78
  wp_die( __('Cheatin&#8217; uh?') );
79
 
80
  // Form nonce check
81
+ //check_admin_referer( 'regenerate-thumbnails' );
 
 
 
 
82
 
83
  // Get all image attachments
84
+ $images =& get_children( array(
85
  'post_type' => 'attachment',
86
  'post_mime_type' => 'image',
87
  'numberposts' => -1,
88
+ 'post_status' => 'inherit',
89
  'post_parent' => null, // any parent
90
  'output' => 'object',
91
  ) );
92
 
93
+ // Make sure there are images to process
94
+ if ( !$images ) {
95
+ echo ' <p>' . sprintf( __( "Unable to find any images. Are you sure <a href='%s'>some exist</a>?", 'regenerate-thumbnails' ), admin_url('upload.php?post_mime_type=image') ) . "</p>\n\n";
96
  }
97
 
98
+ // Valid results
99
  else {
100
+ echo ' <p>' . __( "Please be patient while all thumbnails are regenerated. This can take a while if your server is slow (cheap hosting) or if you have many images. Do not navigate away from this page until this script is done or all thumbnails won't be resized. You will be notified via this page when all regenerating is completed.", 'regenerate-thumbnails' ) . '</p>';
101
 
102
+ // Generate the list of IDs
103
+ $ids = array();
104
+ foreach ( $images as $image )
105
+ $ids[] = $image->ID;
106
+ $ids = implode( ',', $ids );
107
 
108
+ $count = count( $images );
109
+ ?>
110
 
 
 
 
 
 
111
 
112
+ <noscript><p><em><?php _e( 'You must enable Javascript in order to proceed!', 'regenerate-thumbnails' ) ?></em></p></noscript>
 
 
 
 
113
 
114
+ <div id="regenthumbsbar" style="position:relative;height:25px;">
115
+ <div id="regenthumbsbar-percent" style="position:absolute;left:50%;top:50%;width:50px;margin-left:-25px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div>
116
+ </div>
117
 
118
+ <script type="text/javascript">
119
+ // <![CDATA[
120
+ jQuery(document).ready(function($){
121
+ var i;
122
+ var rt_images = [<?php echo $ids; ?>];
123
+ var rt_total = rt_images.length;
124
+ var rt_count = 1;
125
+ var rt_percent = 0;
126
+
127
+ $("#regenthumbsbar").progressbar();
128
+ $("#regenthumbsbar-percent").html( "0%" );
129
+
130
+ function RegenThumbs( id ) {
131
+ $.post( "admin-ajax.php", { action: "regeneratethumbnail", id: id }, function() {
132
+ rt_percent = ( rt_count / rt_total ) * 100;
133
+ $("#regenthumbsbar").progressbar( "value", rt_percent );
134
+ $("#regenthumbsbar-percent").html( Math.round(rt_percent) + "%" );
135
+ rt_count = rt_count + 1;
136
+
137
+ if ( rt_images.length ) {
138
+ RegenThumbs( rt_images.shift() );
139
+ } else {
140
+ $("#message").html("<p><strong><?php echo js_escape( sprintf( __( 'All done! Processed %d images.', 'regenerate-thumbnails' ), $count ) ); ?></strong></p>");
141
+ $("#message").show();
142
  }
143
 
144
+ });
145
+ }
 
 
 
 
 
 
 
 
 
 
146
 
147
+ RegenThumbs( rt_images.shift() );
 
 
 
 
 
 
148
  });
149
  // ]]>
150
  </script>
155
  // No button click? Display the form.
156
  else {
157
  ?>
158
+ <p><?php printf( __( "Use this tool to regenerate thumbnails for all images that you have uploaded to your blog. This is useful if you've changed any of the thumbnail dimensions on the <a href='%s'>media settings page</a>. Old thumbnails will be kept to avoid any broken images due to hard-coded URLs.", 'regenerate-thumbnails'), admin_url('options-media.php') ); ?></p>
159
 
160
+ <p><?php _e( "This process is not reversible, although you can just change your thumbnail dimensions back to the old values and click the button again if you don't like the results.", 'regenerate-thumbnails'); ?></p>
161
 
162
+ <p><?php _e( "To begin, just press the button below.", 'regenerate-thumbnails'); ?></p>
 
 
 
 
163
 
164
  <form method="post" action="">
165
  <?php wp_nonce_field('regenerate-thumbnails') ?>
166
 
167
 
168
+ <p><input type="submit" class="button hide-if-no-js" name="regenerate-thumbnails" id="regenerate-thumbnails" value="<?php _e( 'Regenerate All Thumbnails', 'regenerate-thumbnails' ) ?>" /></p>
169
+
170
+ <noscript><p><em><?php _e( 'You must enable Javascript in order to proceed!', 'regenerate-thumbnails' ) ?></em></p></noscript>
171
 
172
  </form>
173
  <?php
179
  }
180
 
181
 
182
+ // Process a single image ID (this is an AJAX handler)
183
+ function ajax_process_image() {
184
+ if ( !current_user_can( 'manage_options' ) )
185
+ die('-1');
186
+
187
+ $id = (int) $_REQUEST['id'];
188
+
189
+ if ( empty($id) )
190
+ die('-1');
191
+
192
+ $fullsizepath = get_attached_file( $id );
193
+
194
+ if ( false === $fullsizepath || !file_exists($fullsizepath) )
195
+ die('-1');
196
+
197
+ set_time_limit( 60 );
198
+
199
+ if ( wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $fullsizepath ) ) )
200
+ die('1');
201
+ else
202
+ die('-1');
203
  }
204
  }
205
 
206
+ // Start up this plugin
207
+ add_action( 'init', 'RegenerateThumbnails' );
208
+ function RegenerateThumbnails() {
209
+ global $RegenerateThumbnails;
210
+ $RegenerateThumbnails = new RegenerateThumbnails();
211
+ }
212
 
213
  ?>
screenshot-1.png CHANGED
Binary file
screenshot-2.png DELETED
Binary file