die musterdenker

PHP und OXID Seminare/Workshops der anzido GmbH

Tags: , , ,

Fast jeder kann PHP, aber nur wenige richtig. Wenn es um den professionellen Einsatz der defacto Standardsprache im Web geht, treten schnell Lücken zu Tage. Dagegen etwas zu unternehmen, hat sich die anzido GmbH auf die Fahnen geschrieben und die anzido-akademie ins Leben gerufen. Dort werden zu günstigen Preisen PHP Seminare für Einsteiger und Fortgeschrittene angeboten. Zielgruppe scheinen mir, ob des günstigen Preises, auch Privatpersonen zu sein. 2 Tage Seminar sind schon für um die 350€ buchbar. Durch die langjährige Erfahrung der anzido Jungs ist zu erwarten das die Qualität darunter nicht leiden wird. Langfristig ist sogar eine regelrechte Ausbildung zu PHP Entwickler geplant die sich über ein Jahr erstrecken, und professionelle PHP Entwickler hervorbringen soll, mehr dazu auf urbans Blog.

Neben den PHP Seminaren nutzt die anzido GmbH auch ihre Erfahrung als langjähriger OXID Partner und bietet Seminare an zum Thema OXID eShop. Interessant ist hier vor allem die Anwenderschulung für die Open Source CE (Communitiy Edition) womit jetzt auch Shopbetreiber der Open Source Lösung einen guten Einstieg erhalten.

Rails 2.2, Active_Scaffold and FCKEditor

Tags: , ,

In one of our upcomming Projects we are using Active_Scaffold for Backend Functionality. Therefore we want to integrate the FCKEditor. We are using the actual Version of the FCKEditor Plugin for Rails.  To integrate the FCKEditor with Active_Scaffold i was following this Tutorial. But it seems that this  does not run with Rails 2.2.

We´ve got the following error:

1
2
3
NoMethodError (undefined method `configure' for #):
    /vendor/plugins/active_scaffold/lib/active_scaffold/config/core.rb:147:in `method_missing'
    /vendor/plugins/active_scaffold/lib/active_scaffold.rb:57:in `active_scaffold'

This was happen right after the instgallation of the FCKEditor Pugin so i was diggin deeper into the Problem. It comes out that the problem was the overwrite of the javascript_include_tag in the fckeditor.rb. My solution was to comment the hole module out.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Fckeditor
module Fckeditor
  PLUGIN_NAME = 'fckeditor'
  PLUGIN_PATH = "#{RAILS_ROOT}/vendor/plugins/#{PLUGIN_NAME}"
  PLUGIN_PUBLIC_PATH = "#{PLUGIN_PATH}/public"
  PLUGIN_CONTROLLER_PATH = "#{PLUGIN_PATH}/app/controllers"
  PLUGIN_VIEWS_PATH = "#{PLUGIN_PATH}/app/views"
  PLUGIN_HELPER_PATH = "#{PLUGIN_PATH}/app/helpers"
 
  module Helper
    def fckeditor_textarea(object, field, options = {})
      var = instance_variable_get("@#{object}")
      if var
        value = var.send(field.to_sym)
        value = value.nil? ? "" : value
      else
        value = ""
        klass = "#{object}".camelcase.constantize
        instance_variable_set("@#{object}", eval("#{klass}.new()"))
      end
      id = fckeditor_element_id(object, field)
 
      cols = options[:cols].nil? ? '' : "cols='"+options[:cols]+"'"
      rows = options[:rows].nil? ? '' : "rows='"+options[:rows]+"'"
 
      width = options[:width].nil? ? '100%' : options[:width]
      height = options[:height].nil? ? '100%' : options[:height]
 
      toolbarSet = options[:toolbarSet].nil? ? 'Default' : options[:toolbarSet]
 
      if options[:ajax]
        inputs = "
<input id="#{id}_hidden" name="#{object}[#{field}]" type="hidden" />\n" &lt;&lt;
                 "<textarea id="#{id}" name="#{id}">#{value}</textarea>\n"
      else
        inputs = "<textarea id="#{id}" name="#{object}[#{field}]">#{value}</textarea>\n"
      end
 
      js_path = "#{ActionController::Base.relative_url_root}/javascripts"
      base_path = "#{js_path}/fckeditor/"
      return inputs &lt;&lt;
        javascript_tag("var oFCKeditor = new FCKeditor('#{id}', '#{width}', '#{height}', '#{toolbarSet}');\n" &lt;&lt;
                       "oFCKeditor.BasePath = \"#{base_path}\"\n" &lt;&lt;
                       "oFCKeditor.Config['CustomConfigurationsPath'] = '#{js_path}/fckcustom.js';\n" &lt;&lt;
                       "oFCKeditor.ReplaceTextarea();\n")
    end
 
    def fckeditor_form_remote_tag(options = {})
      editors = options[:editors]
      before = ""
      editors.keys.each do |e|
        editors[e].each do |f|
          before += fckeditor_before_js(e, f)
        end
      end
      options[:before] = options[:before].nil? ? before : before + options[:before]
      form_remote_tag(options)
    end
 
    def fckeditor_remote_form_for(object_name, *args, &amp;proc)
      options = args.last.is_a?(Hash) ? args.pop : {}
      concat(fckeditor_form_remote_tag(options), proc.binding)
      fields_for(object_name, *(args &lt;&lt; options), &amp;proc)
      concat('
 
', proc.binding)
    end
    alias_method :fckeditor_form_remote_for, :fckeditor_remote_form_for
 
    def fckeditor_element_id(object, field)
      id = eval("@#{object}.id")
      "#{object}_#{id}_#{field}_editor"
    end
 
    def fckeditor_div_id(object, field)
      id = eval("@#{object}.id")
      "div-#{object}-#{id}-#{field}-editor"
    end
 
    def fckeditor_before_js(object, field)
      id = fckeditor_element_id(object, field)
      "var oEditor = FCKeditorAPI.GetInstance('"+id+"'); document.getElementById('"+id+"_hidden').value = oEditor.GetXHTML();"
    end
  end
end
 
#include ActionView
#module ActionView::Helpers::AssetTagHelper
#  alias_method :rails_javascript_include_tag, :javascript_include_tag
#
#  #  &lt;%= javascript_include_tag :defaults, :fckeditor %&gt;
#  def javascript_include_tag(*sources)
#    main_sources, application_source = [], []
#    if sources.include?(:fckeditor)
#      sources.delete(:fckeditor)
#      sources.push('fckeditor/fckeditor')
#    end
#    unless sources.empty?
#      main_sources = rails_javascript_include_tag(*sources).split("\n")
#      application_source = main_sources.pop if main_sources.last.include?('application.js')
#    end
#    [main_sources.join("\n"), application_source].join("\n")
#  end
#end

The second Step was to include the needed Javascript Files on top of our layout file:

1
2
    <%= javascript_include_tag "fckeditor/fckeditor" %>
    <%= javascript_include_tag "fckcustom" %>

Now the FCKEditor works smoothly with Active_Scaffold. We will show the rest of the Integration with Active_Scaffold in one of our next Posts.

© 2009 die musterdenker. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.