From c4296b59a7f9d667d295f9c37b71f7849b818fb3 Mon Sep 17 00:00:00 2001 From: Charlie Root Date: Tue, 28 Jan 2025 22:47:15 +0100 Subject: Big overhaul patch and style changes --- config/boot.rb | 1 + config/environment.rb | 31 +++++++++++++++++++++++++++---- config/environments/production.rb | 3 ++- config/sphinx.yml | 3 ++- 4 files changed, 32 insertions(+), 6 deletions(-) (limited to 'config') diff --git a/config/boot.rb b/config/boot.rb index dd5e3b6..9834fc4 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -2,6 +2,7 @@ # Configure your app in config/environment.rb and config/environments/*.rb RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) +ENV['NLS_LANG'] = 'de_DE.UTF8' module Rails class << self diff --git a/config/environment.rb b/config/environment.rb index ec7ffa9..57b9ef2 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,11 +1,33 @@ # Be sure to restart your server when you modify this file # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '2.3.15' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') +# monkey patch for 2.0. Will ignore vendor gems. +if RUBY_VERSION >= "2.0.0" + module Gem + def self.source_index + sources + end + + def self.cache + sources + end + + SourceIndex = Specification + + class SourceList + # If you want vendor gems, this is where to start writing code. + def search( *args ); []; end + def each( &block ); end + include Enumerable + end + end +end + Rails::Initializer.run do |config| # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers @@ -23,7 +45,7 @@ Rails::Initializer.run do |config| # config.gem "rake", :version => ">= 0.8.3" # config.gem "rack", :version => ">= 0.9.1" config.gem "pg" - config.gem "thinking-sphinx", :lib => 'thinking_sphinx', :version => '1.4.3' + config.gem "thinking-sphinx", :lib => 'thinking_sphinx', :version => '1.5.0' config.gem "libxml-ruby", :lib => 'xml' config.gem "erdgeist-chaos_calendar", :lib => "chaos_calendar", :source => "http://gems.github.com" @@ -55,9 +77,10 @@ Rails::Initializer.run do |config| # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] config.i18n.default_locale = :de + end require 'awesome_patch' -ExceptionNotifier.exception_recipients = %w(hukl@berlin.ccc.de) -ExceptionNotifier.sender_address = %("CCCMS Error" ) +ExceptionNotifier.exception_recipients = %w(erdgeist@ccc.de) +ExceptionNotifier.sender_address = %("CCCMS Error" ) diff --git a/config/environments/production.rb b/config/environments/production.rb index 68ceccd..3195745 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -32,4 +32,5 @@ ActionMailer::Base.sendmail_settings = { :arguments => '-i -t' } ActionMailer::Base.perform_deliveries = true -ActionMailer::Base.raise_delivery_errors = true \ No newline at end of file +ActionMailer::Base.raise_delivery_errors = true + diff --git a/config/sphinx.yml b/config/sphinx.yml index a01c216..3dc9195 100644 --- a/config/sphinx.yml +++ b/config/sphinx.yml @@ -8,4 +8,5 @@ production: config_file: "/usr/local/etc/sphinx.conf" searchd_log_file: "/var/log/searchd.log" query_log_file: "/var/log/searchd.query.log" - pid_file: "/var/run/sphinxsearch/searchd.pid" \ No newline at end of file + max_matches: 10000 + pid_file: "/var/run/sphinxsearch/searchd.pid" -- cgit v1.3 From 6424e10be5a89f175a74c71c55660412a169b8b8 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Tue, 23 Jun 2026 18:04:37 +0200 Subject: Update deployed state to what's currently running --- Rakefile | 4 +- app/controllers/nodes_controller.rb | 1 + app/helpers/admin_helper.rb | 4 +- app/helpers/content_helper.rb | 6 +- app/models/node.rb | 29 +- app/models/page.rb | 15 +- app/views/admin/index.html.erb | 18 +- app/views/content/_featured_articles.html.erb | 6 +- app/views/content/_main_navigation.html.erb | 6 - app/views/content/_search.html.erb | 9 +- app/views/content/_tags.html.erb | 4 +- app/views/layouts/application.html.erb | 43 ++- app/views/nodes/edit.html.erb | 156 ++++----- config/database.mysql-sample.yml | 45 --- config/database.psql-sample.yml | 51 --- config/environments/production.rb | 2 +- config/locales/de.yml | 1 + config/locales/en.yml | 6 +- public/javascripts/public.js | 9 +- public/stylesheets/admin.css | 202 +++++++++--- public/stylesheets/ccc.css | 363 +++++++++++++++------ test/functional/nodes_controller_test.rb | 36 ++ vendor/plugins/paperclip/lib/paperclip/geometry.rb | 1 + 23 files changed, 637 insertions(+), 380 deletions(-) delete mode 100644 config/database.mysql-sample.yml delete mode 100644 config/database.psql-sample.yml (limited to 'config') diff --git a/Rakefile b/Rakefile index 3af2c3a..b8e1d62 100644 --- a/Rakefile +++ b/Rakefile @@ -5,7 +5,9 @@ require(File.join(File.dirname(__FILE__), 'config', 'boot')) require 'rake' require 'rake/testtask' -require 'rake/rdoctask' + +#require 'rake/rdoctask' +#require 'rdoc/task' require 'tasks/rails' require 'thinking_sphinx/tasks' diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index b8cd644..95aed48 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -55,6 +55,7 @@ class NodesController < ApplicationController def show node = Node.find(params[:id]) + node.wipe_draft! @page = node.draft || node.head end diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 232862b..389f6dc 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -3,9 +3,9 @@ module AdminHelper def language_selector case I18n.locale when :de - link_to 'English (Aktiv: Deutsch)', url_for(:overwrite_params => {:locale => :en}) + link_to raw('English'), url_for(:overwrite_params => {:locale => :en}) when :en - link_to 'Deutsch (Active: English)', url_for(:overwrite_params => {:locale => :de}) + link_to raw('Deutsch'), url_for(:overwrite_params => {:locale => :de}) end end end diff --git a/app/helpers/content_helper.rb b/app/helpers/content_helper.rb index 7286976..17364f8 100644 --- a/app/helpers/content_helper.rb +++ b/app/helpers/content_helper.rb @@ -43,7 +43,7 @@ module ContentHelper # Returns the published_at attribute of a page if it is not nil, otherwise # it returns the auto-filled value of the created_at attribute def date_for_page page - page.published_at.to_s(:db) rescue page.created_at.to_s(:db) + I18n.l(page.published_at, :format => :ccc) rescue I18n.l(page.created_at, :format => :ccc) end def author_for_page page @@ -80,10 +80,10 @@ module ContentHelper begin if content =~ /]*)>/ tag = $~.to_s - matched_data = $1.scan(/\w+\=\"[a-zA-Z\s\/_\d,]*\"/) + matched_data = $1.scan(/\w+\=\"[a-zA-Z\s\/_\d,.=]*\"/) matched_data.each do |data| - splitted_data = data.split("=") + splitted_data = data.split("=", 2) options[splitted_data[0].to_sym] = splitted_data[1].gsub(/\"/, "") end diff --git a/app/models/node.rb b/app/models/node.rb index 6c11fed..75122d1 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -3,11 +3,11 @@ class Node < ActiveRecord::Base acts_as_nested_set # Associations - has_many :pages, :order => "revision ASC" - belongs_to :head, :class_name => "Page", :foreign_key => :head_id - belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id - has_many :permissions - has_one :event + has_many :pages, :order => "revision ASC", :dependent => :destroy + belongs_to :head, :class_name => "Page", :foreign_key => :head_id, :dependent => :destroy + belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id, :dependent => :destroy + has_many :permissions, :dependent => :destroy + has_one :event, :dependent => :destroy belongs_to :lock_owner, :class_name => "User", :foreign_key => :locking_user_id # Callbacks @@ -60,6 +60,7 @@ class Node < ActiveRecord::Base # Instance Methods def find_or_create_draft current_user + self.wipe_draft! if draft && self.lock_owner == current_user draft elsif draft && self.lock_owner.nil? @@ -115,6 +116,24 @@ class Node < ActiveRecord::Base end end + # removes a draft and the lock if it is older than a day and still + # identical to head + def wipe_draft! + unless self.draft + self.unlock! + return + end + return unless self.head + return unless self.draft.updated_at < 1.day.ago + return if Page.find(self.head).has_changes_to? self.draft + + self.draft.destroy + self.draft_id = nil + self.unlock! + self.save! + self.reload + end + def restore_revision! revision if page = self.pages.find_by_revision(revision) self.head = page diff --git a/app/models/page.rb b/app/models/page.rb index 0cfad53..f804353 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -64,7 +64,7 @@ class Page < ActiveRecord::Base Page.heads.paginate( find_options_for_find_tagged_with( - options[:tags].gsub(/\s/, ","), :match_all => true + options[:tags].gsub(/\s/, ","), :match_all => true, :conditions => options[:conditions] ).merge( :page => page, :per_page => options[:limit], @@ -94,6 +94,19 @@ class Page < ActiveRecord::Base end end + # Is used to compare a node's head with the node's draft + + def has_changes_to? draft + return true unless node == draft.node + return true unless assets == draft.assets + return true unless tag_list == draft.tag_list + return true unless template_name == draft.template_name + return true unless translated_locales.sort_by(&:to_s) == draft.translated_locales.sort_by(&:to_s) + changed = false + translated_locales.each { |locale| I18n.with_locale(locale) { changed = true unless title == draft.title && abstract == draft.abstract && body == draft.body } } + return changed + end + # Instance Methods def public_template_path diff --git a/app/views/admin/index.html.erb b/app/views/admin/index.html.erb index edad1d6..2741db3 100644 --- a/app/views/admin/index.html.erb +++ b/app/views/admin/index.html.erb @@ -1,14 +1,14 @@
- <%= link_to 'Create Update or Pressemitteilung', new_node_path, :only_path => false %> - Continue my work - Add a page in the page tree - <%= link_to("Upload a new asset", new_asset_path, :only_path => false) %> +
<%= link_to 'Create Update or Pressemitteilung', new_node_path, :only_path => false %>
+ + +
<%= link_to("Upload a new asset", new_asset_path, :only_path => false) %>

recent changes my work - current drafts + current drafts (<%= @drafts_count %>) site map

@@ -39,7 +39,7 @@ <%= node.lock_owner.login if node.lock_owner %> - <%= node.draft ? node.draft.revision : node.head.revision %> + <%= link_to ( node.draft ? node.draft.revision : (node.head ? node.head.revision : "EMPTY" ) ), node_revisions_path(node) %> <% end %> @@ -73,7 +73,7 @@ <%= node.lock_owner.login if node.lock_owner %> - <%= node.draft ? node.draft.revision : node.head.revision %> + <%= link_to ( node.draft ? node.draft.revision : (node.head ? node.head.revision : "EMPTY" ) ), node_revisions_path(node) %> <% end %> @@ -107,7 +107,7 @@ <%= node.lock_owner.login if node.lock_owner %> - <%= node.draft ? node.draft.revision : ( node.head ? node.head.revision : "EMPTY" ) %> + <%= link_to ( node.draft ? node.draft.revision : (node.head ? node.head.revision : "EMPTY" ) ), node_revisions_path(node) %> <% end %> @@ -135,7 +135,7 @@ <%= link_to 'create subpage', new_node_path(:parent_id => node.id) %> - <%= link_to ':: Revisions', node_revisions_path(node) %> + <%= link_to 'Revisions', node_revisions_path(node) %> <%= node.lock_owner.login if node.lock_owner %> diff --git a/app/views/content/_featured_articles.html.erb b/app/views/content/_featured_articles.html.erb index 0220abb..c69911f 100644 --- a/app/views/content/_featured_articles.html.erb +++ b/app/views/content/_featured_articles.html.erb @@ -11,7 +11,7 @@ <%= link_to( image_tag( 'chaosradio.png' ), - "http://chaosradio.ccc.de/", + "https://chaosradio.ccc.de/", :id => "chaosradio_icon", :title => "Chaosradio" )%> @@ -25,14 +25,14 @@ <%= link_to( image_tag( 'ds.png' ), - "http://ds.ccc.de/", + "https://ds.ccc.de/", :id => "ds_icon", :title => "Datenschleuder" )%> <%= link_to( image_tag( 'events.png' ), - "http://events.ccc.de/", + "https://events.ccc.de/", :id => "events_icon", :title => "Events Blog" )%> diff --git a/app/views/content/_main_navigation.html.erb b/app/views/content/_main_navigation.html.erb index a984512..2fe8b77 100644 --- a/app/views/content/_main_navigation.html.erb +++ b/app/views/content/_main_navigation.html.erb @@ -3,11 +3,5 @@ <% menu_items.each do |item| %>
  • <%= link_to_path item.title, item.path %>
  • <% end %> -
  • - <%= language_selector %> -
  • -
  • - -
  • diff --git a/app/views/content/_search.html.erb b/app/views/content/_search.html.erb index 9f61042..e654462 100644 --- a/app/views/content/_search.html.erb +++ b/app/views/content/_search.html.erb @@ -1,8 +1,3 @@ <% form_tag search_path, :method => 'get' do %> - - - - - -
    <%= text_field_tag :search_term, params[:search_term] %><%= image_submit_tag("search_button.png") %>
    -<% end %> \ No newline at end of file +
    <%= text_field_tag :search_term, params[:search_term], :placeholder => 'suchen', :type => 'search' %>
    +<% end %> diff --git a/app/views/content/_tags.html.erb b/app/views/content/_tags.html.erb index d33bc10..fd808b6 100644 --- a/app/views/content/_tags.html.erb +++ b/app/views/content/_tags.html.erb @@ -1,3 +1,4 @@ +<% unless @page.tags.empty? %>

    Tags

      @@ -5,4 +6,5 @@
    • <%= link_to tag.name, tag_path(:id => tag.name) %>
    • <% end %>
    -
    \ No newline at end of file + +<% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 915091d..d2a624f 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,11 +1,10 @@ - + - + @@ -19,21 +18,45 @@ <%= auto_discovery_link_tag(:atom, {:locale => :de, :controller => "rss", :action => "updates", :format => :xml}) %> <%= auto_discovery_link_tag(:rss, {:locale => :de, :controller => "rss", :action => "updates", :format => :rdf}) %> + + +
    -