Class: Web::Wiki::Request
Overview
:nodoc:
Defined Under Namespace
Classes: Action
Constant Summary collapse
- @@actions =
{}
Instance Attribute Summary collapse
-
#content_template ⇒ Object
Returns the value of attribute content_template.
- #page ⇒ Object
-
#template ⇒ Object
Returns the value of attribute template.
- #vars ⇒ Object
-
#wiki ⇒ Object
Returns the value of attribute wiki.
Class Method Summary collapse
Instance Method Summary collapse
- #download_file(basedir, requested_asset) ⇒ Object
- #handle_request ⇒ Object
-
#initialize(wiki) ⇒ Request
constructor
A new instance of Request.
Constructor Details
#initialize(wiki) ⇒ Request
Returns a new instance of Request.
362 363 364 365 366 367 368 369 370 |
# File 'lib/web/wiki.rb', line 362 def initialize( wiki ) @page = @handled = false @wiki = wiki @template = if (File.basename(Web.script_name || '') == "admin.rb") "admin.html" else "template.html" end end |
Instance Attribute Details
#content_template ⇒ Object
Returns the value of attribute content_template.
360 361 362 |
# File 'lib/web/wiki.rb', line 360 def content_template @content_template end |
#page ⇒ Object
373 374 375 376 377 378 379 380 381 382 383 384 385 386 |
# File 'lib/web/wiki.rb', line 373 def page unless @page @page = self.wiki.load_page unless (Web["revision"] == nil || Web["revision"].empty? || Web["revision"].to_s == "0") history = @page.history revision = history.find{ |p| Web["revision"].to_i == p.revision } revision.history = history @page = revision || @page end end @page end |
#template ⇒ Object
Returns the value of attribute template.
360 361 362 |
# File 'lib/web/wiki.rb', line 360 def template @template end |
#vars ⇒ Object
389 390 391 392 393 394 395 396 |
# File 'lib/web/wiki.rb', line 389 def vars @vars ||= {"page" => self.page, "wiki" => self.wiki, "action" => Web["action"], "baseurl" => Web::Wiki::pref(:baseurl), "resourceurl" => Web::Wiki::pref(:resourceurl), } end |
#wiki ⇒ Object
Returns the value of attribute wiki.
360 361 362 |
# File 'lib/web/wiki.rb', line 360 def wiki @wiki end |
Class Method Details
Instance Method Details
#download_file(basedir, requested_asset) ⇒ Object
473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 |
# File 'lib/web/wiki.rb', line 473 def download_file( basedir, requested_asset ) self.template = nil self.content_template = nil basedir = File.( basedir ) requested_asset = File.( File.join(basedir, requested_asset.gsub( /\\/, "/") ) ) # security check on the requested_asset -- # it must be underneath the basedir if ( requested_asset.index( basedir ) == 0 && \ File.exists?( requested_asset ) ) # deliver the file Web.content_type = Web.get_mime_type( requested_asset ) Web.write File.open(requested_asset, "r" ) { |f| f.read } Web.flush else Web.status = "404"; Web.write "404 File Not Found" Web.flush end end |
#handle_request ⇒ Object
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 |
# File 'lib/web/wiki.rb', line 398 def handle_request cmd = Web["action"] cmd = "default" if cmd.empty? || cmd == "view_revision" cmd = "download_resource" if Web::path_info =~ /^\/resources\// cmd = "default" unless Web::Wiki::pref("allowed_actions").include?(cmd) Request.actions[cmd].call(self) unless @handled Web::config[:load_path] << Web::Wiki::pref("resource_dir") self.vars["content_template"] = self.content_template Web::local.merge!( self.vars ) Web::load( self.template ) if self.template @handled = true end end |