%perl>
# Show the story summary if needed.
if ($show_summary) {
my $type = $element->get_object_type;
# Nab the story from the story_prof widget
my $asset = get_state_data($type.'_prof', $type);
$m->comp('/widgets/summary/summary.mc', asset => $asset, number => ++$i);
}
%perl>
<& /widgets/dialog_box/find.mc,
field_id => "$widget|text",
dialog_id => 'finddialog',
&>
<&| /widgets/dialog_box/dialog_box.mc,
id => 'cheat_sheet',
title => 'Cheat Sheet',
close_label => 'Close',
&>
% $gen_cheat_sheet->($m, $et, \%seen_fields, {});
&>
<& '/widgets/wrappers/sharky/table_top.mc',
caption => $lang->maketext('Bulk Edit [_1]', $element->get_name),
id => 'containerprof',
number => ++$i,
&>
Element:
<% $et->get_name %> <% $show_element_flags->($et) %>
Default Field:
<%perl>;
my $opts = [
[ '' => '' ],
map { [ $_ => $_ ] } sort { $a cmp $b } keys %seen_fields
];
%perl>
<& '/widgets/profile/select.mc',
name => $widget.'|default_field',
options => $opts,
value => $def_field,
useTable => 0,
&>
<& '/widgets/buttons/submit.mc',
disp => "Change",
widget => $widget,
cb => "change_default_field_cb",
button => "change_red",
value => "Change",
useTable => 0,
&>
<% $lang->maketext('Words') %>
<& '/widgets/profile/text.mc',
id => 'words',
name => 'words',
value => '',
useTable => 0,
&>
<% $lang->maketext('Characters') %>
<& '/widgets/profile/text.mc',
id => 'chars',
name => 'chars',
value => '',
useTable => 0,
&>
Search
Cheat Sheet
<& '/widgets/profile/textarea.mc',
name => "$widget|text",
value => $args->{__use_text__} ? $args->{"$widget|text"} : $element->serialize_to_pod($def_field),
rows => 40,
useTable => 0,
js => qq{onkeyup="wordCount(document.theForm, '$widget|text', 'words', 'chars');"},
&>
<& '/widgets/wrappers/sharky/table_bottom.mc' &>
<& '/widgets/buttons/submit.mc',
disp => 'Save',
widget => $widget,
cb => 'bulk_save_and_up_cb',
button => 'save_red',
useTable => 0,
&>
<& '/widgets/buttons/submit.mc',
disp => 'Save and Stay',
widget => $widget,
cb => 'bulk_save_cb',
button => 'save_and_stay_lgreen',
useTable => 0,
&>
<& '/widgets/buttons/submit.mc',
disp => 'Return without Saving',
widget => $widget,
cb => 'bulk_up_cb',
button => 'cancel_red',
useTable => 0,
&>
<%args>
$widget
$show_summary
$args
%args>
<%init>;
# the element object
my $element = get_state_data($widget, 'element');
#my $preserve = get_state_data($widget, 'preserve');
my $i = 0;
my $et = $element->get_element_type;
my $def_field = get_state_data(
'_tmp_prefs',
'container_prof.' . $et->get_id . '.def_field'
);
my %seen_fields;
%init>
<%once>;
my $show_element_flags = sub {
my $et = shift;
my @flags;
push @flags, 'paginated' if $et->is_paginated;
push @flags, 'top level' if $et->is_top_level;
push @flags, 'fixed uri' if $et->is_fixed_uri;
push @flags, 'media' if $et->is_media;
push @flags, 'related media' if $et->is_related_media;
push @flags, 'related story' if $et->is_related_story;
return '' unless @flags;
return ' (' . join(', ', @flags) . ') ';
};
my $show_data_flags = sub {
my $dt = shift;
my @flags;
push @flags, 'required' if $dt->get_required;
push @flags, 'repeatable' if $dt->get_quantifier;
return '' unless @flags;
return ' (' . join(', ', @flags) . ') ';
};
my $gen_cheat_sheet;
$gen_cheat_sheet = sub {
my ($m, $et, $seen_fields, $seen_elems) = @_;
my $fields = $et->get_field_types;
my $subs = $et->get_containers;
return unless @$fields || @$subs;
$m->print("\n");
for my $field (@$fields) {
my $kn = $field->get_key_name;
$seen_fields->{$kn} ||= 1;
$m->print("=$kn", $show_data_flags->($field), " \n");
}
for my $cont (@$subs) {
my $kn = $cont->get_key_name;
next if $seen_elems->{$kn} > 1;
++$seen_elems->{$kn};
$m->print(
qq{=begin $kn },
$show_element_flags->($cont),
);
$gen_cheat_sheet->($m, $cont, $seen_fields, $seen_elems);
$m->print("=end $kn \n");
$seen_elems->{$kn}--;
}
$m->print(" \n");
};%once>