diff --git a/app/assets/javascripts/backbone/views/channel_tabs.js.coffee b/app/assets/javascripts/backbone/views/channel_tabs.js.coffee index ca3cdc9f..74ad2efa 100644 --- a/app/assets/javascripts/backbone/views/channel_tabs.js.coffee +++ b/app/assets/javascripts/backbone/views/channel_tabs.js.coffee @@ -33,8 +33,8 @@ class Kandan.Views.ChannelTabs extends Backbone.View success: (model)-> Kandan.Helpers.Channels.createChannelArea(model) - error: (model)-> - alert("Something went wrong while creating a new Room.\n\nMaybe the room name is already taken?") + error: (model, response)-> + _.each(JSON.parse(response.responseText), alert); }) console.log "create channel: #{channelName}" return false diff --git a/app/models/channel.rb b/app/models/channel.rb index 47f88806..9f7b54e8 100644 --- a/app/models/channel.rb +++ b/app/models/channel.rb @@ -2,7 +2,17 @@ class Channel < ActiveRecord::Base has_many :activities, :dependent => :destroy has_many :attachments, :dependent => :destroy - validates :name, :presence => true, :uniqueness => true + validates :name, :presence => { :message => "Room name cannot be blank"}, :uniqueness => { :message => "Room name is already taken" } + + before_create :ensure_app_max_rooms + + def ensure_app_max_rooms + valid = Setting.my_settings.max_rooms > Channel.count + + self.errors.add(:max_rooms, "This app has reached the maximum number of rooms") unless valid + + valid + end class << self def user_connect(user) diff --git a/app/models/setting.rb b/app/models/setting.rb index beb4d7aa..ded7d6a7 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -28,7 +28,7 @@ def ensure_only_one_settings # Making sure the max_rooms is an integer and is never less than the current number of rooms def validate_max_rooms - self.values[:max_rooms].is_a?(Integer) && self.values[:max_rooms] >= Channel.count unless self.new_record? + self.values[:max_rooms].is_a?(Integer) && self.values[:max_rooms] > 0 && self.values[:max_rooms] >= Channel.count unless self.new_record? end # Making sure the public site is a boolean