From f5ded6c84e2bd8b45f3ed31447c8ea56772066d6 Mon Sep 17 00:00:00 2001 From: echarp Date: Sat, 4 Oct 2014 18:12:03 +0200 Subject: [PATCH] =?UTF-8?q?L'Agenda=20du=20Libre=20diffuse=20maintenant=20?= =?UTF-8?q?ses=20=C3=A9v=C3=A9nements=20sur=20twitter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/moderations_controller.rb | 12 +++++ app/models/event.rb | 8 ++++ app/views/moderations/refuse.html.haml | 53 +++++++++++------------ app/views/moderations/validate.html.haml | 36 +++++++++------ config/locales/views/en.yml | 7 ++- config/locales/views/fr.yml | 7 ++- 6 files changed, 75 insertions(+), 48 deletions(-) diff --git a/app/controllers/moderations_controller.rb b/app/controllers/moderations_controller.rb index 518a1b9e..48158c31 100644 --- a/app/controllers/moderations_controller.rb +++ b/app/controllers/moderations_controller.rb @@ -35,6 +35,7 @@ class ModerationsController < ApplicationController def accept respond_to do |format| if @moderation.update(moderated: true) && send_accept_mails + tweet format.html { redirect_to moderations_path, notice: t('.ok') } format.json { head :no_content } else @@ -92,6 +93,17 @@ class ModerationsController < ApplicationController ModerationMailer.accept(@moderation, current_user).deliver end + # Tweet this event, if configured using apache/system variables! + def tweet + client = Twitter::REST::Client.new do |config| + config.consumer_key = ENV['TWITTER_CONSUMER_KEY'] + config.consumer_secret = ENV['TWITTER_CONSUMER_SECRET'] + config.access_token = ENV['TWITTER_ACCESS_TOKEN'] + config.access_token_secret = ENV['TWITTER_ACCESS_SECRET'] + end + client.update "#{@event} #{events_url @event}" if client.consumer_key + end + def send_destroy_mails # Send a notification to its author if params[:reason] == 'r_4' diff --git a/app/models/event.rb b/app/models/event.rb index 08403be3..c5d6bcea 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -91,6 +91,14 @@ class Event < ActiveRecord::Base [address, city, related_region.name].compact.join ', ' end + def hashtags + tags.split.map { |tag| "##{tag}" } + end + + def to_s + "#{start_time.to_date} #{city}: #{title} #{hashtags.join(' ')}" + end + private def end_after_start diff --git a/app/views/moderations/refuse.html.haml b/app/views/moderations/refuse.html.haml index c5bea679..92c48143 100644 --- a/app/views/moderations/refuse.html.haml +++ b/app/views/moderations/refuse.html.haml @@ -1,39 +1,38 @@ %h2 - %em.fa.fa-thumbs-down + %em.fa.fa-exclamation-triangle =t '.title' -%fieldset - = form_tag moderation_path(@moderation), method: :delete do |f| - %h3=t '.question' += form_tag moderation_path(@moderation), method: :delete do |f| + .field.closer(title="#{t '.reason_r_1_long'}") + = radio_button_tag :reason, :r_1, params[:event] == 'reason_r_1' + = label_tag :reason_r_1, t('.reason_r_1') - .field.closer(title="#{t '.reason_r_1_long'}") - = radio_button_tag :reason, :r_1, params[:event] == 'reason_r_1' - = label_tag :reason_r_1, t('.reason_r_1') + .field.closer(title="#{t '.reason_r_2_long'}") + = radio_button_tag :reason, :r_2, params[:event] == 'reason_r_2' + = label_tag :reason_r_2, t('.reason_r_2') - .field.closer(title="#{t '.reason_r_2_long'}") - = radio_button_tag :reason, :r_2, params[:event] == 'reason_r_2' - = label_tag :reason_r_2, t('.reason_r_2') + .field.closer(title="#{t '.reason_r_3_long'}") + = radio_button_tag :reason, :r_3, params[:event] == 'reason_r_3' + = label_tag :reason_r_3, t('.reason_r_3') - .field.closer(title="#{t '.reason_r_3_long'}") - = radio_button_tag :reason, :r_3, params[:event] == 'reason_r_3' - = label_tag :reason_r_3, t('.reason_r_3') + .field.opener(title="#{t '.reason_r_4_long'}") + = radio_button_tag :reason, :r_4, params[:event] == 'reason_r_4' || !params[:event] + = label_tag :reason_r_4, t('.reason_r_4') - .field.opener(title="#{t '.reason_r_4_long'}") - = radio_button_tag :reason, :r_4, params[:event] == 'reason_r_4' || !params[:event] - = label_tag :reason_r_4, t('.reason_r_4') + .field + = label_tag :reason_text, t('.reason') + = text_area_tag :reason_text, nil, cols: 40, rows: 5 - .field - = label_tag :reason_text, t('.reason') - = text_area_tag :reason_text, nil, cols: 40, rows: 5 + = link_to moderations_url do + %em.fa.fa-arrow-left + =t '.ko' - = link_to moderations_url do - %em.fa.fa-arrow-left - =t '.ko' - - = button_tag do - %em.fa.fa-thumbs-down - =t '.ok' + = button_tag do + %em.fa.fa-thumbs-down + =t '.ok' %fieldset - %legend= Event.model_name.human + %legend + %em.fa.fa-calendar + = Event.model_name.human = render file: '/events/show' diff --git a/app/views/moderations/validate.html.haml b/app/views/moderations/validate.html.haml index fa3ade31..dc2d26ee 100644 --- a/app/views/moderations/validate.html.haml +++ b/app/views/moderations/validate.html.haml @@ -1,22 +1,32 @@ %h2 - %em.fa.fa-thumbs-up + %em.fa.fa-exclamation-triangle =t '.title' -%fieldset - - if @event.locality? - %h2.warning=t '.warning' +- if @event.locality? + %h2.warning=t '.warning' - = form_for @moderation, url: { action: :accept }, html: { method: :put } do |f| - %h2=t '.question' += form_for @moderation, url: { action: :accept }, html: { method: :put } do |f| + = link_to moderations_url do + %em.fa.fa-arrow-left + =t '.ko' - = link_to moderations_url do - %em.fa.fa-arrow-left - =t '.ko' + = f.button do + %em.fa.fa-thumbs-up + =t '.ok' - = f.button do - %em.fa.fa-thumbs-up - =t '.ok' +- if ENV['TWITTER_CONSUMER_KEY'] || Rails.env.development? + %fieldset + %legend + %em.fa.fa-twitter + Tweet + + %h3=t '.tweet_helper' + + = @event + = events_url @event %fieldset - %legend=Event.model_name.human + %legend + %em.fa.fa-calendar + =Event.model_name.human = render file: '/events/show' diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml index 224918a7..d9fbbb7b 100644 --- a/config/locales/views/en.yml +++ b/config/locales/views/en.yml @@ -175,17 +175,16 @@ Example: `%{daylimit}`" update: ok: Updated events validate: - title: Event validation + title: Do you confirm this event validation? warning: Warning, this event is of national scope! - question: Do you confirm this event validation? ok: Yes ko: Moderation + tweet_helper: A tweet will be published, here is its content accept: ok: Event accepted refuse: - title: Event rejection + title: What motive do you wish to associate to this event's rejection? motif: Motive - question: What motive do you wish to associate to this event's rejection? ok: Reject ko: Moderation reason_r_1: Off-topic diff --git a/config/locales/views/fr.yml b/config/locales/views/fr.yml index 63f79d42..3325197c 100644 --- a/config/locales/views/fr.yml +++ b/config/locales/views/fr.yml @@ -159,17 +159,16 @@ Exemple: `%{daylimit}`" update: ok: Événement mis à jour validate: - title: Validation de l'événement + title: Confirmez-vous la validation de cet événement? warning: Attention, cet événement est à portée nationale! - question: Confirmez-vous la validation de cet événement? ok: Oui ko: Modération + tweet_helper: Un tweet sera publié, dont voici le contenu accept: ok: Événement accepté refuse: - title: Rejet de l'événement + title: Quel motif souhaitez-vous associer au rejet de cet événement? motif: Motif - question: Quel motif souhaitez-vous associer au rejet de cet événement? ok: Rejeter ko: Modération reason_r_1: Hors sujet