]> ruin.nu Git - ndwebbie.git/commitdiff
Sending private messages or threads.
authorMichael Andreen <harv@ruin.nu>
Fri, 1 Aug 2008 10:59:01 +0000 (12:59 +0200)
committerMichael Andreen <harv@ruin.nu>
Fri, 1 Aug 2008 10:59:01 +0000 (12:59 +0200)
lib/NDWeb.pm
lib/NDWeb/Controller/Forum.pm
root/lib/site/leftbar.tt2
root/src/forum/privmsg.tt2 [new file with mode: 0644]

index af45ad068b3b22566f1b13d8dc0c9ec8eb4adfe1..bce6c3879afe43c1c15a72bc9851673c9ace8ef1 100644 (file)
@@ -97,6 +97,7 @@ __PACKAGE__->deny_access_unless('/intel/naps',[qw/intel_naps/]);
 __PACKAGE__->deny_access_unless('/jsrpc',[qw//]);
 __PACKAGE__->allow_access_if('/jsrpc/end',1);
 __PACKAGE__->deny_access_unless('/forum/allUnread',[qw//]);
+__PACKAGE__->deny_access_unless('/forum/privmsg',[qw//]);
 __PACKAGE__->deny_access_unless('/settings',[qw//]);
 
 =head1 NAME
index f33319aabb6379e4cfff2f5ed62a807f19366d00..d08bb6150ac9a7bdb7bb5a2c953435f13210c3a4 100644 (file)
@@ -425,6 +425,31 @@ sub removeownthreadaccess : Local {
        $c->res->redirect($c->uri_for('allUnread'));
 }
 
+sub privmsg : Local {
+       my ( $self, $c, $uid ) = @_;
+
+       $uid ||= 0;
+       $c->stash(uid => $uid);
+
+       $c->forward('findUsers');
+}
+
+sub postprivmsg : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       $dbh->begin_work;
+       $c->forward('insertThread',[-1999]);
+
+       $c->req->parameters->{uid} = [$c->req->parameters->{uid}]
+               unless ref $c->req->parameters->{uid} eq 'ARRAY';
+       push @{$c->req->parameters->{uid}}, $c->user->id;
+       $c->forward('addaccess',[$c->stash->{thread}]);
+
+       $c->forward('addPost',[$c->stash->{thread}]);
+       $dbh->commit;
+}
+
 sub addaccess : Private {
        my ( $self, $c, $thread) = @_;
        my $dbh = $c->model;
index 08e1ac362dc1896ee67056a2cd0d6734d1cd11ba..c5c71b270f8f3afa4d921697e6ca65d4fb405b1c 100644 (file)
@@ -5,6 +5,7 @@
        <li><a href="/forum/search">Forum search</a></li>
 [% IF user %]
        <li><a href="/forum/allUnread">New posts [% IF user.unreadposts %](<span class="[% IF user.newposts %]newposts[% ELSE %]unreadposts[% END %]">[% user.unreadposts %]</span>)[% END %]</a></li>
+       <li><a href="/forum/privmsg">Priv msg</a></li>
        <li><a href="/settings">Settings</a></li>
        <li><a href="/logout">Log out ([% c.user.username %])</a></li>
 [% ELSE %]
diff --git a/root/src/forum/privmsg.tt2 b/root/src/forum/privmsg.tt2
new file mode 100644 (file)
index 0000000..8870813
--- /dev/null
@@ -0,0 +1,45 @@
+[% META title = 'Private Message' %]
+
+<form action="[% c.uri_for('postprivmsg') %]" method="post" id="privmsg"><fieldset class="forum-post">
+<legend>New Private Message</legend>
+       <p><span id="recadd">Receiver(s): </span><select name="uid" multiple size="5">
+[% FOR u IN users %]
+               <option value="[% u.uid %]" [% IF uid == u.uid %]selected[% END %]>[% u.username %]</option>
+[% END %]
+               </select></p>
+       <div id="receivers"></div>
+       <p>Subject: <input type="text" name="subject" value=""></p>
+       <textarea rows="25" cols="60" name="message"></textarea>
+       <br>
+       <input type="submit" name="cmd" value="Submit">
+       <input type="submit" name="cmd" value="Preview">
+</fieldset>
+</form>
+
+<script type="text/javascript">
+$(document).ready(function(){
+       $('select').attr({name:'u', size: 1, multiple: null}).after($('<input type="button" id="add" value="Add">'));
+       $('#recadd').text('Users: ');
+       $('#receivers').append('Receiver(s):');
+
+       $('#add').click(function(){
+               var u = $('option:selected');
+               $('#receivers').append($('<p>'+u.text()+': <input type="checkbox" name="uid" checked value='+u.val()+'><\/p>'));
+       });
+
+       $('#privmsg').submit(function(){
+               if(!$('#privmsg :checkbox[@name=uid][@checked]').val()){
+                       alert('You need to add a receiver.');
+                       return false;
+               }
+               if($('#privmsg :input[@name=subject]').val() == ''){
+                       alert('You need to write a subject');
+                       return false;
+               }
+               if($('#privmsg :input[@name=message]').val() == ''){
+                       alert('You need to write a message');
+                       return false;
+               }
+       });
+});
+</script>