mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-28 23:03:25 +09:00
Enhanced filebox to add multiple attributes per image and also improved the filebox controlled used for widgets to add multiple images at the same time if you set the parameter allow_multiple=Y
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9929 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
c424fdbceb
commit
41a5b57344
11 changed files with 305 additions and 59 deletions
|
|
@ -182,7 +182,8 @@ function doFillWidgetVars() {
|
|||
jQuery('.filebox')
|
||||
.each(function(){
|
||||
var $this = jQuery(this);
|
||||
var src = $this.siblings('input').eq(0).val();
|
||||
var src = $this.siblings('input').eq(0).val().split(',');
|
||||
|
||||
if (src) $this.trigger('filebox.selected', [src]);
|
||||
})
|
||||
}
|
||||
|
|
@ -206,13 +207,47 @@ jQuery(document).ready(function($){
|
|||
return this.nodeName.toLowerCase() != 'input';
|
||||
})
|
||||
.remove();
|
||||
var htmlCode = "";
|
||||
if(src instanceof Object ) {
|
||||
for(var i=0;i<src.length;i++){
|
||||
if(src[i].id) {
|
||||
htmlCode += '<img src="'+src[i].id+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px; max-width: 200px;"><button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>';
|
||||
if(i==0) $(this).siblings('input').val(src[i].id);
|
||||
else {
|
||||
var aux = $(this).siblings('input').val();
|
||||
$(this).siblings('input').val(aux+","+src[i].id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(src[i]){
|
||||
htmlCode += '<img src="'+src[i]+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px; max-width: 200px;"><button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>';
|
||||
if(i==0) $(this).siblings('input').val(src[i]);
|
||||
else {
|
||||
var aux = $(this).siblings('input').val();
|
||||
$(this).siblings('input').val(aux+","+src[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
htmlCode = '<img src="'+src+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px; max-width: 200px;"> <button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>';
|
||||
$(this).siblings('input').val(src);
|
||||
}
|
||||
$(this).before(htmlCode);
|
||||
|
||||
$(this).before('<img src="'+src+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px; max-width: 200px;"> <button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>');
|
||||
|
||||
$(this).siblings('input').val(src);
|
||||
|
||||
|
||||
$('.filebox_del').bind('click', function(){
|
||||
$(this).siblings('input').val('');
|
||||
var filename = $(this).prev('img').attr("src");
|
||||
var files = $(this).siblings('input').val().split(",");
|
||||
var newInput = "";
|
||||
for(var i=0;i<files.length;i++){
|
||||
if(files[i] != filename) {
|
||||
if(!newInput.length) newInput = files[i];
|
||||
else newInput += ","+files[i];
|
||||
}
|
||||
}
|
||||
$(this).siblings('input').val(newInput);
|
||||
$(this).prev('img').remove();
|
||||
$(this).remove();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,8 +1,4 @@
|
|||
<block cond="$use_filebox">
|
||||
<script type="text/javascript">
|
||||
xe.lang.cmd_delete = '{$lang->cmd_delete}';
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
.filebox_item { border: 1px solid #ccc!important; padding: 5px; max-height: 200px; max-width: 200px; }
|
||||
</style>
|
||||
|
|
@ -16,20 +12,92 @@
|
|||
<input type="hidden" name="module" value="module" />
|
||||
<input type="hidden" name="act" value="procModuleFileBoxAdd" />
|
||||
<input type="hidden" name="ajax" value="true" />
|
||||
<ul>
|
||||
<li>
|
||||
<p class="q"><label for="comment">{$lang->description}</label></p>
|
||||
<p class="a"><input type="text" name="comment" id="comment" value="" /></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="addfile">{$lang->file}</label></p>
|
||||
<p class="a"><input type="file" name="addfile" id="addfile" /></p>
|
||||
</li>
|
||||
</ul>
|
||||
<table cellspacing="0" id="attributes">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="attribute_name1">{$lang->attribute_name} </label><input type="text" name="attribute_name1" id="attribute_name1" />
|
||||
</td>
|
||||
<td>
|
||||
<label for="attribute_value1">{$lang->attribute_value} </label><input type="text" name="attribute_value1" id="attribute_value1" />
|
||||
</td>
|
||||
<td><a href="javascript:addRow('attributes')">{$lang->add}</a></td>
|
||||
<td><a href="javascript:clearRow('attributes',1)">{$lang->delete}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="file">{$lang->file}</label><input type="file" name="addfile" id="file"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="btnArea">
|
||||
<span class="btn small"><input type="submit" value="{$lang->cmd_submit}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
xe.lang.cmd_delete = '{$lang->cmd_delete}';
|
||||
function addRow(tableID){
|
||||
|
||||
var table = document.getElementById(tableID);
|
||||
var rowCount = table.rows.length;
|
||||
var initial = table.rows(0);
|
||||
var text1 = initial.cells(0).children(0).innerHTML;
|
||||
var text2 = initial.cells(1).children(0).innerHTML;
|
||||
var addrow = table.rows(rowCount-2).cells(2).children(0);
|
||||
var deleteLink = table.rows(rowCount-2).cells(3).children(0).cloneNode(true);
|
||||
var row = table.insertRow(rowCount-1);
|
||||
|
||||
//cell for attribute name
|
||||
var cell0= row.insertCell(0)
|
||||
var element0 = document.createElement("label");
|
||||
element0.innerHTML = text1;
|
||||
element0.htmlFor = "attribute_name"+rowCount;
|
||||
cell0.appendChild(element0);
|
||||
var element1 = document.createElement("input");
|
||||
element1.type = "text";
|
||||
element1.name="attribute_name"+rowCount;
|
||||
element1.id="attribute_name"+rowCount;
|
||||
cell0.appendChild(element1);
|
||||
|
||||
//cell for attribute value
|
||||
var cell1 = row.insertCell(1);
|
||||
var element2 = document.createElement("label");
|
||||
element2.innerHTML = text2;
|
||||
element2.htmlFor = "attribute_value"+rowCount;
|
||||
cell1.appendChild(element2);
|
||||
var element3 = document.createElement("input");
|
||||
element3.type = "text";
|
||||
element3.id="attribute_value"+rowCount;
|
||||
element3.name="attribute_value"+rowCount;
|
||||
cell1.appendChild(element3);
|
||||
|
||||
//cell for addrow link
|
||||
var cell2 = row.insertCell(2);
|
||||
cell2.appendChild(addrow);
|
||||
|
||||
//cell for delete link
|
||||
var cell3 = row.insertCell(3);
|
||||
deleteLink.href = "javascript:clearRow('attributes',"+rowCount+")";
|
||||
cell3.appendChild(deleteLink);
|
||||
}
|
||||
|
||||
function clearRow(tableID,rowNumber){
|
||||
var table = document.getElementById(tableID);
|
||||
var text = "attribute_name"+rowNumber;
|
||||
var rowCount = table.rows.length;
|
||||
var sw = 0;
|
||||
for(i=0;i<rowCount-2;i++){
|
||||
if(table.rows(i).cells[0].children(1).id == text) {
|
||||
table.deleteRow(i);
|
||||
sw = 1;
|
||||
}
|
||||
}
|
||||
if(!sw){
|
||||
var addrow = table.rows(rowCount-2).cells(2).children(0);
|
||||
table.rows(rowCount-3).cells(2).appendChild(addrow);
|
||||
table.deleteRow(rowCount-2);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</block>
|
||||
|
|
@ -228,6 +228,7 @@
|
|||
$name = $var->name->body?$var->name->body:$var->title->body;
|
||||
$type = $var->attrs->type?$var->attrs->type:$var->type->body;
|
||||
if($type =='filebox') $buff .= sprintf('$widget_info->extra_var->%s->filter = "%s";', $id, $var->type->attrs->filter);
|
||||
if($type =='filebox') $buff .= sprintf('$widget_info->extra_var->%s->allow_multiple = "%s";', $id, $var->type->attrs->allow_multiple);
|
||||
|
||||
$buff .= sprintf('$widget_info->extra_var->%s->group = "%s";', $id, $group->title->body);
|
||||
$buff .= sprintf('$widget_info->extra_var->%s->name = "%s";', $id, $name);
|
||||
|
|
@ -374,6 +375,7 @@
|
|||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->name = "%s";', $id, $name);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->type = "%s";', $id, $type);
|
||||
if($type =='filebox') $buff .= sprintf('$widgetStyle_info->extra_var->%s->filter = "%s";', $id, $var->attrs->filter);
|
||||
if($type =='filebox') $buff .= sprintf('$widgetStyle_info->extra_var->%s->allow_multiple = "%s";', $id, $var->attrs->allow_multiple);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->value = $vars->%s;', $id, $id);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->description = "%s";', $id, str_replace('"','\"',$var->description->body));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue