[dw-free] Make it easy to look up what the notification will look like (dev servers only)
[commit: http://hg.dwscoalition.org/dw-free/rev/c2eb4fe429bd]
http://bugs.dwscoalition.org/show_bug.cgi?id=3136
New admin page for dev work.
Patch by
fu.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=3136
New admin page for dev work.
Patch by
Files modified:
- cgi-bin/DW/Controller/EventOutput.pm
- views/admin/eventoutput-select.tt
- views/admin/eventoutput-select.tt.text
- views/admin/eventoutput.tt
--------------------------------------------------------------------------------
diff -r bdeb70714459 -r c2eb4fe429bd cgi-bin/DW/Controller/EventOutput.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cgi-bin/DW/Controller/EventOutput.pm Fri Oct 15 19:02:41 2010 +0800
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+#
+# DW::Controller::EventPreview
+#
+# This controller is for getting a preview of the output for events, for easy debugging.
+#
+# Authors:
+# Afuna <coder.dw@afunamatata.com>
+#
+# Copyright (c) 2010 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'.
+#
+
+package DW::Controller::EventOutput;
+
+use strict;
+use warnings;
+use DW::Controller;
+use DW::Routing;
+use DW::Template;
+
+use LJ::Event;
+
+DW::Routing->register_string( '/admin/eventoutput', \&event_output, app => 1 );
+
+sub event_output {
+ my $r = DW::Request->get;
+
+ # we have no security-checks past this point, so we never want to run this
+ # on a site with actual user data.
+ return $r->NOT_FOUND unless $LJ::IS_DEV_SERVER;
+
+ my ( $ok, $rv ) = controller( authas => 1 );
+ return $rv unless $ok;
+
+ if ( $r->method eq "POST" ) {
+ return handle_post( %{ DW::Request->get->post_args || {} } );
+ } else {
+ my @event_classes = map {
+ { id => LJ::Event->event_to_etypeid( $_ ),
+ name => $_
+ }
+ } sort LJ::Event->all_classes;
+ my $vars = {
+ eventtypes => \@event_classes,
+ };
+ return DW::Template->render_template( 'admin/eventoutput-select.tt', $vars );
+ }
+}
+
+sub handle_post {
+ my ( %post ) = @_;
+
+ return error_ml( "error.invalidform" ) unless LJ::check_form_auth( $post{lj_form_auth} );
+
+ my $ju = LJ::load_user( $post{eventuser} );
+ my $event = LJ::Event->new_from_raw_params( $post{eventtype}, $ju ? $ju->userid : 0, $post{arg1}, $post{arg2} );
+
+ my $u = LJ::load_user( $post{subscr_user} );
+
+ my $html_body = $event->as_email_html( $u );
+ $html_body = LJ::html_newlines( $html_body ) unless $html_body =~ m!<br!i;
+ my $vars = {
+ event => {
+ email => {
+ from => $event->as_email_from_name( $u ) . " <$LJ::BOGUS_EMAIL>",
+ to => $u->email_raw,
+ headers => $event->as_email_headers( $u ),
+ subject => $event->as_email_subject( $u ),
+ body_html => $html_body,
+ body_text => $event->as_email_string( $u ),
+ },
+
+ inbox => {
+ subject => $event->as_html( $u ),
+ body => $event->content( $u ),
+ summary => $event->content_summary( $u ),
+ }
+ },
+ su => $u,
+ };
+
+ return DW::Template->render_template( 'admin/eventoutput.tt', $vars );
+}
+
+1;
diff -r bdeb70714459 -r c2eb4fe429bd views/admin/eventoutput-select.tt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/views/admin/eventoutput-select.tt Fri Oct 15 19:02:41 2010 +0800
@@ -0,0 +1,49 @@
+[%# eventpreview-select.tt
+
+Page where you can select a particular event to see the format of
+
+Authors:
+ Afuna <coder.dw@afunamatata.com>
+
+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'.
+%]
+
+[%- sections.title = '.title' | ml -%]
+[%- sections.head = BLOCK %]
+ <style type="text/css">
+ #event label { float: left; width: 10em; clear: left;}
+ #event input, #event select, #event p { float: left; }
+ #event input.submit { clear: left; width: 30em; }
+ #event { overflow: auto;}
+ </style>
+[% END %]
+<form method="POST" id="event">
+ [%- dw.form_auth -%]
+ <div class="formfield">
+ <label for="eventtype">[% ".form.label.eventtype" | ml %]:</label> <select id="eventtype" name="eventtype">
+ [% FOREACH eventtype = eventtypes %]
+ <option value="[% eventtype.id %]">[%eventtype.name %]</option>
+ [% END %]
+ </select>
+ </div>
+
+ <div class="formfield">
+ <label for="eventuser">[% ".form.label.eventuser" | ml %]:</label> <input type="text" name="eventuser" id="eventuser" />
+ </div>
+
+ <div class="formfield">
+ <label for="subscr_user">[% ".form.label.subscr_user" | ml %]:</label> <input type="text" name="subscr_user" id="subscr_user" />
+ </div>
+
+ <div class="formfield">
+ <label for="arg1">[% ".form.label.arg1" | ml %]:</label> <input type="text" name="arg1" id="arg1" /> <p class='note'>[% ".form.optional" | ml %]</p>
+ </div>
+
+ <div class="formfield">
+ <label for="arg2">[% ".form.label.arg2" | ml %]:</label> <input type="text" name="arg2" id="arg2" /> <p class='note'>[% ".form.optional" | ml %]</p>
+ </div>
+
+ <input type="submit" class='submit' />
+</form>
diff -r bdeb70714459 -r c2eb4fe429bd views/admin/eventoutput-select.tt.text
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/views/admin/eventoutput-select.tt.text Fri Oct 15 19:02:41 2010 +0800
@@ -0,0 +1,13 @@
+.form.label.arg1=First Argument
+
+.form.label.arg2=Second Argument
+
+.form.label.eventtype=Event Type
+
+.form.label.eventuser=Event Journal
+
+.form.label.subscr_user=Subscriber
+
+.form.optional=(optional)
+
+.title=Select Event to Preview
diff -r bdeb70714459 -r c2eb4fe429bd views/admin/eventoutput.tt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/views/admin/eventoutput.tt Fri Oct 15 19:02:41 2010 +0800
@@ -0,0 +1,36 @@
+[%# eventpreview.tt
+
+Page where you can select a particular event to see the format of
+
+Authors:
+ Afuna <coder.dw@afunamatata.com>
+
+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'.
+%]
+
+[%- sections.title = "Event Preview Output" -%]
+[%- sections.head = BLOCK %]
+ <style type="text/css">
+ #content div.field {
+ padding: 0.2em 0.5em 0.2em 1em;
+ margin-bottom: 1em;
+ }
+ #content label { font-weight: bold; }
+ </style>
+[% END %]
+
+<h2>Inbox</h2>
+<label>Subject:</label><div class='field'>[% event.inbox.subject %]</div>
+<label>Body:</label><div class='field'>[% event.inbox.body %]</div>
+<label>Summary:</label><div class='field'>[% event.inbox.summary %]</div>
+
+<h2>Email</h2>
+<label>From:</label><div class='field'>[% event.email.from | html %]</div>
+<label>To:</label><div class='field'>[% event.email.to | html %]</div>
+<label>Headers:</label><div class='field'>[% event.email.headers | html %]</div>
+<label>Subject:</label><div class='field'>[% event.email.subject | html %]</div>
+<label>Body (HTML):</label><div class='field'>[% event.email.body_html %]</div>
+<label>Body (Plain text):</label><div class='field'><textarea rows="20" cols="50">[% event.email.body_text %]</textarea></div>
+
--------------------------------------------------------------------------------

no subject
no subject
no subject
no subject