diff --git a/lib/NGCP/Panel/Controller/TimeSet.pm b/lib/NGCP/Panel/Controller/TimeSet.pm index d8f536d769..a9069bde9f 100644 --- a/lib/NGCP/Panel/Controller/TimeSet.pm +++ b/lib/NGCP/Panel/Controller/TimeSet.pm @@ -153,9 +153,9 @@ sub edit :Chained('base') :PathPart('edit') { calendarfile => $posted ? $upload : undef, }; - my $item = NGCP::Panel::Utils::TimeSet::get_timeset(c => $c, timeset => $c->stash->{timeset_rs}); - $item->{reseller}{id} = delete $params->{reseller_id}; - $item = merge($item, $c->session->{created_objects}); + my $timeset = NGCP::Panel::Utils::TimeSet::get_timeset(c => $c, timeset => $c->stash->{timeset_rs}); + $timeset->{reseller}{id} = delete $timeset->{reseller_id}; + $timeset = merge($timeset, $c->session->{created_objects}); my $form; if($c->user->roles eq "admin") { @@ -166,7 +166,7 @@ sub edit :Chained('base') :PathPart('edit') { $form->process( posted => $posted, params => $params, - item => $item, + item => $timeset, ); NGCP::Panel::Utils::Navigation::check_form_buttons( c => $c, @@ -261,9 +261,9 @@ sub event_list :Chained('base') :PathPart('event') :CaptureArgs(0) { $c->stash->{event_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ { name => 'id', search => 1, title => $c->loc('#') }, - { name => 'time_set_id', search => 1, title => $c->loc('Time Set #') }, + { name => 'time_set_id', 'visible' => 0, 'title' => 'Time Set #' }, { name => 'comment', search => 1, title => $c->loc('Comment') }, - { name => 'periods_ical.rrule_ical', search => 0, accessor => "ical", title => $c->loc('iCal')},#, literal_sql => '""' + { name => 'periods_ical.rrule_ical', search => 0, accessor => "ical", title => $c->loc('Rules')},#, literal_sql => '""' ]); $c->stash(template => 'timeset/event_list.tt'); diff --git a/lib/NGCP/Panel/Form/TimeSet/EventAdvanced.pm b/lib/NGCP/Panel/Form/TimeSet/EventAdvanced.pm index 38a4755f25..ace2b649a4 100644 --- a/lib/NGCP/Panel/Form/TimeSet/EventAdvanced.pm +++ b/lib/NGCP/Panel/Form/TimeSet/EventAdvanced.pm @@ -90,7 +90,7 @@ has_field 'start.time' => ( #dtend has_field 'end' => ( type => 'Compound', - label => 'Event stop ', + label => 'Stop ', do_label => 1, do_wrapper => 1, tags => { @@ -131,7 +131,6 @@ has_field 'end.time' => ( do_wrapper => 1, tags => { inline => 1, - after_element => }, wrapper_class => [qw/ngcp-inline-control ngcp-end-control ngcp-datetimepicker-input/], ); @@ -208,9 +207,10 @@ has_field 'repeat.freq' => ( sub frequency_options { my %values = ('secondly' => 'Second', 'minutely' => 'Minute', 'hourly' => 'Hour', 'daily' => 'Day', 'weekly' => 'Week', 'monthly' => 'Month', 'yearly' => 'Year'); + my @freq_order = qw/daily weekly monthly yearly hourly minutely secondly/; my $options = [ { value => 'no', label => 'None (run once)' }, - map { +{value => $_, label => $values{$_} }; } keys %values + map { +{value => $_, label => $values{$_} }; } @freq_order ]; } @@ -652,7 +652,7 @@ sub custom_set_values { $fif->{repeat}->{freq} = $values->{freq}; $fif->{repeat}->{interval} = $values->{interval}; } else { - $fif->{repeat}->{freq} ne 'no'; + $fif->{repeat}->{freq} = 'no'; } if ($values->{count}) { @@ -670,7 +670,9 @@ sub custom_set_values { my @join_fields = qw/bymonthday byminute byweekno bysecond bymonth byhour/; foreach my $join_field (@join_fields) { - $fif->{$join_field} = [split(/,/, $values->{$join_field})]; + if ($values->{$join_field}) { + $fif->{$join_field} = [split(/,/, $values->{$join_field})]; + } } if ($values->{byday}) { if ($values->{byday} =~ /^(?:(?:MO|TU|WE|TH|FR|SA|SU),?)+$/) {# diff --git a/lib/NGCP/Panel/Utils/TimeSet.pm b/lib/NGCP/Panel/Utils/TimeSet.pm index c9b57d4906..e3fc242f3c 100644 --- a/lib/NGCP/Panel/Utils/TimeSet.pm +++ b/lib/NGCP/Panel/Utils/TimeSet.pm @@ -12,7 +12,10 @@ use constant CALENDAR_MIME_TYPE => 'text/calendar'; sub get_calendar_file_name { my %params = @_; my($c, $timeset) = @params{qw/c timeset/}; - return $timeset->name.'_'.$timeset->id; + my $name = $timeset->name; + #replacement not collapsed intentionally + $name =~s/[^[:alnum:] ]/_/g; + return $name.'_'.$timeset->id; } sub delete_timeset { diff --git a/share/templates/timeset/event_list.tt b/share/templates/timeset/event_list.tt index 8bb36829ac..932166d399 100644 --- a/share/templates/timeset/event_list.tt +++ b/share/templates/timeset/event_list.tt @@ -188,7 +188,7 @@ $( document ).ready(function() { } </style> -[% site_config.title = c.loc('Time Set Event') -%] +[% site_config.title = c.loc('Time set "[_1]" - Events', timeset.name) -%] [% helper.name = c.loc('Time Set Event'); @@ -214,6 +214,7 @@ $( document ).ready(function() { helper.top_buttons = [ { name = c.loc('Create Event'), uri = c.uri_for_action('/timeset/event_create', [c.req.captures.0] ), icon = 'icon-star' }, { name = c.loc('Upload iCalendar events'), uri = c.uri_for_action('/timeset/event_upload',[c.req.captures.0]), icon = 'icon-star' }, + { name = c.loc('Download iCalendar'), uri = c.uri_for_action('/timeset/download', [c.req.captures.0]), icon = 'icon-th-list'}, ]; END; diff --git a/share/templates/timeset/list.tt b/share/templates/timeset/list.tt index 2fde3e680a..13087002c9 100644 --- a/share/templates/timeset/list.tt +++ b/share/templates/timeset/list.tt @@ -15,7 +15,6 @@ UNLESS c.user.read_only; helper.dt_buttons = [ { name = c.loc('Events'), uri = "/timeset/'+full.id+'/event", class = 'btn-small btn-tertiary', icon = 'icon-th-list' }, - { name = c.loc('Download'), uri = "/timeset/'+full.id+'/download", class = 'btn-small btn-primary', icon = 'icon-th-list' }, { name = c.loc('Edit'), uri = "/timeset/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' }, { name = c.loc('Delete'), uri = "/timeset/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' }, ]; diff --git a/share/templates/timeset/switch_end_control.tt b/share/templates/timeset/switch_end_control.tt index bfd49155bc..e4a746b195 100644 --- a/share/templates/timeset/switch_end_control.tt +++ b/share/templates/timeset/switch_end_control.tt @@ -1 +1 @@ -<label id="[%vars.field.full_name%].label" class="control-label" style="width:100px;" data-toggle-on="" data-toggle-off="[%c.loc('Endless event')%]"> </label> <div class="sw_actions pull-right controls"><a id="[%vars.field.full_name%].label.control" class="btn btn-small btn-primary" style="visibility:visible;" href="javascript:toggleEndField('[%vars.field.full_name%]');void(0);" data-toggle-on="[%c.loc('Endless event')%]" data-toggle-off="[%c.loc('Customize..')%]"> </a> </div> \ No newline at end of file +<label id="[%vars.field.full_name%].label" class="control-label" style="width: 0px; margin: 0px; padding: 0px;" data-toggle-on="" data-toggle-off=""> </label> <div class="sw_actions pull-right controls" style="margin-left: 0px; padding-left: 0px;"><a id="[%vars.field.full_name%].label.control" class="btn btn-small btn-primary" style="visibility:visible;" href="javascript:toggleEndField('[%vars.field.full_name%]');void(0);" data-toggle-on="[%c.loc('None')%]" data-toggle-off="[%c.loc('Set')%]"> </a> </div> \ No newline at end of file diff --git a/share/templates/timeset/switch_field_label.tt b/share/templates/timeset/switch_field_label.tt index b31085a4ff..a56bf5d0a2 100644 --- a/share/templates/timeset/switch_field_label.tt +++ b/share/templates/timeset/switch_field_label.tt @@ -1,3 +1,3 @@ <div class="sw_actions pull-right controls" style="width: 120px;"><a id="[%vars.field.full_name%].label" class="btn btn-small btn-primary ngcp-label-field-switch" data-field="[%vars.field.full_name%]" style="visibility:visible;">[%c.loc(vars.field.label)%]</a> </div> -<div class="sw_actions pull-right controls" style="width: 120px;"><a id="invert_field.[%vars.field.full_name%]" class="btn btn-mini btn-secondary" data-field="[%vars.field.full_name%]" style="visibility:visible;">[%c.loc('Invert selection')%]</a> </div> +<div class="sw_actions pull-right controls" style="width: 120px;padding-top: 5px;"><a id="invert_field.[%vars.field.full_name%]" class="btn btn-mini btn-secondary" data-field="[%vars.field.full_name%]" style="visibility:visible;">[%c.loc('Invert selection')%]</a> </div> <div class="sw_actions pull-right controls" style="width: 120px;"><a id="clear_field.[%vars.field.full_name%]" class="btn btn-mini btn-secondary" data-field="[%vars.field.full_name%]" style="visibility:visible;">[%c.loc('Clear')%]</a> </div>