[ Index ] |
|
Code source de Serendipity 1.2 |
1 <div class="image_add_form">{$CONST.ADD_MEDIA_BLAHBLAH}</div> 2 3 <script type="text/javascript"> 4 // Function prototype inspired by http://molily.de/javascript-nodelist 5 function showNodes(n) {ldelim} 6 var html; 7 html = '<!--nodeset--><li>'; 8 9 switch (n.nodeType) {ldelim} 10 case 1: 11 html += 'Type is <em>' + n.nodeName + '<\/em>'; 12 if (n.hasChildNodes()) {ldelim} 13 ausgabe += ' - childNodes: ' + n.childNodes.length; 14 {rdelim} 15 break; 16 17 case 3: 18 var nval = n.nodeValue.replace(/</g, '<').replace(/\n/g, '\\n'); 19 html += 'Content: <strong>' + nval + '<\/strong>'; 20 break; 21 22 case 8: 23 var nval = n.nodeValue.replace(/</g, '<').replace(/\n/g, '\\n'); 24 html += 'Hidden: <em>' + nval + '<\/em>'; 25 break; 26 27 default: 28 html += 'Type is ' + n.nodeType + ', Content is <strong>' + n.nodeValue + '<\/strong>'; 29 } 30 31 if (n.hasChildNodes()) {ldelim} 32 html += '\n<ol>\n'; 33 for (i=0; i < n.childNodes.length; i++) {ldelim} 34 j = n.childNodes[i]; 35 html += showNodes(j); 36 {rdelim} 37 html += '</ol>\n'; 38 {rdelim} 39 html += '</li>\n'; 40 41 return html; 42 {rdelim} 43 44 function getfilename(value) {ldelim} 45 re = /^.+[\/\\]+?(.+)$/; 46 return value.replace(re, "$1"); 47 {rdelim} 48 49 isFileUpload = true; 50 function hideForeign() {ldelim} 51 document.getElementById('foreign_upload').style.display = 'none'; 52 document.getElementById('imageurl').value = ''; 53 isFileUpload = false; 54 {rdelim} 55 56 var fieldcount = 1; 57 function addField() {ldelim} 58 fieldcount++; 59 60 fields = document.getElementById('upload_template').cloneNode(true); 61 fields.id = 'upload_form_' + fieldcount; 62 fields.style.display = 'block'; 63 64 // Get the DOM outline be uncommenting this: 65 //document.getElementById('debug').innerHTML = showNodes(fields); 66 67 // garvin: This gets a bit weird. Opera, Mozilla and IE all have their own numbering. 68 // We cannot operate on "ID" basis, since a unique ID is not yet set before instancing. 69 if (fields.childNodes[0].nodeValue == null) {ldelim} 70 // This is Internet Explorer, it does not have a linebreak as first element. 71 userfile = fields.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0]; 72 targetfilename = fields.childNodes[0].childNodes[0].childNodes[2].childNodes[1].childNodes[0]; 73 targetdir = fields.childNodes[0].childNodes[0].childNodes[3].childNodes[1].childNodes[0]; 74 columncount = fields.childNodes[1].childNodes[0]; 75 {rdelim} else {ldelim} 76 // We have a browser which has \n's as their own nodes. Don't ask me. Now let's check if it's Opera or Mozilla. 77 if (fields.childNodes[1].childNodes[0].nodeValue == null) {ldelim} 78 // This is Opera. 79 userfile = fields.childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0]; 80 targetfilename = fields.childNodes[1].childNodes[0].childNodes[2].childNodes[1].childNodes[0]; 81 targetdir = fields.childNodes[1].childNodes[0].childNodes[3].childNodes[1].childNodes[0]; 82 columncount = fields.childNodes[3].childNodes[0]; 83 {rdelim} else if (fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3] == null) {ldelim} 84 // This is Safari. 85 userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[1].childNodes[0]; 86 targetfilename = fields.childNodes[1].childNodes[1].childNodes[2].childNodes[1].childNodes[0]; 87 targetdir = fields.childNodes[1].childNodes[1].childNodes[3].childNodes[1].childNodes[0]; 88 columncount = fields.childNodes[3].childNodes[0]; 89 {rdelim} else {ldelim} 90 // This is Mozilla. 91 userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3].childNodes[0]; 92 targetfilename = fields.childNodes[1].childNodes[1].childNodes[4].childNodes[3].childNodes[0]; 93 targetdir = fields.childNodes[1].childNodes[1].childNodes[6].childNodes[3].childNodes[0]; 94 columncount = fields.childNodes[3].childNodes[0]; 95 {rdelim} 96 {rdelim} 97 98 userfile.id = 'userfile_' + fieldcount; 99 userfile.name = 'serendipity[userfile][' + fieldcount + ']'; 100 101 targetfilename.id = 'target_filename_' + fieldcount; 102 targetfilename.name = 'serendipity[target_filename][' + fieldcount + ']'; 103 104 targetdir.id = 'target_directory_' + fieldcount; 105 targetdir.name = 'serendipity[target_directory][' + fieldcount + ']'; 106 107 columncount.id = 'column_count_' + fieldcount; 108 columncount.name = 'serendipity[column_count][' + fieldcount + ']'; 109 110 iNode = document.getElementById('upload_form'); 111 iNode.parentNode.insertBefore(fields, iNode); 112 113 document.getElementById(targetdir.id).selectedIndex = document.getElementById('target_directory_' + (fieldcount - 1)).selectedIndex; 114 {rdelim} 115 116 var inputStorage = new Array(); 117 function checkInputs() {ldelim} 118 for (i = 1; i <= fieldcount; i++) {ldelim} 119 if (!inputStorage[i]) {ldelim} 120 fillInput(i, i); 121 {rdelim} else if (inputStorage[i] == document.getElementById('target_filename_' + i).value) {ldelim} 122 fillInput(i, i); 123 {rdelim} 124 {rdelim} 125 126 {rdelim} 127 128 function debugFields() {ldelim} 129 for (i = 1; i <= fieldcount; i++) {ldelim} 130 debugField('target_filename_' + i); 131 debugField('userfile_' + i); 132 {rdelim} 133 {rdelim} 134 135 function rememberOptions() {ldelim} 136 td = document.getElementById('target_directory_2'); 137 td_val = td.options[td.selectedIndex].value; 138 SetCookie("addmedia_directory", td_val); 139 {rdelim} 140 141 function debugField(id) {ldelim} 142 alert(id + ': ' + document.getElementById(id).value); 143 {rdelim} 144 145 function fillInput(source, target) {ldelim} 146 useDuplicate = false; 147 148 // First field is a special value for foreign URLs instead of uploaded files 149 if (source == 1 && document.getElementById('imageurl').value != "") {ldelim} 150 sourceval = getfilename(document.getElementById('imageurl').value); 151 useDuplicate = true; 152 {rdelim} else {ldelim} 153 sourceval = getfilename(document.getElementById('userfile_' + source).value); 154 {rdelim} 155 156 if (sourceval.length > 0) {ldelim} 157 document.getElementById('target_filename_' + target).value = sourceval; 158 inputStorage[target] = sourceval; 159 {rdelim} 160 161 // Display filename in duplicate form as well! 162 if (useDuplicate) {ldelim} 163 tkey = target + 1; 164 165 if (!inputStorage[tkey] || inputStorage[tkey] == document.getElementById('target_filename_' + tkey).value) {ldelim} 166 document.getElementById('target_filename_' + (target+1)).value = sourceval; 167 inputStorage[target + 1] = '~~~'; 168 {rdelim} 169 {rdelim} 170 {rdelim} 171 </script> 172 173 <form action="?" method="POST" id="uploadform" enctype="multipart/form-data" onsubmit="rememberOptions()"> 174 <div> 175 {if $media.max_file_size} 176 <input type="hidden" name="MAX_FILE_SIZE" value="{$max_file_size}" /> 177 {/if} 178 {$media.token} 179 <input type="hidden" name="serendipity[action]" value="admin" /> 180 <input type="hidden" name="serendipity[adminModule]" value="images" /> 181 <input type="hidden" name="serendipity[adminAction]" value="add" /> 182 {$media.form_hidden} 183 <table id="foreign_upload" class="image_add_foreign"> 184 <tr> 185 <td nowrap="nowrap">{$CONST.ENTER_MEDIA_URL}</td> 186 <td><input class="input_textbox" type="text" id="imageurl" name="serendipity[imageurl]" 187 onchange="checkInputs()" 188 value="" 189 size="40" /></td> 190 </tr> 191 <tr> 192 <td nowrap="nowrap">{$CONST.ENTER_MEDIA_URL_METHOD}</td> 193 <td> 194 <select name="serendipity[imageimporttype]"> 195 <option value="image">{$CONST.FETCH_METHOD_IMAGE}</option> 196 <option value="hotlink">{$CONST.FETCH_METHOD_HOTLINK}</option> 197 </select> 198 </td> 199 </tr> 200 201 <tr> 202 <td align="center" colspan="2"><b> - {$CONST.WORD_OR} - </b></td> 203 </tr> 204 </table> 205 206 <!-- WARNING: Do not change spacing or breaks below. If you do, the JavaScript childNodes need to be edited. Newlines count as nodes! --> 207 <div id="upload_template"> 208 <table style="margin-top: 35px" id="upload_table" class="image_add_local"> 209 <tr> 210 <td nowrap='nowrap'>{$CONST.ENTER_MEDIA_UPLOAD}</td> 211 <td><input class="input_file" id="userfile_1" name="serendipity[userfile][1]" 212 onchange="checkInputs();" 213 type="file" /></td> 214 </tr> 215 216 <tr> 217 <td align="center" colspan="2"><br /></td> 218 </tr> 219 220 <tr> 221 <td>{$CONST.SAVE_FILE_AS}</td> 222 <td><input class="input_textbox" type="text" id="target_filename_1" name="serendipity[target_filename][1]" value="" size="40" /></td> 223 </tr> 224 225 <tr> 226 <td>{$CONST.STORE_IN_DIRECTORY}</td> 227 <td><select id="target_directory_1" name="serendipity[target_directory][1]"> 228 <option value="">{$CONST.BASE_DIRECTORY}</option> 229 {foreach from=$media.folders item="folder"} 230 <option {if $media.only_path == $folder.relpath}selected="selected"{/if} value="{$folder.relpath}">{' '|@str_repeat:$folder.depth*2} {$folder.name}</option> 231 {/foreach} 232 </select> 233 </td> 234 </tr> 235 </table> 236 <div id="ccounter"><input type="hidden" name="serendipity[column_count][1]" id="column_count_1" value="true" /></div> 237 </div> 238 239 <div id="debug"> 240 </div> 241 242 <script type="text/javascript"> 243 document.getElementById('upload_template').style.display = 'none'; 244 document.write('<span id="upload_form"><' + '/span>'); 245 addField(); 246 </script> 247 248 {serendipity_hookPlugin hook="backend_image_addform" hookAll=true} 249 250 <div style="text-align: center; margin-top: 15px; margin-bottom: 15px"> 251 <script type="text/javascript"> 252 document.write('<input class="serendipityPrettyButton input_button" type="button" value="{$CONST.IMAGE_MORE_INPUT}" onclick="hideForeign(); addField()"' + '/><br' + '/>'); 253 </script> 254 <input type="hidden" name="serendipity[all_authors]" value="true" checked="checked" id="all_authors" /> 255 <br /> 256 <input onclick="checkInputs();" type="submit" value="{$CONST.GO}" class="serendipityPrettyButton input_button" /> 257 - {$CONST.WORD_OR} - 258 <input onclick="checkInputs();" name="go_properties" type="submit" value="{$CONST.GO_ADD_PROPERTIES|@escape}" class="serendipityPrettyButton input_button" /> 259 </div> 260 </div> 261 <div class="image_add_note">{$CONST.ADD_MEDIA_BLAHBLAH_NOTE}</div> 262 </form> 263
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Nov 24 09:00:37 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |