facebookpublish,themen fixes

This commit is contained in:
2014-06-20 00:15:45 +05:30
parent 61510a8891
commit 2df0d89b61
16 changed files with 158 additions and 37 deletions

View File

@@ -14,6 +14,12 @@ class HomeController < ApplicationController
@neuigkeiten = Neuigkeit.intern.recent
@themengruppen=Themengruppe.intern
end
def admin
authorize! :doadmin, User
end
def startdev
render 'setup_fetsite_dev'
end

View File

@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
class NeuigkeitenController < ApplicationController
before_filter :load_toolbar_elements, :only=>[:show,:find_link]
before_filter :load_toolbar_elements_edit, :only=>[:edit]
@@ -63,7 +64,17 @@ class NeuigkeitenController < ApplicationController
end
redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)
end
def publish_to_facebook
@neuigkeit = Neuigkeit.find(params[:id])
unless @neuigkeit.published?
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit muss veröffentlicht sein um sie auf Facebook zu posten.'
else
page=YAML.load_file("#{::Rails.root.to_s}/tmp/page.yml")
page.feed!(:access_token=>page.access_token, :message=>@neuigkeit.text_first_words, :name=>@neuigkeit.title, :link=>rubrik_neuigkeit_url(@neuigkeit.rubrik, @neuigkeit)+".html")
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit auf Facebook gepostet'
end
end
def edit
@neuigkeit = Neuigkeit.find(params[:id])
@@ -137,8 +148,12 @@ private
def load_toolbar_elements
@neuigkeit=Neuigkeit.find(params[:id])
@toolbar_elements=[]
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit) && @neuigkeit.published?
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit) && !@neuigkeit.published?
@toolbar_elements << {:hicon=>'icon-facebook', :text=> I18n.t('neuigkeit.publish')+" to facebook",:path => publish_to_facebook_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit)
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:unpublish, @neuigkeit) && @neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse

View File

@@ -57,13 +57,14 @@ class ThemenController < ApplicationController
# GET /themen/1/edit
def edit
@thema = Thema.find(params[:id])
unless ( @thema.wikiname.nil? || @thema.wikiname.empty? )
if @thema.is_wiki?
redirect_to edit_wiki_path(Wiki.find(@thema.id))
return
end
respond_to do |format|
format.html
format.js
format.js { @themen= @thema.themengruppe.themen }
end
end
@@ -72,13 +73,15 @@ class ThemenController < ApplicationController
def create
@thema = Thema.new(params[:thema])
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
if @thema.save
@themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { redirect_to @thema, notice: 'Thema was successfully created.' }
format.json { render json: @thema, status: :created, location: @thema }
format.js {render action: "update"}
else
@themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { render action: "new" }
format.json { render json: @thema.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
@@ -105,8 +108,10 @@ class ThemenController < ApplicationController
def update
@thema = Thema.find(params[:id])
@themen = @thema.themengruppe.themen.order(:priority).reverse
@thema.assign_attributes(params[:thema])
@thema.fix_links(request.host_with_port)
respond_to do |format|
if @thema.update_attributes(params[:thema])
if @thema.save
format.html { redirect_to @thema, notice: 'Thema was successfully updated.' }
format.json { head :no_content }
format.js
@@ -123,7 +128,7 @@ class ThemenController < ApplicationController
def destroy
@thema = Thema.find(params[:id])
@thema.destroy
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
format.html { redirect_to themengruppe_path(@thema.themengruppe) }
format.json { head :no_content }

View File

@@ -48,7 +48,8 @@ class ThemengruppenController < ApplicationController
@themengruppe = Themengruppe.find(params[:id])
end
def verwalten_all
@themengruppen =Themengruppe.order(:priority).reverse
@themengruppen =Themengruppe.public.order(:priority).reverse
@themengruppen_intern =Themengruppe.intern.order(:priority).reverse
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}]
end

View File

@@ -1,15 +1,17 @@
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
skip_before_filter :verify_authenticity_token
def failure
skip_before_filter :verify_authenticity_token
def failure
# flash[:notice] = "Failure #{Hash.new(request.env)} #{Hash.new(params)}"
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
super
end
def facebook
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
super
end
def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
data=request.env["omniauth.auth"]
session[:fbuser_access_token]=data.credentials.token
if @user
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated

View File

@@ -12,9 +12,19 @@ class UsersController < ApplicationController
end
redirect_to users_url
end
def fb_set_default_publish_page
if params["page"].nil? || !(current_user.provider=="facebook")
redirect_to intern_home_index_path
else
@fbu=FbGraph::User.new(current_user.uid.to_s).fetch(:access_token=>session["fbuser_access_token"])
File.open("tmp/page.yml",'w'){|f| f.write(@fbu.accounts(:access_token=>session["fbuser_access_token"]).select { |p| p.name == params["page"] }.first.to_yaml)}
logger.debug @fbu.to_s
redirect_to admin_home_index_path
end
end
def all_update
params[:users].each do |id,u|
user=User.find(id)
user.fetprofile = Fetprofile.find(u[:fetprofile_id].to_i) if u[:fetprofile_id].to_i>0
@@ -26,7 +36,6 @@ class UsersController < ApplicationController
def do_confirm
@user= User.find(params[:id])
@user.confirm!
redirect_to users_url
end
end

View File

@@ -61,6 +61,7 @@ class Ability
if( user.has_role?("fetadmin"))
can [:delete],Calendar
can [:delete],Calentry
can :doadmin, User
end
# Rechteverwaltung fuer Neuigkeiten

View File

@@ -46,7 +46,7 @@ class Neuigkeit < ActiveRecord::Base
self.rubrik.public
end
def published?
self.datum_nilsave>=Time.now.to_date
self.datum_nilsave<Time.now.to_date
end
def publish

View File

@@ -9,8 +9,9 @@
# updated_at :datetime not null
# themengruppe_id :integer
#
require 'uri'
class Thema < ActiveRecord::Base
include Rails.application.routes.url_helpers
attr_accessible :text, :title, :themengruppe_id
has_many :fragen
has_many :attachments
@@ -23,7 +24,7 @@ class Thema < ActiveRecord::Base
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
def is_wiki?
wikiname.nil? || wikiname.empty?
!(wikiname.nil? || wikiname.empty?)
end
def text_first_words
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
@@ -36,4 +37,10 @@ class Thema < ActiveRecord::Base
end
end
def fix_links(host)
full_url= URI.parse(root_url(:host=>host))
self.text.gsub!(/src="[^"]*attachment\/datei\/(\d+)[^"]*"/){|s| full_url.path=Attachment.find($1.to_i).datei.url; 'src="'+full_url.to_s+'"'}
self.text.gsub!(/href="[^"]*themen\/(\d+)[^"]*"/){|s| full_url.path=thema_path(Thema.find($1.to_i)); 'href="'+full_url.to_s+'"'}
end
end

View File

@@ -22,6 +22,7 @@ class Themengruppe < ActiveRecord::Base
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
scope :intern,-> {where(:public=>false)}
scope :public,-> {where(:public=>true)}
def self.find_wiki_default
where(:wiki_default=>true).first

View File

@@ -38,16 +38,17 @@ belongs_to :fetprofile
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
logger.debug auth.to_s
logger.debug "DDD Username= #{auth.username}"
user = User.where(:provider => auth.provider, :uid => auth.extra.raw_info.uid).first
user = User.where(:provider => auth.provider, :uid => auth.uid).first
unless user
user = User.create(name:auth.uid,
user = User.create(name: auth.uid,
provider:auth.provider,
uid:auth.uid,
uid: auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20]
)
end
user
end
def self.find_for_ldap_oauth(auth,signed_in_resource=nil)

View File

@@ -0,0 +1,12 @@
<p><%= link_to "Grant extra FB privileges", user_omniauth_authorize_path(:facebook,:params=>{scope:"manage_pages,publish_actions,email"}) %>
</p>
<p>
<%= link_to "user", users_path %>
</p>
<p>
<%= @fbu.to_yaml.to_s %>
<%= semantic_form_for :set_page, url: fb_set_default_publish_page_user_path(current_user), html:{method: :get} do |f| %>
<%= f.input :page , :input_html => { :name => 'page' }%>
<% end %>
</p>

View File

@@ -3,7 +3,8 @@
<div class="row-fluid">
<div class="span6">
<%= link_to "Adressliste", internlist_fetprofiles_path %>
<%= link_to "Internes Nachschlagewerk" %>
<%= link_to "Admin" , admin_home_index_path if current_user.has_role?(:fetadmin) %>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>
@@ -14,7 +15,7 @@
</li>
</ul>
<%= link_to "Users", users_path %>
</div>
<div class="span6">
<h2>Neuigkeiten</h2>
@@ -28,4 +29,3 @@
</div>
<h2></h2>

View File

@@ -1 +1,3 @@
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('thema.edit')+"</h2>")+render(:partial=>"themen/form", :locals=>{:remote=>true}) )%>");

View File

@@ -0,0 +1,54 @@
<%= render :partial=>'layouts/pretty_toolbar' %>
<div class="container-fluid">
<div class="row-fluid">
<div class="span4">
<ul id="themengruppen" class="sort" >
<% @themengruppen.each do |themengruppe| %>
<li id="themengruppen_<%= themengruppe.id %>" class="sort" style="background:white;display:block;" ><%= themengruppe.title %>-<%= themengruppe.priority %></li>
<% end %>
</ul>
<ul id="themengruppen_intern" class="sort" >
<% @themengruppen_intern.each do |themengruppe| %>
<li id="themengruppen_<%= themengruppe.id %>" class="sort" style="background:white;display:block;" ><%= themengruppe.title %>-<%= themengruppe.priority %></li>
<% end %>
</ul>
</div>
</div>
<div>
<script>
$( document ).ready(function(){
$("#themengruppen").sortable({
cursor: 'crosshair',
drag:true,
update: function(){
$.ajax({
url: '<%= sort_themengruppen_themengruppen_path() %>',
type: 'post',
data: $('#themengruppen').sortable('serialize'),
dataType: 'script',
complete: function(request){
}
})
}
});
});
$( document ).ready(function(){
$("#themengruppen_intern").sortable({
cursor: 'crosshair',
drag:true,
update: function(){
$.ajax({
url: '<%= sort_themengruppen_themengruppen_path() %>',
type: 'post',
data: $('#themengruppen_intern').sortable('serialize'),
dataType: 'script',
complete: function(request){
}
})
}
});
});
</script>

View File

@@ -11,6 +11,9 @@
get :index
post :all_update
end
member do
get :fb_set_default_publish_page
end
end
get 'users/:id/add_role/:role', :controller=>:users, :action=>:add_role, :as=>'user_add_role'
get 'users/:id/do_confirm', :controller=>:users, :action=>:do_confirm, :as=>'user_do_confirm'
@@ -34,7 +37,7 @@
# end
# end
scope ':locale' do
scope '(:locale)' do
scope '(t/:theme)' do
# Studien
@@ -126,6 +129,7 @@
get 'rm_calentry'
get 'create_link'
get 'find_link'
get 'publish_to_facebook'
end
end
end
@@ -135,9 +139,10 @@
# get 'rubriken/verwalten',:controller=>:rubriken,:action=>:alle_verwalten, :as=>'rubriken_verwalten'
resources :home, :only=>[:index] do
get :search, :on=>:collection
get :search, :on => :collection
collection do
get 'intern'
get 'admin'
get 'dev'
get 'startdev'
get 'linksnotimplemented'