PluginProbe
Wp-Insert / 1.7.3
Wp-Insert v1.7.3
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / includes / postpicker.php

postpicker.php in Wp-Insert 1.7.3, at includes/postpicker.php

272 lines 8.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <style type="text/css">
2 .multipleSelectBoxControl span{ /* Labels above select boxes*/
3 font-family:arial;
4 font-size:11px;
5 font-weight:bold;
6 }
7 .multipleSelectBoxControl div select{ /* Select box layout */
8 font-family:arial;
9 height:100%;
10 }
11 .multipleSelectBoxControl input{ /* Small butons */
12 width:25px;
13 }
14
15 .multipleSelectBoxControl div{
16 float:left;
17 }
18 </style>
19 <script type="text/javascript">
20
21 var fromBoxArray = new Array();
22 var toBoxArray = new Array();
23 var selectBoxIndex = 0;
24 var arrayOfItemsToSelect = new Array();
25
26 function moveSingleElement()
27 {
28 var selectBoxIndex = this.parentNode.parentNode.id.replace(/[^\d]/g,'');
29 var tmpFromBox;
30 var tmpToBox;
31 if(this.tagName.toLowerCase()=='select'){
32 tmpFromBox = this;
33 if(tmpFromBox==fromBoxArray[selectBoxIndex])tmpToBox = toBoxArray[selectBoxIndex]; else tmpToBox = fromBoxArray[selectBoxIndex];
34 }else{
35
36 if(this.value.indexOf('>')>=0){
37 tmpFromBox = fromBoxArray[selectBoxIndex];
38 tmpToBox = toBoxArray[selectBoxIndex];
39 }else{
40 tmpFromBox = toBoxArray[selectBoxIndex];
41 tmpToBox = fromBoxArray[selectBoxIndex];
42 }
43 }
44
45 for(var no=0;no<tmpFromBox.options.length;no++){
46 if(tmpFromBox.options[no].selected){
47 tmpFromBox.options[no].selected = false;
48 tmpToBox.options[tmpToBox.options.length] = new Option(tmpFromBox.options[no].text,tmpFromBox.options[no].value);
49
50 for(var no2=no;no2<(tmpFromBox.options.length-1);no2++){
51 tmpFromBox.options[no2].value = tmpFromBox.options[no2+1].value;
52 tmpFromBox.options[no2].text = tmpFromBox.options[no2+1].text;
53 tmpFromBox.options[no2].selected = tmpFromBox.options[no2+1].selected;
54 }
55 no = no -1;
56 tmpFromBox.options.length = tmpFromBox.options.length-1;
57
58 }
59 }
60
61
62 var tmpTextArray = new Array();
63 for(var no=0;no<tmpFromBox.options.length;no++){
64 tmpTextArray.push(tmpFromBox.options[no].text + '___' + tmpFromBox.options[no].value);
65 }
66 tmpTextArray.sort();
67 var tmpTextArray2 = new Array();
68 for(var no=0;no<tmpToBox.options.length;no++){
69 tmpTextArray2.push(tmpToBox.options[no].text + '___' + tmpToBox.options[no].value);
70 }
71 tmpTextArray2.sort();
72
73 for(var no=0;no<tmpTextArray.length;no++){
74 var items = tmpTextArray[no].split('___');
75 tmpFromBox.options[no] = new Option(items[0],items[1]);
76
77 }
78
79 for(var no=0;no<tmpTextArray2.length;no++){
80 var items = tmpTextArray2[no].split('___');
81 tmpToBox.options[no] = new Option(items[0],items[1]);
82 }
83 }
84
85 function sortAllElement(boxRef)
86 {
87 var tmpTextArray2 = new Array();
88 for(var no=0;no<boxRef.options.length;no++){
89 tmpTextArray2.push(boxRef.options[no].text + '___' + boxRef.options[no].value);
90 }
91 tmpTextArray2.sort();
92 for(var no=0;no<tmpTextArray2.length;no++){
93 var items = tmpTextArray2[no].split('___');
94 boxRef.options[no] = new Option(items[0],items[1]);
95 }
96
97 }
98 function moveAllElements()
99 {
100 var selectBoxIndex = this.parentNode.parentNode.id.replace(/[^\d]/g,'');
101 var tmpFromBox;
102 var tmpToBox;
103 if(this.value.indexOf('>')>=0){
104 tmpFromBox = fromBoxArray[selectBoxIndex];
105 tmpToBox = toBoxArray[selectBoxIndex];
106 }else{
107 tmpFromBox = toBoxArray[selectBoxIndex];
108 tmpToBox = fromBoxArray[selectBoxIndex];
109 }
110
111 for(var no=0;no<tmpFromBox.options.length;no++){
112 tmpToBox.options[tmpToBox.options.length] = new Option(tmpFromBox.options[no].text,tmpFromBox.options[no].value);
113 }
114
115 tmpFromBox.options.length=0;
116 sortAllElement(tmpToBox);
117
118 }
119
120
121 function createMovableOptions(fromBox,toBox,totalWidth,totalHeight,labelLeft,labelRight)
122 {
123 fromObj = document.getElementById(fromBox);
124 toObj = document.getElementById(toBox);
125
126 arrayOfItemsToSelect[arrayOfItemsToSelect.length] = toObj;
127
128
129 fromObj.ondblclick = moveSingleElement;
130 toObj.ondblclick = moveSingleElement;
131
132
133 fromBoxArray.push(fromObj);
134 toBoxArray.push(toObj);
135
136 var parentEl = fromObj.parentNode;
137
138 var parentDiv = document.createElement('DIV');
139 parentDiv.className='multipleSelectBoxControl';
140 parentDiv.id = 'selectBoxGroup' + selectBoxIndex;
141 parentDiv.style.width = totalWidth + 'px';
142 parentDiv.style.height = totalHeight + 'px';
143 parentEl.insertBefore(parentDiv,fromObj);
144
145
146 var subDiv = document.createElement('DIV');
147 subDiv.style.width = (Math.floor(totalWidth/2) - 15) + 'px';
148 fromObj.style.width = (Math.floor(totalWidth/2) - 15) + 'px';
149
150 var label = document.createElement('SPAN');
151 label.innerHTML = labelLeft;
152 subDiv.appendChild(label);
153
154 subDiv.appendChild(fromObj);
155 subDiv.className = 'multipleSelectBoxDiv';
156 parentDiv.appendChild(subDiv);
157
158
159 var buttonDiv = document.createElement('DIV');
160 buttonDiv.style.verticalAlign = 'middle';
161 buttonDiv.style.paddingTop = (totalHeight/2) - 50 + 'px';
162 buttonDiv.style.width = '30px';
163 buttonDiv.style.textAlign = 'center';
164 parentDiv.appendChild(buttonDiv);
165
166 var buttonRight = document.createElement('INPUT');
167 buttonRight.type='button';
168 buttonRight.value = '>';
169 buttonDiv.appendChild(buttonRight);
170 buttonRight.onclick = moveSingleElement;
171
172 var buttonAllRight = document.createElement('INPUT');
173 buttonAllRight.type='button';
174 buttonAllRight.value = '>>';
175 buttonAllRight.onclick = moveAllElements;
176 buttonDiv.appendChild(buttonAllRight);
177
178 var buttonLeft = document.createElement('INPUT');
179 buttonLeft.style.marginTop='10px';
180 buttonLeft.type='button';
181 buttonLeft.value = '<';
182 buttonLeft.onclick = moveSingleElement;
183 buttonDiv.appendChild(buttonLeft);
184
185 var buttonAllLeft = document.createElement('INPUT');
186 buttonAllLeft.type='button';
187 buttonAllLeft.value = '<<';
188 buttonAllLeft.onclick = moveAllElements;
189 buttonDiv.appendChild(buttonAllLeft);
190
191 var subDiv = document.createElement('DIV');
192 subDiv.style.width = (Math.floor(totalWidth/2) - 15) + 'px';
193 toObj.style.width = (Math.floor(totalWidth/2) - 15) + 'px';
194
195 var label = document.createElement('SPAN');
196 label.innerHTML = labelRight;
197 subDiv.appendChild(label);
198
199 subDiv.appendChild(toObj);
200 parentDiv.appendChild(subDiv);
201
202 toObj.style.height = (totalHeight - label.offsetHeight) + 'px';
203 fromObj.style.height = (totalHeight - label.offsetHeight) + 'px';
204
205
206 selectBoxIndex++;
207
208 }
209
210 function SavePostPicker(sender) {
211 var count = 0;
212 var value = '';
213 var list = document.getElementById('toBox');
214 for(var i = 0; i < list.options.length; ++i) {
215 if(count > 0) { value += ',' + list.options[i].value; }
216 else { value += list.options[i].value; }
217 count++;
218 }
219 document.getElementById(sender).value = value;
220
221 ClosePopup();
222 }
223
224 function ShowPostPicker(sender) {
225 sender = document.getElementById(sender);
226 GreyOutScreen();
227 divPopup = CreatePopUp("Select Posts/Pages", 525, 390, YPos(sender) - 375, XPos(sender) + 150);
228
229 <?php
230 $count = 0;
231 //Change 100 below to a bigger number if you want to show more posts/pages in the post picker. May cause the server to run out of memory if number of posts/pages is to high.
232 $pages = get_pages('numberposts=100&sort_column=menu_order');
233 $posts = get_posts('numberposts=100&sort_column=desc');
234 $allposts = "<select multiple name='fromBox' id='fromBox'>";
235 $selectedposts = "<select multiple name='toBox' id='toBox'></select>";
236 foreach($pages as $page) {
237 if($count < 100) {
238 $allposts .= "<option value='".$page->ID."'>".htmlspecialchars($page->post_title)."</option>";
239 }
240 $count++;
241 }
242 foreach($posts as $post) {
243 if($count < 100) {
244 $allposts .= "<option value='".$post->ID."'>".htmlspecialchars($post->post_title)."</option>";
245 }
246 $count++;
247 }
248 $allposts .= "</select>";
249 echo 'divPopup.innerHTML = "'.$allposts.$selectedposts.'";';
250 ?>
251 divPopup.innerHTML += "<p class='submit'><input class='button-primary' type='button' value='OK' style='float:right;' onclick='SavePostPicker(\"" + sender.id + "\")' /></p>";
252 createMovableOptions('fromBox','toBox',500,300,'All Posts/Pages','Selected Posts/Pages');
253 for(var counter = 0; counter < 1000; counter++) { void(0); }
254 SelectedPosts = sender.value.split(",");
255 for (var counter = 0; counter < SelectedPosts.length; counter++) {
256 var list = document.getElementById('fromBox');
257 for(var i = 0; i < list.options.length; ++i) {
258 if(list.options[i].value == SelectedPosts[counter]) {
259 var toBox = document.createElement('option');
260 toBox.value = SelectedPosts[counter];
261 toBox.innerHTML = moveAllElements;
262 toBox.innerHTML = list.options[i].innerHTML;
263 document.getElementById("toBox").appendChild(toBox);
264 break;
265 }
266 }
267 }
268 document.getElementById('fromBox').focus();
269 return false;
270 }
271 </script>
272