318 lines
9.9 KiB
Text
318 lines
9.9 KiB
Text
|
|
[%# Management pages for virtual gifts in the shop.
|
||
|
|
#
|
||
|
|
# Authors:
|
||
|
|
# Jen Griffin <kareila@livejournal.com>
|
||
|
|
#
|
||
|
|
# Copyright (c) 2010-2020 by Dreamwidth Studios, LLC.
|
||
|
|
#
|
||
|
|
# This program is free software; you may redistribute it and/or modify it under
|
||
|
|
# the same terms as Perl itself. For a copy of the license, please reference
|
||
|
|
# 'perldoc perlartistic' or 'perldoc perlgpl'.
|
||
|
|
%]
|
||
|
|
|
||
|
|
[%- CALL dw.active_resource_group( "foundation" ) -%]
|
||
|
|
|
||
|
|
[%- dw.need_res( { group => "foundation" }
|
||
|
|
"stc/css/pages/admin/vgifts.css"
|
||
|
|
) -%]
|
||
|
|
|
||
|
|
[%- sections.title = '.title' | ml -%]
|
||
|
|
|
||
|
|
[%- IF mode == 'view';
|
||
|
|
IF vgift; sections.title = sections.title _ ": " _ vgift.name_ehtml;
|
||
|
|
IF title; sections.title = ".title.$title" | ml; END; END;
|
||
|
|
IF vu; sections.title = sections.title _ ": " _ vu.display_name; END;
|
||
|
|
ELSIF mode == 'review';
|
||
|
|
title_extra = '.title.review' | ml;
|
||
|
|
sections.title = sections.title _ ": " _ title_extra;
|
||
|
|
ELSIF mode == 'delete';
|
||
|
|
sections.title = '.title.delete' | ml;
|
||
|
|
ELSIF mode == 'artists';
|
||
|
|
title_extra = '.title.artists' | ml;
|
||
|
|
sections.title = sections.title _ ": " _ title_extra;
|
||
|
|
END
|
||
|
|
-%]
|
||
|
|
|
||
|
|
[%- PROCESS admin/vgifts/_blocks.tt -%]
|
||
|
|
|
||
|
|
[%- IF mode == 'view';
|
||
|
|
IF vgift;
|
||
|
|
IF vgift.can_be_edited_by( remote ) -%]
|
||
|
|
|
||
|
|
<h2>[% vgift.name_ehtml %] (#[% vgift.id %])</h2>
|
||
|
|
|
||
|
|
<h3>[% 'vgift.display.createdby' | ml( user = vgift.creator.ljuser_display,
|
||
|
|
ago = vgift.created_ago_text ) %]</h3>
|
||
|
|
|
||
|
|
<form enctype='multipart/form-data' method='post'>
|
||
|
|
[% dw.form_auth %]
|
||
|
|
[% form.hidden( name = 'mode', value = 'edit' ) %]
|
||
|
|
[% form.hidden( name = 'id', value = vgift.id ) %]
|
||
|
|
|
||
|
|
[% form.textbox( label = dw.ml( '.label.edit.name' ),
|
||
|
|
name = 'name', id = 'name',
|
||
|
|
size = 40, maxlength = 80 ) %]
|
||
|
|
|
||
|
|
<p><b>[% '.label.create.desc' | ml %]</b><br />
|
||
|
|
<tt>[% vgift.description_ehtml %]</tt></p>
|
||
|
|
|
||
|
|
[% form.textbox( label = dw.ml( '.label.edit.desc' ),
|
||
|
|
name = 'desc', id = 'desc',
|
||
|
|
size = 40, maxlength = 255 ) %]
|
||
|
|
|
||
|
|
<h3>[% '.header.imgsmall' | ml %]</h3>
|
||
|
|
[% vgift.img_small_html %]<br />
|
||
|
|
<label for='img_small'>[% '.label.edit.imgsmall' | ml %]</label><br />
|
||
|
|
[% PROCESS imgform id = 'img_small' %]
|
||
|
|
|
||
|
|
<h3>[% '.header.imglarge' | ml %]</h3>
|
||
|
|
[% vgift.img_large_html %]<br />
|
||
|
|
<label for='img_large'>[% '.label.edit.imglarge' | ml %]</label><br />
|
||
|
|
[% PROCESS imgform id = 'img_large' %]
|
||
|
|
|
||
|
|
<p>[% form.submit( name = 'submit', value = dw.ml( '.submit.edit' ) ) %]</p>
|
||
|
|
</form>
|
||
|
|
|
||
|
|
[%- ELSE; # no edit, view only -%]
|
||
|
|
<div class='row'>
|
||
|
|
<div class='columns medium-6'>
|
||
|
|
[% vgift.display_basic %]
|
||
|
|
[% vgift.img_large_html %]
|
||
|
|
</div>
|
||
|
|
<div class='columns medium-6'>
|
||
|
|
[%- IF vgift.id && ! vgift.is_queued -%]
|
||
|
|
<h2>[% '.header.review' | ml %]</h2>
|
||
|
|
[%- END -%]
|
||
|
|
[% PROCESS review_status vg = vgift %]
|
||
|
|
[% PROCESS shop_status vg = vgift %]
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- ELSIF vu -%]
|
||
|
|
[% PROCESS userview u = vu, review = siteadmin %]
|
||
|
|
|
||
|
|
[%- ELSE; # view summary for logged in user -%]
|
||
|
|
[%- IF title == 'deleted' -%]
|
||
|
|
[% PROCESS success_message success_text = dw.ml( '.review.deleted' ) %]
|
||
|
|
[%- END -%]
|
||
|
|
[% PROCESS userview u = remote %]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[% PROCESS linkback %]
|
||
|
|
|
||
|
|
[%- ELSIF mode == 'review' AND siteadmin -%]
|
||
|
|
[%- IF title == 'deleted' -%]
|
||
|
|
[% PROCESS success_message success_text = dw.ml( '.review.deleted' ) %]
|
||
|
|
[%- ELSIF title == 'approved' AND vgift -%]
|
||
|
|
[%- succtext = '.review.approved' | ml( name = vgift.name_ehtml,
|
||
|
|
id = vgift.id ) -%]
|
||
|
|
[% PROCESS success_message success_text = succtext %]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF vgift; queue = vgift; ELSE; queue = review_list; END -%]
|
||
|
|
|
||
|
|
[%- i = 0;
|
||
|
|
FOREACH vg IN queue;
|
||
|
|
NEXT UNLESS vg.defined;
|
||
|
|
NEXT UNLESS vg.can_be_approved_by( remote )
|
||
|
|
OR ( vg.is_approved && siteadmin );
|
||
|
|
i = i + 1 -%]
|
||
|
|
|
||
|
|
<div class='row'>
|
||
|
|
<div class='columns medium-6'>
|
||
|
|
[% vg.display_basic %]
|
||
|
|
<p>[% vg.display_vieweditlinks %]</p>
|
||
|
|
</div>
|
||
|
|
<div class='columns medium-6'>
|
||
|
|
<h2>[% '.header.review' | ml %]</h2>
|
||
|
|
[%- UNLESS vg.is_queued -%]
|
||
|
|
[% PROCESS review_status %]
|
||
|
|
[%- END -%]
|
||
|
|
[%- UNLESS vg.is_rejected -%]
|
||
|
|
<form method='post'>
|
||
|
|
[% dw.form_auth %]
|
||
|
|
[% form.hidden( name = 'mode', value = 'approve' ) %]
|
||
|
|
[% form.hidden( name = 'id', value = vg.id ) %]
|
||
|
|
[% IF days; form.hidden( name = 'days', value = days ); END %]
|
||
|
|
[% form.hidden( name = "${vg.id}_chksum", value = vg.checksum ) %]
|
||
|
|
|
||
|
|
[%- IF vg.is_queued -%]
|
||
|
|
[% form.select( name = "${vg.id}_approve", id = "${vg.id}_approve",
|
||
|
|
label = dw.ml( '.label.review.approval' ),
|
||
|
|
selected = '',
|
||
|
|
items = [ '', '',
|
||
|
|
'Y', dw.ml( '.label.review.answer.y' ),
|
||
|
|
'N', dw.ml( '.label.review.answer.n' ) ] ) %]
|
||
|
|
<br />
|
||
|
|
<label for='[% "${vg.id}_comment" %]'>
|
||
|
|
[% '.label.review.comment' | ml %]
|
||
|
|
</label>
|
||
|
|
<br />
|
||
|
|
[% form.textarea( name = "${vg.id}_comment", id = "${vg.id}_comment",
|
||
|
|
cols = 40, rows = 10 ) %]
|
||
|
|
|
||
|
|
[%- ELSIF vg.is_approved; # prompt for suggestions -%]
|
||
|
|
<h4>[% '.label.review.optional' | ml %]</h4>
|
||
|
|
[% form.hidden( name = 'activation', value = inactive ) %]
|
||
|
|
|
||
|
|
[% form.select( name = "${vg.id}_featured", id = "${vg.id}_featured",
|
||
|
|
label = dw.ml( 'vgift.display.label.featured' ),
|
||
|
|
selected = vg.featured,
|
||
|
|
items = [ 'N', dw.ml( '.label.review.answer.n' ),
|
||
|
|
'Y', dw.ml( '.label.review.answer.y' ) ] ) %]
|
||
|
|
<br />
|
||
|
|
[% form.textbox( label = dw.ml( 'vgift.display.label.cost' ),
|
||
|
|
name = "${vg.id}_cost", id = "${vg.id}_cost",
|
||
|
|
size = 5, value = vg.cost ? vg.cost : '' ) %]
|
||
|
|
[% 'vgift.display.cost.points' | ml( cost = '' ) %]
|
||
|
|
<br />
|
||
|
|
[% form.textbox( label = dw.ml( 'vgift.display.label.tags' ),
|
||
|
|
name = "${vg.id}_tags", id = "${vg.id}_tags",
|
||
|
|
size = 50, value = vg.display_taglist ) %]
|
||
|
|
[%- END -%]
|
||
|
|
<p>
|
||
|
|
[% form.submit( name = 'submit', value = dw.ml( '.submit.review' ) ) %]
|
||
|
|
</p>
|
||
|
|
</form>
|
||
|
|
[%- END -%]
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
[%- END -%]
|
||
|
|
[%- UNLESS i -%]
|
||
|
|
<p>[% '.review.empty' | ml %]</p>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF vgift -%]
|
||
|
|
[%- IF inactive -%]
|
||
|
|
<p><a href='inactive'>[% '.linktext.inactive' | ml %]</a></p>
|
||
|
|
|
||
|
|
[%- ELSIF days -%]
|
||
|
|
<p>
|
||
|
|
<a href='?mode=review&days=[% days %]'>[% '.linktext.review.recent' | ml %]</a>
|
||
|
|
</p>
|
||
|
|
|
||
|
|
[%- ELSE -%]
|
||
|
|
<p><a href='?mode=review'>[% '.linktext.review.all' | ml %]</a></p>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- ELSE; PROCESS linkback;
|
||
|
|
END -%]
|
||
|
|
|
||
|
|
[%- ELSIF mode == 'delete' AND vgift -%]
|
||
|
|
[%- IF vgift.can_be_deleted_by( remote ) -%]
|
||
|
|
|
||
|
|
<h3>[% '.header.delete' | ml %]</h3>
|
||
|
|
[% vgift.display_basic %]
|
||
|
|
<form method='post'>
|
||
|
|
[% dw.form_auth %]
|
||
|
|
[% form.hidden( name = 'mode', value = 'confirm' ) %]
|
||
|
|
[% form.hidden( name = 'id', value = vgift.id ) %]
|
||
|
|
<p>[% form.submit( name = 'submit', value = dw.ml( '.submit.delete' ) ) %]</p>
|
||
|
|
</form>
|
||
|
|
|
||
|
|
[%- ELSE -%]
|
||
|
|
<p>[% '.error.delete' | ml %]</p>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[% PROCESS linkback %]
|
||
|
|
|
||
|
|
[%- ELSIF mode == 'artists' -%]
|
||
|
|
<ol>[% display_creatorlist %]</ol>
|
||
|
|
[% PROCESS linkback %]
|
||
|
|
|
||
|
|
[%- ELSE; # default page display -%]
|
||
|
|
|
||
|
|
<div class='row'><div class='columns medium-6'>
|
||
|
|
<h2>[% '.header.create' | ml %]</h2>
|
||
|
|
|
||
|
|
<form enctype='multipart/form-data' method='post'>
|
||
|
|
[% dw.form_auth %]
|
||
|
|
[% form.hidden( name = 'mode', value = 'create' ) %]
|
||
|
|
[% form.textbox( label = dw.ml( '.label.create.name' ),
|
||
|
|
name = 'name', id = 'name',
|
||
|
|
size = 40, maxlength = 80 ) %]
|
||
|
|
<br />
|
||
|
|
|
||
|
|
[% form.textbox( label = dw.ml( '.label.create.desc' ),
|
||
|
|
name = 'desc', id = 'desc',
|
||
|
|
size = 40, maxlength = 255 ) %]
|
||
|
|
|
||
|
|
[%- IF siteadmin -%]
|
||
|
|
<br />
|
||
|
|
|
||
|
|
[% form.textbox( label = dw.ml( '.label.create.creator' ),
|
||
|
|
name = 'creator', id = 'creator',
|
||
|
|
size = 40, maxlength = 80 ) %]
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
<h3>[% '.header.imgsmall' | ml %]</h3>
|
||
|
|
[% PROCESS imgform id = 'img_small' %]
|
||
|
|
<h3>[% '.header.imglarge' | ml %]</h3>
|
||
|
|
[% PROCESS imgform id = 'img_large' %]
|
||
|
|
<p style="text-align: right">[% '.note.svg' | ml %]</p>
|
||
|
|
|
||
|
|
<p>[% form.submit( name = 'submit', value = dw.ml( '.submit.create' ) ) %]</p>
|
||
|
|
</form>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class='columns medium-6' style='text-align: center'>
|
||
|
|
<h4>[% '.header.userqueue' | ml %]</h4>
|
||
|
|
|
||
|
|
[%- vglist = list_created_by( remote );
|
||
|
|
IF vglist.size -%]
|
||
|
|
<ul>
|
||
|
|
[%- i = 0;
|
||
|
|
FOREACH vg IN vglist;
|
||
|
|
NEXT UNLESS vg.defined AND vg.can_be_edited_by( remote );
|
||
|
|
i = i + 1 -%]
|
||
|
|
<li>
|
||
|
|
"[% vg.name_ehtml %]" ([% vg.created_ago_text %])
|
||
|
|
[% vg.display_vieweditlinks %]
|
||
|
|
</li>
|
||
|
|
[%- END -%]
|
||
|
|
[%- IF i > 0 -%]
|
||
|
|
<li style='padding-top: 0.5em'>
|
||
|
|
<a href='?mode=view'>[% '.linktext.viewall' | ml %]</a>
|
||
|
|
</li>
|
||
|
|
[%- END -%]
|
||
|
|
</ul>
|
||
|
|
[%- ELSE -%]
|
||
|
|
<i>[% '.queue.empty' | ml %]</i>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
<h4>[% '.header.artists' | ml %]</h4>
|
||
|
|
|
||
|
|
[%- dclist = display_creatorlist( 5 );
|
||
|
|
IF dclist -%]
|
||
|
|
<ul>
|
||
|
|
[% dclist %]
|
||
|
|
<li style='padding-top: 0.5em'>
|
||
|
|
<a href='?mode=artists'>[% '.linktext.viewall' | ml %]</a>
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
[%- ELSE -%]
|
||
|
|
<i>[% '.queue.empty' | ml %]</i>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
[%- IF siteadmin -%]
|
||
|
|
<h4>[% '.header.siteadmin' | ml %]</h4>
|
||
|
|
|
||
|
|
<ul>
|
||
|
|
<li>
|
||
|
|
<a href='?mode=review&days=14'>[% '.linktext.review.recent' | ml %]</a>
|
||
|
|
</li><li>
|
||
|
|
<a href='?mode=review'>[% '.linktext.review.all' | ml %]</a>
|
||
|
|
</li><li>
|
||
|
|
<a href='tags'>[% '.linktext.tags' | ml %]</a>
|
||
|
|
</li><li>
|
||
|
|
<a href='inactive'>[% '.linktext.inactive' | ml %]</a>
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
[%- END -%]
|
||
|
|
|
||
|
|
</div></div>
|
||
|
|
|
||
|
|
[%- END -%]
|