summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2019-10-31 18:19:40 +0100
committerYorhel <git@yorhel.nl>2019-11-10 12:44:55 +0100
commitb063b1fcf5810a6952fcde99bca2dbbbfb143d34 (patch)
treebbaab01dc5fe18f5cb6b90676323b08d8e1c69aa /lib
parent683c2298dcdbda96d44e23d5f4db3f3c959d1161 (diff)
ulist: Inline start/end date editing
Diffstat (limited to 'lib')
-rw-r--r--lib/VNWeb/User/Lists.pm32
1 files changed, 30 insertions, 2 deletions
diff --git a/lib/VNWeb/User/Lists.pm b/lib/VNWeb/User/Lists.pm
index 033c3722..7f9ef214 100644
--- a/lib/VNWeb/User/Lists.pm
+++ b/lib/VNWeb/User/Lists.pm
@@ -41,6 +41,16 @@ my $VNLABELS_IN = form_compile in => $VNLABELS;
elm_form 'LabelEdit', $VNLABELS_OUT, $VNLABELS_IN;
+my $VNDATE = form_compile any => {
+ uid => { id => 1 },
+ vid => { id => 1 },
+ date => { required => 0, default => '', regex => qr/^(?:19[7-9][0-9]|20[0-9][0-9])-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$/ }, # 1970 - 2099 for sanity
+ start => { anybool => 1 }, # Field selection, started/finished
+};
+
+elm_form 'DateEdit', undef, $VNDATE;
+
+
# TODO: Filters to find unlabeled VNs or VNs with notes?
sub filters_ {
my($own, $labels) = @_;
@@ -94,6 +104,7 @@ sub filters_ {
sub vn_ {
my($uid, $own, $n, $v, $labels) = @_;
tr_ mkclass(odd => $n % 2 == 0), sub {
+ # TODO: Public/private indicator
td_ class => 'tc1', sub {
input_ type => 'checkbox', class => 'checkhidden', name => 'collapse_vid', id => 'collapse_vid'.$v->{id}, value => 'collapsed_vid'.$v->{id};
label_ for => 'collapse_vid'.$v->{id}, sub {
@@ -127,8 +138,14 @@ sub vn_ {
elm_ 'ULists.VoteEdit' => $VNVOTE, { uid => $uid, vid => $v->{id}, vote => fmtvote($v->{vote}) } if $own;
};
td_ class => 'tc5', fmtdate $v->{added}, 'compact';
- td_ class => 'tc6', $v->{started}||'';
- td_ class => 'tc7', $v->{finished}||'';
+ td_ class => 'tc6', sub {
+ txt_ $v->{started}||'' if !$own;
+ elm_ 'ULists.DateEdit' => $VNDATE, { uid => $uid, vid => $v->{id}, date => $v->{started}||'', start => 1 } if $own;
+ };
+ td_ class => 'tc7', sub {
+ txt_ $v->{finished}||'' if !$own;
+ elm_ 'ULists.DateEdit' => $VNDATE, { uid => $uid, vid => $v->{id}, date => $v->{finished}||'', start => 0 } if $own;
+ };
};
tr_ mkclass(hidden => 1, 'collapsed_vid'.$v->{id} => 1, odd => $n % 2 == 0), sub {
@@ -320,4 +337,15 @@ json_api qr{/u/ulist/setlabel.json}, $VNLABELS_IN, sub {
elm_Success
};
+
+json_api qr{/u/ulist/setdate.json}, $VNDATE, sub {
+ my($data) = @_;
+ return elm_Unauth if !auth || auth->uid != $data->{uid};
+ tuwf->dbExeci(
+ 'UPDATE ulists SET lastmod = NOW(), ', $data->{start} ? 'started' : 'finished', '=', \($data->{date}||undef),
+ 'WHERE uid =', \$data->{uid}, 'AND vid =', \$data->{vid}
+ );
+ elm_Success
+};
+
1;