diff --git a/README b/README
index 6844983..76d82c0 100644
--- a/README
+++ b/README
@@ -1,4 +1,5 @@
Bernard Board - version 0.03
+CHANGELOG 0.04 Client and server side form validation.
CHANGELOG 0.03 Complete reimplementation of plugins.
Development Branch
diff --git a/app/controllers/griditems_controller.rb b/app/controllers/griditems_controller.rb
index 74c5396..2be6e57 100644
--- a/app/controllers/griditems_controller.rb
+++ b/app/controllers/griditems_controller.rb
@@ -1,7 +1,10 @@
class GriditemsController < ApplicationController
protect_from_forgery :only => [:index, :create_grid_item]
- # GET /griditems
- # GET /griditems.xml
+
+rescue_from ActionView::TemplateError do |exception|
+ rescue_action(exception.original_exception)
+end
+
def index
@fullscreen = params["fullscreen"]
@load_board = params["load_board"]
diff --git a/app/helpers/griditems_helper.rb b/app/helpers/griditems_helper.rb
index aa58bb2..0441aa0 100644
--- a/app/helpers/griditems_helper.rb
+++ b/app/helpers/griditems_helper.rb
@@ -3,55 +3,10 @@ module GriditemsHelper
require 'uri'
require 'rubygems'
require 'nokogiri'
-
- # Helper implements the nagios plugin
- def nagios(url, username, password, title)
- uri = URI.parse("http://#{url.gsub("http://", "")}")
- http = Net::HTTP.new(uri.host, uri.port)
- color = ""
-
- #Get page from nagios
- request = Net::HTTP::Get.new(uri.request_uri)
-# request.basic_auth 'psy', 'shuChahb'
- request.basic_auth username, password
- response = http.request(request)
- #Parse html response body
- html= Nokogiri::HTML(response.body)
-
- title = title
- #Critical - red
- #Warning - Yellow
- #All good - Green
- html.css('tr').each do |e|
- if e.to_s =~/.*statusEven.*|.*statusOdd.*/
- if e.inner_text =~/.*CRITICAL.*/
- color = "#FF0000"
- elsif e.inner_text =~/.*WARNING.*/ && color != "#FF0000"
- color = "#FFFF00"
- else
- unless (color == "#FFFF00" || color == "#FF0000" )
- color = "#33FF00"
- end
- end
- end
- end
-
- #Circle is defined in /public/stylesheets/bernard.css
- html_response = "
"
- html_response += "
-
-
- <% feed.items.each_with_index do |topic,i| %>
-
+ <%= javascript_tag "update_twitterfeed(#{feed.items.size})"%>
+<% end %>
diff --git a/lib/generators/board_plugin/board_plugin_generator.rb b/lib/generators/board_plugin/board_plugin_generator.rb
index 0f41490..702e3be 100644
--- a/lib/generators/board_plugin/board_plugin_generator.rb
+++ b/lib/generators/board_plugin/board_plugin_generator.rb
@@ -17,7 +17,7 @@ def manifest
m.directory "vendor/plugins/bernard_#{@plugin_name}/lib/javascripts"
m.directory "vendor/plugins/bernard_#{@plugin_name}/lib/stylesheets"
m.directory "vendor/plugins/bernard_#{@plugin_name}/lib/views"
- m.file "lib/javascripts/javascripts.js", "vendor/plugins/bernard_#{@plugin_name}/lib/javascripts/#{@plugin_name}.js"
+ m.template "lib/javascripts/javascripts.js.erb", "vendor/plugins/bernard_#{@plugin_name}/lib/javascripts/#{@plugin_name}.js"
m.file "lib/stylesheets/stylesheets.css", "vendor/plugins/bernard_#{@plugin_name}/lib/stylesheets/#{@plugin_name}.css"
m.file "lib/views/_formfor_plugin.html.erb", "vendor/plugins/bernard_#{@plugin_name}/lib/views/_formfor_#{@plugin_name}.html.erb"
m.file "lib/views/view.html.erb", "vendor/plugins/bernard_#{@plugin_name}/lib/views/_#{@plugin_name}.html.erb"
diff --git a/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js b/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js
deleted file mode 100644
index e5305e4..0000000
--- a/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js
+++ /dev/null
@@ -1 +0,0 @@
-//Your Javascript goes here
diff --git a/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb b/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb
index e170302..4437a5b 100644
--- a/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb
+++ b/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb
@@ -1,4 +1,4 @@
-<% form_remote_tag :html => { :action => url_for(:controller => "griditems", :action =>"create_grid_item"), :id => "form_for"} do %>"
+<% form_remote_tag :html => { :action => url_for(:controller => "griditems", :action =>"create_grid_item"), :id => "form_for"} do %>
Title : <%= text_field_tag "title" %>
Width : <%= text_field_tag "width", "", :size=>4%>
@@ -7,6 +7,6 @@
- <%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "" %>
- <%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => ""%>
+ <%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()" %>
+ <%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()"%>
<% end %>
diff --git a/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb b/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb
index b7658a5..285b977 100644
--- a/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb
+++ b/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb
@@ -10,4 +10,17 @@ namespace :<%= plugin_name.to_sym%> do
system "echo '\n\nSync failed!"
end
end
+ desc "Remove plugin files from Bernard-Board"
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/<%= plugin_name %>"
+ a = system "rm public/javascripts/<%= plugin_name %>.js"
+ a = system "rm public/stylesheets/<%= plugin_name %>.css"
+ if a == true
+ system "echo '\n\n<%= plugin_name %> was removed'"
+ system "echo '\n<%= plugin_name %> source can be deleted from /vendor/plugins/bernard_<%=plugin_name%>' "
+ else
+ system "echo '\n\n<%= plugin_name %> could not be removed'"
+ end
+ end
+
end
diff --git a/public/javascripts/bernard.js b/public/javascripts/bernard.js
index 001a525..692811f 100644
--- a/public/javascripts/bernard.js
+++ b/public/javascripts/bernard.js
@@ -220,25 +220,45 @@ function positionItem(item, x, y){
jQuery(i).offset({top : y, left : x })
}
-//Validate general form fields.
-//Annonymous function is behaving strangely. Return is not terminating function. Look at that.
+//Validate general form fields.
+//Try find a way around using an eval
function validateForm(){
- var returnValue = true;
- jQuery(':input', '#form_for').each(function(){
- if(this.value == ""){
- alert("Please complete all fields.");
- returnValue = false;
- return false;
- }
- });
+ var returnVal = true;
+
+ if(jQuery('#form_for input[name=title]').val() == ""){
+ alert("Title field cannot be empty");
+ returnVal = false;
+ }
+ else if(jQuery('#form_for input[name=height]').val() == ""){
+ alert("Height field cannot be empty");
+ returnVal = false;
+ }
+ else if(jQuery('#form_for input[name=width]').val() == ""){
+ alert("Width field cannot be empty");
+ returnVal = false;
+ }
+ else if (jQuery('#form_for input[name=refresh_rate]').val() == ""){
+ alert("Refresh rate cannot be empty. (If you do not want the plugin to refresh, set rate to 0)");
+ returnVal = false;
+ }
if(isNaN(jQuery('#form_for input[name=width]').val())){
- alert("Width must be a integer value.");
- returnValue = false;
+ alert("Width must be an integer value.");
+ returnVal = false;
}
if(isNaN(jQuery('#form_for input[name=height]').val())){
- alert("Height must be a integer value.");
- returnValue = false;
+ alert("Height must be an integer value.");
+ returnVal = false;
+ }
+ if(isNaN(jQuery('#form_for input[name=refresh_rate]').val())){
+ alert("Refresh Rate must be an integer value.");
+ returnVal = false;
+ }
+
+ if(returnVal != false){
+ returnVal = eval("validate" + jQuery('#type').val() + "();")
}
- return returnValue;
+
+ return returnVal;
+
}
diff --git a/public/javascripts/calendar.js b/public/javascripts/calendar.js
index e5305e4..b90ac00 100644
--- a/public/javascripts/calendar.js
+++ b/public/javascripts/calendar.js
@@ -1 +1,11 @@
-//Your Javascript goes here
+function validateCalendar() {
+ if(jQuery('#form_for input[name=usrname]').val() == ""){
+ alert("Username field cannot be empty");
+ return false;
+ }
+ else if (jQuery('#form_for input[name=passwrd]').val() ==""){
+ alert("Password field cannot be empty");
+ return false;
+ }
+ return true;
+}
diff --git a/public/javascripts/feed.js b/public/javascripts/feed.js
index 25e2e73..27dcb65 100644
--- a/public/javascripts/feed.js
+++ b/public/javascripts/feed.js
@@ -53,3 +53,11 @@ function resizeText(container, currentFeed){
cheight = jQuery("#fontfit"+ currentFeed).height();
}
}
+
+function validateFeed(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("RSS url field cannot be empty");
+ return false;
+ }
+ return true;
+}
diff --git a/public/javascripts/gauge.js b/public/javascripts/gauge.js
index f5d977e..7f3fd84 100644
--- a/public/javascripts/gauge.js
+++ b/public/javascripts/gauge.js
@@ -1,6 +1,19 @@
var gaugeArray = new Object;
google.load('visualization', '1', {packages:['gauge']});
+function validateGauge(){
+ if(jQuery('#form_for input[name=remote]').attr("checked") == true && jQuery('#form_for input[name=url]').val() == ""){
+ alert("Url field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=path]').val() == ""){
+ alert("Path field cannot be empty");
+ return false;
+ }
+ return true;
+}
+
+
function drawChart(_height, _width, value, div, title) {
gaugeArray[div] = new google.visualization.Gauge(document.getElementById(div));
gaugeArray[div]['data'] = new google.visualization.DataTable();
diff --git a/public/javascripts/image.js b/public/javascripts/image.js
index e5305e4..d97e94d 100644
--- a/public/javascripts/image.js
+++ b/public/javascripts/image.js
@@ -1 +1,12 @@
-//Your Javascript goes here
+function validateImage(){
+ if(jQuery('#form_for input[name=remote]').attr("checked") == true && jQuery('#form_for input[name=url]').val() == ""){
+ alert("Url field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=image]').val() == ""){
+ alert("Image Location field cannot be empty");
+ return false;
+ }
+ return true;
+
+}
diff --git a/public/javascripts/nagios.js b/public/javascripts/nagios.js
index e5305e4..d78dd5e 100644
--- a/public/javascripts/nagios.js
+++ b/public/javascripts/nagios.js
@@ -1 +1,16 @@
-//Your Javascript goes here
+function validateNagios(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("Uri field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=username]').val() == ""){
+ alert("Username field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=password]').val() == ""){
+ alert("Password field cannot be empty");
+ return false;
+ }
+
+ return true;
+}
diff --git a/public/javascripts/twitter.js b/public/javascripts/twitter.js
index ed9caed..9e5ab95 100644
--- a/public/javascripts/twitter.js
+++ b/public/javascripts/twitter.js
@@ -1,3 +1,11 @@
+function validateTwitter(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("Feed Uri field cannot be empty");
+ return false;
+ }
+ return true;
+}
+
function update_twitterfeed(size){
jQuery('#twitterfeed0').show();
var feedSize = size;
diff --git a/vendor/plugins/bernard_calendar/lib/calendar.rb b/vendor/plugins/bernard_calendar/lib/calendar.rb
index d6f7612..27c3484 100644
--- a/vendor/plugins/bernard_calendar/lib/calendar.rb
+++ b/vendor/plugins/bernard_calendar/lib/calendar.rb
@@ -2,8 +2,13 @@ module Calendar
require 'gcal4ruby'
def calendar(username, password)
- service = GCal4Ruby::Service.new
- service.authenticate(username, password)
- return service.events
+
+ begin
+ service = GCal4Ruby::Service.new
+ service.authenticate(username, password)
+ return service.events
+ rescue Exception => e
+ return "error"
+ end
end
end
diff --git a/vendor/plugins/bernard_calendar/lib/javascripts/calendar.js b/vendor/plugins/bernard_calendar/lib/javascripts/calendar.js
index e5305e4..b90ac00 100644
--- a/vendor/plugins/bernard_calendar/lib/javascripts/calendar.js
+++ b/vendor/plugins/bernard_calendar/lib/javascripts/calendar.js
@@ -1 +1,11 @@
-//Your Javascript goes here
+function validateCalendar() {
+ if(jQuery('#form_for input[name=usrname]').val() == ""){
+ alert("Username field cannot be empty");
+ return false;
+ }
+ else if (jQuery('#form_for input[name=passwrd]').val() ==""){
+ alert("Password field cannot be empty");
+ return false;
+ }
+ return true;
+}
diff --git a/vendor/plugins/bernard_calendar/lib/views/_calendar.html.erb b/vendor/plugins/bernard_calendar/lib/views/_calendar.html.erb
index 57c127f..3b3dd61 100644
--- a/vendor/plugins/bernard_calendar/lib/views/_calendar.html.erb
+++ b/vendor/plugins/bernard_calendar/lib/views/_calendar.html.erb
@@ -1,6 +1,12 @@
-<% calendar(@parameters["usrname"], @parameters["passwrd"]).each_with_index do |event, i| %>
- <%= event.title %> - <%= event.start_time.strftime("%a %d-%m-%Y %H:%M")%>
-<% end %>
+<% calendar_events = calendar(@parameters["usrname"], @parameters["passwrd"]) %>
+<% if calendar_events =="error" %>
+ <%= javascript_tag "alert('Could not create Calendar item. Incorrect username or password.')"%>
+ <%= javascript_tag "jQuery('##{itemid}').remove();" %>
+<% else %>
+ <% calendar_events.each_with_index do |event, i| %>
+ <%= event.title %> - <%= event.start_time.strftime("%a %d-%m-%Y %H:%M")%>
+ <% end %>
+<%end %>
diff --git a/vendor/plugins/bernard_calendar/lib/views/_formfor_calendar.html.erb b/vendor/plugins/bernard_calendar/lib/views/_formfor_calendar.html.erb
index 2d8cfb3..9c95e05 100644
--- a/vendor/plugins/bernard_calendar/lib/views/_formfor_calendar.html.erb
+++ b/vendor/plugins/bernard_calendar/lib/views/_formfor_calendar.html.erb
@@ -3,7 +3,7 @@
Width : <%= text_field_tag "width", "", :size=>4%>
Height: <%= text_field_tag "height", "", :size=>4%>
User name: <%= text_field_tag "usrname", "", :size=>24 %>
- Password : <%= text_field_tag "passwrd" %>
+ Password : <%= password_field_tag "passwrd" %>
Refresh Rate (in seconds): <%= text_field_tag "refresh_rate" %>
<%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()"%>
<%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()"%>
diff --git a/vendor/plugins/bernard_calendar/tasks/calendar_tasks.rake b/vendor/plugins/bernard_calendar/tasks/calendar_tasks.rake
index 20b46ad..3720a37 100644
--- a/vendor/plugins/bernard_calendar/tasks/calendar_tasks.rake
+++ b/vendor/plugins/bernard_calendar/tasks/calendar_tasks.rake
@@ -9,4 +9,16 @@ namespace :calendar do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/calendar"
+ a = system "rm public/javascripts/calendar.js"
+ a = system "rm public/stylesheets/calendar.css"
+ if a == true
+ system "echo '\n\ncalendar was removed'"
+ system "echo '\ncalendar source can be deleted from /vendor/plugins/bernard_calendar' "
+ else
+ system "echo '\n\ncalendar could not be removed'"
+ end
+ end
end
diff --git a/vendor/plugins/bernard_feed/lib/javascripts/feed.js b/vendor/plugins/bernard_feed/lib/javascripts/feed.js
index 25e2e73..27dcb65 100644
--- a/vendor/plugins/bernard_feed/lib/javascripts/feed.js
+++ b/vendor/plugins/bernard_feed/lib/javascripts/feed.js
@@ -53,3 +53,11 @@ function resizeText(container, currentFeed){
cheight = jQuery("#fontfit"+ currentFeed).height();
}
}
+
+function validateFeed(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("RSS url field cannot be empty");
+ return false;
+ }
+ return true;
+}
diff --git a/vendor/plugins/bernard_feed/lib/views/_formfor_feed.html.erb b/vendor/plugins/bernard_feed/lib/views/_formfor_feed.html.erb
index d5b7024..1bb4fbc 100644
--- a/vendor/plugins/bernard_feed/lib/views/_formfor_feed.html.erb
+++ b/vendor/plugins/bernard_feed/lib/views/_formfor_feed.html.erb
@@ -3,6 +3,7 @@
Width : <%= text_field_tag "width", "", :size=>4%>
Height: <%= text_field_tag "height", "", :size=>4%>
RSS url: <%= text_field_tag "uri", "", :size=>24 %>
+ Refresh Rate: <%= text_field_tag "refresh_rate" %>
<%= hidden_field_tag "refresh_rate", "0" %>
<%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()" %>
<%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()" %>
diff --git a/vendor/plugins/bernard_feed/tasks/feed_tasks.rake b/vendor/plugins/bernard_feed/tasks/feed_tasks.rake
index ee6183f..759ac78 100644
--- a/vendor/plugins/bernard_feed/tasks/feed_tasks.rake
+++ b/vendor/plugins/bernard_feed/tasks/feed_tasks.rake
@@ -9,4 +9,16 @@ namespace :feed do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/feed"
+ a = system "rm public/javascripts/feed.js"
+ a = system "rm public/stylesheets/feed.css"
+ if a == true
+ system "echo '\n\nfeed was removed'"
+ system "echo '\nfeed source can be deleted from /vendor/plugins/bernard_feed' "
+ else
+ system "echo '\n\nfeed could not be removed'"
+ end
+ end
end
diff --git a/vendor/plugins/bernard_gauge/lib/javascripts/gauge.js b/vendor/plugins/bernard_gauge/lib/javascripts/gauge.js
index f5d977e..7f3fd84 100644
--- a/vendor/plugins/bernard_gauge/lib/javascripts/gauge.js
+++ b/vendor/plugins/bernard_gauge/lib/javascripts/gauge.js
@@ -1,6 +1,19 @@
var gaugeArray = new Object;
google.load('visualization', '1', {packages:['gauge']});
+function validateGauge(){
+ if(jQuery('#form_for input[name=remote]').attr("checked") == true && jQuery('#form_for input[name=url]').val() == ""){
+ alert("Url field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=path]').val() == ""){
+ alert("Path field cannot be empty");
+ return false;
+ }
+ return true;
+}
+
+
function drawChart(_height, _width, value, div, title) {
gaugeArray[div] = new google.visualization.Gauge(document.getElementById(div));
gaugeArray[div]['data'] = new google.visualization.DataTable();
diff --git a/vendor/plugins/bernard_gauge/lib/views/_formfor_gauge.html.erb b/vendor/plugins/bernard_gauge/lib/views/_formfor_gauge.html.erb
index 470e5c2..8a30447 100644
--- a/vendor/plugins/bernard_gauge/lib/views/_formfor_gauge.html.erb
+++ b/vendor/plugins/bernard_gauge/lib/views/_formfor_gauge.html.erb
@@ -8,5 +8,5 @@
Path: <%= text_field_tag "path", "", :size=>24 %>
Refresh: <%= text_field_tag "refresh_rate"%>
<%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()" %>
- <%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"} :condition => "validateForm()"%>
+ <%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()"%>
<% end %>
diff --git a/vendor/plugins/bernard_gauge/tasks/gauge_tasks.rake b/vendor/plugins/bernard_gauge/tasks/gauge_tasks.rake
index ba4156e..886e60a 100644
--- a/vendor/plugins/bernard_gauge/tasks/gauge_tasks.rake
+++ b/vendor/plugins/bernard_gauge/tasks/gauge_tasks.rake
@@ -9,4 +9,17 @@ namespace :gauge do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/gauge"
+ a = system "rm public/javascripts/gauge.js"
+ a = system "rm public/stylesheets/gauge.css"
+ if a == true
+ system "echo '\n\ngauge was removed'"
+ system "echo '\ngauge source can be deleted from /vendor/plugins/bernard_gauge' "
+ else
+ system "echo '\n\ngauge could not be removed'"
+ end
+ end
+
end
diff --git a/vendor/plugins/bernard_image/lib/javascripts/image.js b/vendor/plugins/bernard_image/lib/javascripts/image.js
index e5305e4..d97e94d 100644
--- a/vendor/plugins/bernard_image/lib/javascripts/image.js
+++ b/vendor/plugins/bernard_image/lib/javascripts/image.js
@@ -1 +1,12 @@
-//Your Javascript goes here
+function validateImage(){
+ if(jQuery('#form_for input[name=remote]').attr("checked") == true && jQuery('#form_for input[name=url]').val() == ""){
+ alert("Url field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=image]').val() == ""){
+ alert("Image Location field cannot be empty");
+ return false;
+ }
+ return true;
+
+}
diff --git a/vendor/plugins/bernard_image/tasks/image_tasks.rake b/vendor/plugins/bernard_image/tasks/image_tasks.rake
index dc952e0..4e16166 100644
--- a/vendor/plugins/bernard_image/tasks/image_tasks.rake
+++ b/vendor/plugins/bernard_image/tasks/image_tasks.rake
@@ -9,4 +9,16 @@ namespace :image do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/image"
+ a = system "rm public/javascripts/image.js"
+ a = system "rm public/stylesheets/image.css"
+ if a == true
+ system "echo '\n\nimage was removed'"
+ system "echo '\nimage source can be deleted from /vendor/plugins/bernard_calendar' "
+ else
+ system "echo '\n\nimage could not be removed'"
+ end
+ end
end
diff --git a/vendor/plugins/bernard_nagios/lib/javascripts/nagios.js b/vendor/plugins/bernard_nagios/lib/javascripts/nagios.js
index e5305e4..d78dd5e 100644
--- a/vendor/plugins/bernard_nagios/lib/javascripts/nagios.js
+++ b/vendor/plugins/bernard_nagios/lib/javascripts/nagios.js
@@ -1 +1,16 @@
-//Your Javascript goes here
+function validateNagios(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("Uri field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=username]').val() == ""){
+ alert("Username field cannot be empty");
+ return false;
+ }
+ else if(jQuery('#form_for input[name=password]').val() == ""){
+ alert("Password field cannot be empty");
+ return false;
+ }
+
+ return true;
+}
diff --git a/vendor/plugins/bernard_nagios/lib/nagios.rb b/vendor/plugins/bernard_nagios/lib/nagios.rb
index 4d6f633..628f0d4 100644
--- a/vendor/plugins/bernard_nagios/lib/nagios.rb
+++ b/vendor/plugins/bernard_nagios/lib/nagios.rb
@@ -2,22 +2,33 @@ module Nagios
require 'nokogiri'
def nagios(url, username, password, title)
- uri = URI.parse("http://#{url.gsub("http://", "")}")
- http = Net::HTTP.new(uri.host, uri.port)
+ #Check is url is valid.
+ begin
+ uri = URI.parse("http://#{url.gsub("http://", "")}")
+ http = Net::HTTP.new(uri.host, uri.port)
+ rescue Exception => e
+ return "error1"
+ end
color = ""
- #Get page from nagios
+
+ #Authenticate the user.
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth username, password
+ #Get page from nagios
response = http.request(request)
+ if response.inspect =~/.*401.*/
+ return "error2"
+ end
+
#Parse html response body
html= Nokogiri::HTML(response.body)
#Critical - red
- #Warning - Yellow
+ #Warning - Yellow
#All good - Green
html.css('tr').each do |e|
if e.to_s =~/.*statusEven.*|.*statusOdd.*/
- if e.inner_text =~/.*CRITICAL.*/
+ if e.inner_text =~/.*CRITICAL.*/
color = "#FF0000"
elsif e.inner_text =~/.*WARNING.*/ && color != "#FF0000"
color = "#FFFF00"
diff --git a/vendor/plugins/bernard_nagios/lib/views/_formfor_nagios.html.erb b/vendor/plugins/bernard_nagios/lib/views/_formfor_nagios.html.erb
index 5da1d74..d10d8fb 100644
--- a/vendor/plugins/bernard_nagios/lib/views/_formfor_nagios.html.erb
+++ b/vendor/plugins/bernard_nagios/lib/views/_formfor_nagios.html.erb
@@ -4,7 +4,7 @@
Height: <%= text_field_tag "height", "", :size=>4%>
Uri: <%= text_field_tag "uri", "", :size=>24 %>
Nagios User Name : <%= text_field_tag "username"%>
- Nagios Password : <%= text_field_tag "password"%>
+ Nagios Password : <%= password_field_tag "password"%>
Refresh (in seconds): <%= text_field_tag "refresh_rate", "", :size=>10, :id => "height" %>
<%= submit_to_remote "create_grid_item", "Update", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()" %>
<%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()" %>
diff --git a/vendor/plugins/bernard_nagios/lib/views/_nagios.html.erb b/vendor/plugins/bernard_nagios/lib/views/_nagios.html.erb
index e58fded..e877ba6 100644
--- a/vendor/plugins/bernard_nagios/lib/views/_nagios.html.erb
+++ b/vendor/plugins/bernard_nagios/lib/views/_nagios.html.erb
@@ -1,2 +1,10 @@
-<%= nagios(@parameters["uri"], @parameters["username"], @parameters["password"], @title) %>
-
+<% result = nagios(@parameters["uri"], @parameters["username"], @parameters["password"], @title) %>
+<% if result == "error1" %>
+ <%= javascript_tag "alert('Could not create Nagios item. Please check if the url is correct.')"%>
+ <%= javascript_tag "jQuery('##{itemid}').remove();" %>
+<% elsif result == "error2" %>
+ <%= javascript_tag "alert('Could not create Nagios item. Please check if your username and password are correct.')"%>
+ <%= javascript_tag "jQuery('##{itemid}').remove();" %>
+<% else %>
+ <%= result %>
+<% end %>
diff --git a/vendor/plugins/bernard_nagios/tasks/nagios_tasks.rake b/vendor/plugins/bernard_nagios/tasks/nagios_tasks.rake
index 1b3797c..9443601 100644
--- a/vendor/plugins/bernard_nagios/tasks/nagios_tasks.rake
+++ b/vendor/plugins/bernard_nagios/tasks/nagios_tasks.rake
@@ -10,4 +10,17 @@ namespace :nagios do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/nagios"
+ a = system "rm public/javascripts/nagios.js"
+ a = system "rm public/stylesheets/nagios.css"
+ if a == true
+ system "echo '\n\nnagios was removed'"
+ system "echo '\nnagios source can be deleted from /vendor/plugins/bernard_nagios' "
+ else
+ system "echo '\n\nnagios could not be removed'"
+ end
+ end
+
end
diff --git a/vendor/plugins/bernard_twitter/lib/javascripts/twitter.js b/vendor/plugins/bernard_twitter/lib/javascripts/twitter.js
index ed9caed..9e5ab95 100644
--- a/vendor/plugins/bernard_twitter/lib/javascripts/twitter.js
+++ b/vendor/plugins/bernard_twitter/lib/javascripts/twitter.js
@@ -1,3 +1,11 @@
+function validateTwitter(){
+ if(jQuery('#form_for input[name=uri]').val() == ""){
+ alert("Feed Uri field cannot be empty");
+ return false;
+ }
+ return true;
+}
+
function update_twitterfeed(size){
jQuery('#twitterfeed0').show();
var feedSize = size;
diff --git a/vendor/plugins/bernard_twitter/lib/views/_formfor_twitter.html.erb b/vendor/plugins/bernard_twitter/lib/views/_formfor_twitter.html.erb
index 0ce27cb..3f32749 100644
--- a/vendor/plugins/bernard_twitter/lib/views/_formfor_twitter.html.erb
+++ b/vendor/plugins/bernard_twitter/lib/views/_formfor_twitter.html.erb
@@ -1,8 +1,9 @@
<% form_remote_tag :html => { :action => url_for(:controller => "griditems", :action =>"create_grid_item"), :id => "form_for"} do %>
- Following? : <%= text_field_tag "title" %>
+ Title : <%= text_field_tag "title" %>
Width : <%= text_field_tag "width", "", :size=>4%>
Height: <%= text_field_tag "height", "", :size=>4%>
Feed uri: <%= text_field_tag "uri", "", :size=>24 %>
+ Refresh Rate: <%= text_field_tag "refresh_rate"%>
<%= hidden_field_tag "refresh_rate", "0"%>
<%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"}, :condition => "validateForm()" %>
<%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"}, :condition => "validateForm()" %>
diff --git a/vendor/plugins/bernard_twitter/lib/views/_twitter.html.erb b/vendor/plugins/bernard_twitter/lib/views/_twitter.html.erb
index d5cc9de..95b2990 100644
--- a/vendor/plugins/bernard_twitter/lib/views/_twitter.html.erb
+++ b/vendor/plugins/bernard_twitter/lib/views/_twitter.html.erb
@@ -1,19 +1,23 @@
<% feed = get_feed(@parameters["uri"])%>
-
-
-
- <% feed.items.each_with_index do |topic,i| %>
-
+ <%= javascript_tag "update_twitterfeed(#{feed.items.size})"%>
+<% end %>
diff --git a/vendor/plugins/bernard_twitter/tasks/twitter_tasks.rake b/vendor/plugins/bernard_twitter/tasks/twitter_tasks.rake
index fb5ad4a..36377f4 100644
--- a/vendor/plugins/bernard_twitter/tasks/twitter_tasks.rake
+++ b/vendor/plugins/bernard_twitter/tasks/twitter_tasks.rake
@@ -9,4 +9,16 @@ namespace :twitter do
system "echo '\n\nSync failed!"
end
end
+
+ task :remove do
+ a = system "rm -rf app/views/griditems/plugins/twitter"
+ a = system "rm public/javascripts/twitter.js"
+ a = system "rm public/stylesheets/twitter.css"
+ if a == true
+ system "echo '\n\ntwitter was removed'"
+ system "echo '\ntwitter source can be deleted from /vendor/plugins/bernard_twitter' "
+ else
+ system "echo '\n\ntwitter could not be removed'"
+ end
+ end
end