• R/O
  • HTTP
  • SSH
  • HTTPS

feedgenerator: Commit

rubyで構築された、Atom Feedの管理ツールです


Commit MetaInfo

Revision6d1e1cfe3137de3cb22127412787c23e2b8fd4c2 (tree)
Time2013-09-17 23:35:24
AuthorKureha Hisame <kureha@gmai...>
CommiterKureha Hisame

Log Message

- modified PluginManager module.
- modified resize image library.

Change Summary

Incremental Difference

--- a/common.rb
+++ b/common.rb
@@ -62,7 +62,6 @@ class HtmlWriter
6262 end
6363 end
6464
65-
6665 # = Objectクラス
6766 #
6867 # 基本クラスのオーバーライドを行います
--- a/define.rb
+++ b/define.rb
@@ -53,6 +53,13 @@ LOG_DIR = "./logs/"
5353 # 開発用ログを出力するか?
5454 LOG_RELEASE_MODE = false
5555
56+# ファイルマネージャ用設定
57+# サムネイル画像の最大幅(縦・横共通)を指定
58+THUMBS_SIZE = 150
59+# 必要がある場合はrubygems, rmagickのLOADPATHを指定
60+$LOAD_PATH.push("/home/lunardial/local/lib")
61+$LOAD_PATH.push("/home/lunardial/local/lib/ruby/gem/gems/rmagick-2.13.1/lib")
62+
5663 # バージョン情報を示す文字列です
5764 APPVERSION = "- FeedGenerator for Ruby version 4.0.0.0 -<br>Copyright(c) 2009 Kureha.H (<a href=\"http://lunardial.sakura.ne.jp/\" target=\"_blank\">http://lunardial.sakura.ne.jp/</a>) & Yui Naruse (<a href=\"http://airemix.com/\" target=\"_blank\">http://airemix.com/</a>)"
5865 # タイトル領域に表示される文字列です
--- a/feedgenerator.rb
+++ b/feedgenerator.rb
@@ -599,22 +599,25 @@ class FileUploader
599599 end
600600 end
601601
602-# = Pluginクラス
602+# = PluginManagerクラス
603603 #
604604 # プラグインの処理を行うクラスです
605-class FeedGenPluginManager
606- def self.exec(mode, filepath)
605+class PluginManager
606+ def self.exec(mode, module_name, filepath)
607607 feed = Feed.readxml(XMLPATH + filepath)
608608 entries = Entry.readxml(XMLPATH + filepath)
609609 feed.freeze
610610 entries.freeze
611611 Dir.foreach(PLUGINDIR) do |fn|
612- next unless File.extname(fn) == '.rb'
613- require File.join(PLUGINDIR, fn)
614- plugin_name = "FeedGenPlugins::"
615- plugin_name << File.basename(fn).gsub(/\.rb\Z/, "")
616- plugin_ins = plugin_name.split(/::/).inject(Object) { |c,name| c.const_get(name) }
617- plugin_ins.new.exec(mode, feed, entries)
612+ begin
613+ next unless File.extname(fn) == '.rb'
614+ require File.join(PLUGINDIR, fn)
615+ plugin_name = "#{module_name}::"
616+ plugin_name << File.basename(fn).gsub(/\.rb\Z/, "")
617+ plugin_ins = plugin_name.split(/::/).inject(Object) { |c,name| c.const_get(name) }
618+ plugin_ins.new.exec(mode, feed, entries)
619+ rescue
620+ end
618621 end
619622 end
620623 end
@@ -657,7 +660,7 @@ class Controller
657660 params["mode"] = "error"
658661 else
659662 # 成功時はプラグイン処理を実施する
660- FeedGenPluginManager.exec("newentry", File.basename(session["filepath"]))
663+ PluginManager.exec("newentry", "FeedGenPlugins", File.basename(session["filepath"]))
661664 session["info"] = "記事の新規作成が成功しました。"
662665 end
663666 # 画面を戻った際の処理
@@ -694,7 +697,7 @@ class Controller
694697 params["mode"] = "error"
695698 else
696699 # 成功時はプラグイン処理を実施する
697- FeedGenPluginManager.exec("editentry", File.basename(session["filepath"]))
700+ PluginManager.exec("editentry", "FeedGenPlugins", File.basename(session["filepath"]))
698701 session["info"] = "記事の編集が完了しました。"
699702
700703 # 一覧を更新後の内容で更新する。
@@ -729,7 +732,7 @@ class Controller
729732 params["mode"] = "error"
730733 else
731734 # 成功時はプラグイン処理を実施する
732- FeedGenPluginManager.exec("delentry", File.basename(session["filepath"]))
735+ PluginManager.exec("delentry", "FeedGenPlugins", File.basename(session["filepath"]))
733736 session["info"] = "記事の削除に成功しました。"
734737
735738 # 内容を更新する
--- a/filemanager.rb
+++ b/filemanager.rb
@@ -275,6 +275,25 @@ class WebFiler
275275
276276 end
277277
278+# = PluginManagerクラス
279+#
280+# プラグインの処理を行うクラスです
281+class PluginManager
282+ def self.exec(mode, module_name, filename, filepath)
283+ Dir.foreach(PLUGINDIR) do |fn|
284+ begin
285+ next unless File.extname(fn) == '.rb'
286+ require File.join(PLUGINDIR, fn)
287+ plugin_name = "#{module_name}::"
288+ plugin_name << File.basename(fn).gsub(/\.rb\Z/, "")
289+ plugin_ins = plugin_name.split(/::/).inject(Object) { |c,name| c.const_get(name) }
290+ plugin_ins.new.exec(mode, filename, filepath)
291+ rescue
292+ end
293+ end
294+ end
295+end
296+
278297 # = Controllerクラス
279298 #
280299 # コントローラ部分に相当する処理を受け持つクラスです
@@ -319,14 +338,15 @@ class Controller
319338 end
320339
321340 filer.upload(cgi["updata"], upload_filename)
322- # 独自改造 開始
341+
342+ # サムネイル作成開始
323343 if params["thumbs"] == "true" and File.extname(upload_filename) =~ /\.(jpg|JPG|png|PNG)\Z/
324344 begin
325- require('./resize.rb')
345+ require('./plugins/ResizeManager.rb')
326346 if filer.relpath_list.size == 0
327- ResizeManager.create_thumbs(IMGPATH + upload_filename)
347+ ResizeManager::ResizeManager.create_thumbs(IMGPATH + upload_filename)
328348 else
329- ResizeManager.create_thumbs(IMGPATH + filer.relpath_list.join("/") + "/" + upload_filename)
349+ ResizeManager::ResizeManager.create_thumbs(IMGPATH + filer.relpath_list.join("/") + "/" + upload_filename)
330350 end
331351 rescue LoadError
332352 # With no action
@@ -337,18 +357,21 @@ class Controller
337357 end
338358 end
339359 # 独自改造 終了
360+
340361 rescue FileExistedException
341362 session["error"] = "既に同名のファイルが存在します!"
342363 rescue WebSecurityException
343364 session["error"] = "ファイル名に使用できない文字列が含まれています!"
344365 end
366+
367+
345368 else
346369 session["error"] = "ファイルの容量が大きすぎます!"
347370 end
348371
349372 # ファイル一覧を更新
350- Controller.update_session(session, filer);
351-
373+ Controller.update_session(session, filer)
374+
352375 session["info"] = "正常にファイル(#{upload_filename})のアップロードが完了しました。" if session["error"] == ""
353376
354377 # 移動時
--- a/resize.rb
+++ /dev/null
@@ -1,20 +0,0 @@
1-#!/usr/local/bin/ruby
2-# -*- coding: utf-8 -*-
3-
4-THUMBS_SIZE = 150
5-
6-class ResizeManager
7- def self.create_thumbs(fname)
8- $LOAD_PATH.push("/home/lunardial/local/lib")
9- $LOAD_PATH.push("/home/lunardial/local/lib/ruby/gem/gems/rmagick-2.13.1/lib")
10-
11- require 'rubygems'
12- require 'RMagick'
13-
14- img = Magick::Image.read(fname).first
15-
16- img.resize_to_fit!(THUMBS_SIZE, THUMBS_SIZE)
17- thumbs_name = fname.gsub(/#{File.extname(fname)}\Z/, "") + "_thumbs" + File.extname(fname)
18- img.write(thumbs_name)
19- end
20-end
Show on old repository browser