universal_table/app/views/admin/universal_tables/_table_form.html.erb

124 lines
4.1 KiB
Plaintext

<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "universal_table/universal-table" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "universal_table/jquery-ui.min" %>
<% end %>
<fieldset class="utable-heading-wrap">
<div class="utable-heading-header">
<h4>Table name</h4>
</div>
<div class="control-group">
<div class="controls">
<div class="input-append">
<div class="tab-content">
<% @site_in_use_locales.each do |locale| %>
<% active = (locale == @site_in_use_locales.first ? "active in" : "") %>
<div class="tab-pane fade <%= active %>" id="table_name_<%= locale.to_s %>">
<%= f.fields_for :title_translations do |f| %>
<%= f.text_field locale, :placeholder => "Title", :value => @table.title_translations[locale] %>
<% end %>
</div>
<% end %>
</div>
<div class="btn-group" data-toggle="buttons-radio">
<% @site_in_use_locales.each do |locale| %>
<% active = (locale == @site_in_use_locales.first ? "active" : "") %>
<%= link_to t(locale).to_s,"#table_name_#{locale.to_s}",:class=>"btn #{active}",:data=>{:toggle=>"tab"}%>
<% end %>
</div>
</div>
</div>
</div>
</fieldset>
<fieldset class="utable-content">
<div id="attributes-area" class="input-area">
<% @table.table_columns.asc(:order).each_with_index do |table_column, index| %>
<div class="attributes default ">
<%= f.fields_for :table_columns, table_column, :child_index => index.to_s do |f| %>
<%= render :partial => "column", :object => table_column, :locals => {:f => f, :i => index} %>
<%= f.hidden_field :id %>
<% end %>
</div>
<% end %>
</div>
<div class="form-actions">
<button type="button" class="btn btn-success add-attributes"><%= t("universal_table.add_column") %></button>
<input class="btn btn-primary" name="commit" type="submit" value="<%= t("save") %>">
</div>
</fieldset>
<script type="text/javascript">
var columnArea = $("#attributes-area"),
totalColumns = columnArea.find(".attributes.default").length,
columnCounter = totalColumns;
$("button.add-attributes").on("click",function(){
var html = "<%= escape_javascript(add_attribute 'column', f, :table_columns) %>",
replaceReg = new RegExp("new_table_columns","g"),
idNumber = new RegExp("XXX","g");
html = html.replace(replaceReg,columnCounter);
html = html.replace("ColumnXX", "Column " + (columnCounter + 1));
html = html.replace(idNumber,columnCounter);
columnArea.append(html);
columnCounter++;
})
$(document.body).on("click","a.delete",function(){
if($(this).parent().find(".attribute_field_to_delete").length == 0){
$(this).parent().parent().slideUp(function(){
$(this).remove();
updateOrder();
});
}else{
if(confirm("Are you sure?")){
$(this).parent().parent().slideUp(function(){
updateOrder();
});
$(this).parent().find(".attribute_field_to_delete").val("true");
}
}
return false;
})
$(document.body).on("change","select.type-selector",function(){
var el = $(this),
label = el.parent().find("span.link_to_show");
if(el.val() == "text"){
label.removeClass("hide");
}else{
label.addClass("hide");
label.find("input[type=checkbox]").prop("checked",false);
}
label = el.parent().find("label.date_format");
if(el.val() == "date" || el.val() == "period"){
label.removeClass("hide");
}else{
label.addClass("hide");
}
})
$("#attributes-area").sortable({
update: function( event, ui ) {
updateOrder();
}
});
var updateOrder = function(){
var attributes = $("#attributes-area").find(".attributes:visible");
attributes.each(function(i){
$(this).find("input.order-hidden-field").val(i);
})
}
</script>