Add default_time_settings feature.
This commit is contained in:
parent
a6caffd67f
commit
74881746ab
|
@ -131,8 +131,27 @@ class Admin::PropertyHiresController < OrbitAdminController
|
|||
@settings = PropertyHireSetting.first
|
||||
end
|
||||
if request.request_method == "PATCH"
|
||||
@settings.update_attributes(settings_params)
|
||||
@settings.update_attributes(settings_params.except("property_day_settings"))
|
||||
@settings.save
|
||||
if settings_params["property_day_settings"]
|
||||
property_day_settings = settings_params["property_day_settings"].values
|
||||
property_day_settings.each do |setting|
|
||||
setting["property_id"] = "default_settings"
|
||||
s = nil
|
||||
if setting["id"].present?
|
||||
s = PropertyDaySetting.where(:id=>setting["id"]).first
|
||||
end
|
||||
if s
|
||||
if setting["_destroy"] == "1"
|
||||
s.destroy
|
||||
else
|
||||
s.update_attributes(setting.except("id","_destroy"))
|
||||
end
|
||||
else
|
||||
s = PropertyDaySetting.create(setting.except("id","_destroy"))
|
||||
end
|
||||
end
|
||||
end
|
||||
@saved = true
|
||||
else
|
||||
@saved = false
|
||||
|
|
|
@ -14,4 +14,7 @@ class PropertyHireSetting
|
|||
after_save do
|
||||
Property.init_class_variables
|
||||
end
|
||||
def default_time_settings
|
||||
PropertyDaySetting.where(:property_id=>"default_settings").asc(:key)
|
||||
end
|
||||
end
|
|
@ -60,6 +60,9 @@
|
|||
.card-header h4 {
|
||||
margin: 0;
|
||||
}
|
||||
.apply_default_time_settings{
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
</style>
|
||||
<% content_for :page_specific_css do %>
|
||||
<%= stylesheet_link_tag "lib/main-forms" %>
|
||||
|
@ -438,6 +441,9 @@
|
|||
</div>
|
||||
<div class="collapse" id="<%=weekday%>_setting">
|
||||
<div class="card card-body">
|
||||
<div>
|
||||
<button type="button" class="btn btn-primary apply_default_time_settings pull-right" data-target="#add_target_weekday_<%=i%>" data-count="0" data-day="<%=i%>"><%=t("property_hire.apply_default_time_settings")%></button>
|
||||
</div>
|
||||
<div id="add_target_weekday_<%=i%>">
|
||||
<% if all_day_settings[i.to_s] %>
|
||||
<% all_day_settings[i.to_s].each_with_index do |setting,j| %>
|
||||
|
@ -765,9 +771,59 @@
|
|||
}
|
||||
})
|
||||
var setting_count = <%=setting_count%>;
|
||||
var default_time_settings = <%= PropertyHireSetting.first.default_time_settings.map{|s| s.attributes.except("_id","created_at","updated_at")}.to_s.gsub("=>",": ").html_safe rescue "[]" %>
|
||||
$(".apply_default_time_settings").click(function(){
|
||||
var target = $($(this).data("target"));
|
||||
var key = $(this).data("count");
|
||||
var day = $(this).data("day");
|
||||
var new_key = $(this).prev().attr('value');
|
||||
var old_key = new RegExp("new_key", "g");
|
||||
var new_day = day;
|
||||
var old_day = new RegExp("new_day", "g");
|
||||
var new_key = key;
|
||||
target.empty();
|
||||
default_time_settings.forEach(function(setting){
|
||||
var old_index = new RegExp("new_index", "g");
|
||||
var new_index = setting_count;
|
||||
setting_count += 1;
|
||||
<% property_day_setting = f.object.property_day_settings.new(:id=>nil) %>
|
||||
<%= f.fields_for :property_day_settings,property_day_setting,:child_index => "new_index" do |f| %>
|
||||
var template_html = "<%= escape_javascript(render(:partial=>"time_form",:locals=>{:f=>f})) %>";
|
||||
<%end%>
|
||||
var tmp = $(template_html.replace(old_index,new_index).replace(old_key,new_key).replace(old_day,new_day));
|
||||
Object.keys(setting).forEach(function(k){
|
||||
if(tmp.find("[name*='["+k+"]'").length != 0){
|
||||
tmp.find("[name*='["+k+"]']").val(setting[k]);
|
||||
console.log([k,setting[k]])
|
||||
}
|
||||
});
|
||||
target.append(tmp);
|
||||
key += 1;
|
||||
})
|
||||
$(this).data("count",key);
|
||||
target.find("input[data-format]").each(function(i,input){
|
||||
var $input = $(input);
|
||||
var format = $input.data("format"),
|
||||
timeOnly = !(format.match(/Y|M|d/)), timeFormat, dateFormat = "";
|
||||
if(timeOnly){
|
||||
timeFormat = format;
|
||||
}else{
|
||||
dateFormat = format.match(/yy(\/|-|)(mm|)(\/|-|)(dd|)/i)[0];
|
||||
timeFormat = $.trim(format.replace(dateFormat,""));
|
||||
}
|
||||
var options = {dateFormat: dateFormat,timeFormat: timeFormat,timeOnly: timeOnly};
|
||||
var additionalOptions = $input.data();
|
||||
$.extend(options, additionalOptions);
|
||||
$input.ui_datetimepicker(options);
|
||||
$input.siblings('.clearDate').click(function(){
|
||||
$input.val('');
|
||||
$input.trigger('change');
|
||||
});
|
||||
})
|
||||
})
|
||||
$(".add_weekday_setting").click(function(){
|
||||
var target = $($(this).data("target"));
|
||||
var key = $(this).data("key");
|
||||
var key = $(this).data("count");
|
||||
var day = $(this).data("day");
|
||||
var new_key = $(this).prev().attr('value');
|
||||
var old_key = new RegExp("new_key", "g");
|
||||
|
@ -775,7 +831,7 @@
|
|||
var old_day = new RegExp("new_day", "g");
|
||||
var new_key = key;
|
||||
key += 1;
|
||||
$(this).data("key",key);
|
||||
$(this).data("count",key);
|
||||
var old_index = new RegExp("new_index", "g");
|
||||
var new_index = setting_count;
|
||||
setting_count += 1;
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
<div class="control-group">
|
||||
<%= f.label :start_time, t("property_hire.limit_start_time"), :class => "control-label muted" %>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :start_time, :picker_type => "time", :no_label => true, :new_record => @property.new_record? %>
|
||||
<%= f.datetime_picker :start_time, :picker_type => "time", :no_label => true, :new_record => (@property.new_record? rescue true) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<%= f.label :end_time, t("property_hire.limit_end_time"), :class => "control-label muted" %>
|
||||
<div class="controls">
|
||||
<%= f.datetime_picker :end_time, :picker_type => "time", :no_label => true, :new_record => @property.new_record? %>
|
||||
<%= f.datetime_picker :end_time, :picker_type => "time", :no_label => true, :new_record => (@property.new_record? rescue true) %>
|
||||
</div>
|
||||
</div>
|
||||
<%= f.hidden_field :key, :value => key %>
|
||||
|
|
|
@ -6,6 +6,18 @@
|
|||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "lib/module-area" %>
|
||||
<% end %>
|
||||
<style>
|
||||
.time_setting_form, .image_group{
|
||||
border: 0.2em solid #333;
|
||||
padding-top: 0;
|
||||
}
|
||||
.add-on.iconbtn{
|
||||
display: none;
|
||||
}
|
||||
.time_setting_form:last-child, .image_group:last-child {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
</style>
|
||||
<%= form_for @settings , :url => settings_admin_property_hires_path, html: {class: "form-horizontal main-forms"} do |f| %>
|
||||
<fieldset>
|
||||
<% if @saved %>
|
||||
|
@ -54,11 +66,31 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<%= f.label :carousel_image_width, t("announcement.default_carousel_image_width"), :class => "control-label muted" %>
|
||||
<%= f.label :carousel_image_width, t("property_hire.default_carousel_image_width"), :class => "control-label muted" %>
|
||||
<div class="controls">
|
||||
<%= f.text_field :carousel_image_width %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<%= f.label :default_time_settings, t("property_hire.default_time_settings"), :class => "control-label muted" %>
|
||||
<% default_time_settings = f.object.default_time_settings %>
|
||||
<% setting_count = 0 %>
|
||||
<div class="controls">
|
||||
<div id="default_time_settings">
|
||||
<% if default_time_settings %>
|
||||
<% default_time_settings.each_with_index do |setting,j| %>
|
||||
<%= f.fields_for :property_day_settings do |f| %>
|
||||
<%= f.fields_for setting_count.to_s, setting do |f| %>
|
||||
<%= render :partial => "time_form", :locals=>{:key=>j,:day=>0,:f=>f} %>
|
||||
<% setting_count += 1 %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<a class="btn btn-primary add_weekday_setting" data-target="#default_time_settings" data-count="<%= default_time_settings.count %>" data-day="0"><%=t(:add)%></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,4 +99,59 @@
|
|||
<%= f.submit t('submit'), class: 'btn btn-primary' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<script>
|
||||
var setting_count = <%=setting_count%>;
|
||||
$(".add_weekday_setting").click(function(){
|
||||
var target = $($(this).data("target"));
|
||||
var key = $(this).data("count");
|
||||
var day = $(this).data("day");
|
||||
var new_key = $(this).prev().attr('value');
|
||||
var old_key = new RegExp("new_key", "g");
|
||||
var new_day = day;
|
||||
var old_day = new RegExp("new_day", "g");
|
||||
var new_key = key;
|
||||
key += 1;
|
||||
$(this).data("count",key);
|
||||
var old_index = new RegExp("new_index", "g");
|
||||
var new_index = setting_count;
|
||||
setting_count += 1;
|
||||
<% property_day_setting = PropertyDaySetting.new(:id=>nil,:property_id=>"default_settings") %>
|
||||
<%= f.fields_for :property_day_settings do |f| %>
|
||||
<%= f.fields_for "new_index",property_day_setting do |f| %>
|
||||
var template_html = "<%= escape_javascript(render(:partial=>"time_form",:locals=>{:f=>f})) %>";
|
||||
<%end%>
|
||||
<%end%>
|
||||
var tmp = $(template_html.replace(old_index,new_index).replace(old_key,new_key).replace(old_day,new_day));
|
||||
target.append(tmp);
|
||||
tmp.find("input[data-format]").each(function(i,input){
|
||||
var $input = $(input);
|
||||
var format = $input.data("format"),
|
||||
timeOnly = !(format.match(/Y|M|d/)), timeFormat, dateFormat = "";
|
||||
if(timeOnly){
|
||||
timeFormat = format;
|
||||
}else{
|
||||
dateFormat = format.match(/yy(\/|-|)(mm|)(\/|-|)(dd|)/i)[0];
|
||||
timeFormat = $.trim(format.replace(dateFormat,""));
|
||||
}
|
||||
var options = {dateFormat: dateFormat,timeFormat: timeFormat,timeOnly: timeOnly};
|
||||
var additionalOptions = $input.data();
|
||||
$.extend(options, additionalOptions);
|
||||
$input.ui_datetimepicker(options);
|
||||
$input.siblings('.clearDate').click(function(){
|
||||
$input.val('');
|
||||
$input.trigger('change');
|
||||
});
|
||||
})
|
||||
})
|
||||
$(document).on('click', '.setting-form-remove', function(){
|
||||
if($(this).find(".remove_existing_record").length != 0){
|
||||
if(confirm("<%= I18n.t(:sure?)%>")){
|
||||
$(this).find('.should_destroy').attr('value', 1);
|
||||
$(this).parents('.time_setting_form').hide();
|
||||
}
|
||||
}else{
|
||||
$(this).parents('.time_setting_form').remove();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
|
@ -5,6 +5,8 @@ en:
|
|||
restful_actions:
|
||||
fields_display_order: "Fields display order"
|
||||
property_hire:
|
||||
apply_default_time_settings: Apply default time settings
|
||||
default_time_settings: Default time settings
|
||||
the_reservation_was_successfully_sent: "The reservation was successfully sent!Please see email to get more information"
|
||||
go_to_infos_page: Go to infos page
|
||||
display_in_reason_for_hire: "Display in reason for hire"
|
||||
|
|
|
@ -5,6 +5,8 @@ zh_tw:
|
|||
restful_actions:
|
||||
fields_display_order: "欄位顯示順序"
|
||||
property_hire:
|
||||
apply_default_time_settings: 套用預設時段設定
|
||||
default_time_settings: 預設時段設定
|
||||
the_reservation_was_successfully_sent: "預約成功送出,請查看Email確認預約資訊!"
|
||||
go_to_infos_page: 前往資訊頁面
|
||||
display_in_reason_for_hire: "顯示於使用用途"
|
||||
|
|
Loading…
Reference in New Issue