У меня на домашней странице установлена музыка, страница не найдена, логово дракона и страница показа пользователя.Я хочу, чтобы музыка перестала воспроизводиться, если я перейду на страницу входа, страницу регистрации или страницу блога.Однако каждый раз, когда я нажимаю на кнопку ссылки, музыка продолжает играть, хотя я больше не на той странице, на которой была музыка.
Кроме того, музыка имеет тенденцию повторяться, когдапользователь нажимает кнопку домашней страницы во второй раз или любой другой.Также, если я переключаюсь с одной музыки на домашней странице на страницу «Драконий ден», музыка на обеих страницах воспроизводится одновременно.
Любые идеи о том, как я могу предотвратить это в ruby на рельсах 5.2.В ruby on rails 3.2 музыка автоматически отключается при переходе на следующую страницу и не зацикливается на себе, даже если щелкнуть ссылку.
Любой совет, как это исправить?
Помощник пользователя
module CusersHelper
private
def displayGreeter(name)
contentFound = Artpage.find_by_name(name)
@artpage = contentFound
end
def displayName(user)
name = ""
if(current_user && (current_user.pouch.privilege == "Admin" || current_user.id == user.id))
name = (user.firstname + " " + user.lastname)
else
name = user.firstname
end
return name
end
def displayBirthday(user)
birthday = ""
if(current_user && (current_user.pouch.privilege == "Admin" || current_user.id == user.id))
birthday = user.birthday.strftime("%B-%d-%Y")
else
birthday = user.birthday.strftime("%B-%d")
end
return birthday
end
def displayVname(user)
vname = ""
if(current_user)
vname = user.vname + " joined on: " + user.joined_on.strftime("%B-%d-%Y")
else
vname = user.vname
end
return vname
end
def playBatVideo
video = ""
if(checkMusicFlag != "On")
control = Webcontrol.find_by_id(1)
if(current_user && current_user.userinfo.videobrowser == "ogv-browser")
video = (video_tag(getMusicOrVideo("Crazybat", control.crazybatogv_url), width: "60%", :loop => true, :autoplay => true))
elsif(current_user && current_user.userinfo.videobrowser == "mp4-browser")
video = (video_tag(getMusicOrVideo("Crazybat", control.crazybatmp4_url), width: "60%", :loop => true, :autoplay => true))
else
video = (video_tag(getMusicOrVideo("Crazybat", control.crazybatogv_url), width: "60%", :loop => true, :autoplay => true))
end
end
return video
end
def playUserMusic(user)
sound = ""
if(checkMusicFlag != "On" && user.userinfo.music_on)
if(user.userinfo.ogg.to_s != "" && user.userinfo.mp3.to_s != "")
if(current_user && current_user.userinfo.audiobrowser == "ogg-browser")
sound = (audio_tag(getMusicOrVideo("User", user), :loop => true, :autoplay => true))
elsif(current_user && current_user.userinfo.audiobrowser == "mp3-browser")
sound = (audio_tag(getMusicOrVideo("User", user), :loop => true, :autoplay => true))
else
sound = (audio_tag(getMusicOrVideo("User", user), :loop => true, :autoplay => true))
end
end
end
return sound
end
def playDragonhoardMusic
sound = ""
if(checkMusicFlag != "On")
dragonhoard = Dragonhoard.find_by_id(1)
if(current_user && current_user.userinfo.audiobrowser == "ogg-browser")
sound = (audio_tag(getMusicOrVideo("Sound", dragonhoard), :loop => true, :autoplay => true))
elsif(current_user && current_user.userinfo.audiobrowser == "mp3-browser")
sound = (audio_tag(getMusicOrVideo("Sound", dragonhoard), :loop => true, :autoplay => true))
else
sound = (audio_tag(getMusicOrVideo("Sound", dragonhoard), :loop => true, :autoplay => true))
end
end
end
def playMaintenanceMusic
sound = ""
if(checkMusicFlag != "On")
control = Webcontrol.find_by_id(1)
if(current_user && current_user.userinfo.audiobrowser == "ogg-browser")
sound = (audio_tag(getMusicOrVideo("Maintenance", control.maintenanceogg_url), :loop => true, :autoplay => true))
elsif(current_user && current_user.userinfo.audiobrowser == "mp3-browser")
sound = (audio_tag(getMusicOrVideo("Maintenance", control.maintenancemp3_url), :loop => true, :autoplay => true))
else
sound = (audio_tag(getMusicOrVideo("Maintenance", control.maintenanceogg_url), :loop => true, :autoplay => true))
end
end
return sound
end
def playMainMusic
sound = ""
if(checkMusicFlag != "On")
control = Webcontrol.find_by_id(1)
criticalMode = Maintenancemode.find_by_id(2)
betaMode = Maintenancemode.find_by_id(3)
grandMode = Maintenancemode.find_by_id(4)
if(current_user && current_user.userinfo.audiobrowser == "ogg-browser")
sound = (audio_tag(getMusicOrVideo("Homepage", control.ogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
if(criticalMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.criticalogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(betaMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.betaogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(grandMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.grandogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
end
elsif(current_user && current_user.userinfo.audiobrowser == "mp3-browser")
sound = (audio_tag(getMusicOrVideo("Homepage", control.mp3_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
if(criticalMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.criticalmp3_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(betaMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.betamp3_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(grandMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.grandmp3_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
end
else
sound = (audio_tag(getMusicOrVideo("Homepage", control.ogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
if(criticalMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.criticalogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(betaMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.betaogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
elsif(grandMode.maintenance_on)
sound = (audio_tag(getMusicOrVideo("Homepage", control.grandogg_url), :controls => true, :hidden => true, :loop => true, :autoplay => true))
end
end
end
return sound
end
def checkMusicFlag
if(cookies[:mute_on].nil?)
condition = "Off"
cookie_lifespan = 2.weeks.from_now.utc
cookies[:mute_on] = {:value => condition, :expires => cookie_lifespan}
else
cookies[:mute_on]
end
end
def getUserPrivilege(user)
if(user.pouch.privilege == "Admin")
value = "@"
else
pouchFound = Pouch.find_by_user_id(user.id)
if(pouchFound)
type = pouchFound.privilege
if(type == "Keymaster")
value = "$"
elsif(type == "Reviewer")
value = "^"
elsif(type == "Beta")
value = "%"
elsif(type == "Banned")
value = "!"
elsif(type == "Trial")
value = "?"
else
value = "~"
end
else
value = "~"
end
end
return value
end
def getUserStatus(status)
allPouches = Pouch.all
#Status value
activatedUsers = allPouches.select{|pouch| pouch.activated && ((pouch.privilege != "Bot" && pouch.privilege != "Trial") && (pouch.privilege != "Admin"))}
onlineUsers = activatedUsers.select{|pouch| !pouch.signed_out_at && (pouch.last_visited && (currentTime - pouch.last_visited) < 30.minutes)}
inactiveUsers = activatedUsers.select{|pouch| !pouch.signed_out_at && (pouch.last_visited && (currentTime - pouch.last_visited) >= 30.minutes)}
offlineUsers = activatedUsers.select{|pouch| (pouch.signed_in_at && pouch.signed_out_at) && !pouch.gone}
goneUsers = activatedUsers.select{|pouch| (pouch.signed_in_at && pouch.signed_out_at) && pouch.gone}
bots = allPouches.select{|pouch| !pouch.activated}
#Count values
onlineCount = onlineUsers.count
inactiveCount = inactiveUsers.count
offlineCount = offlineUsers.count
goneCount = goneUsers.count
botCount = bots.count
value = onlineCount
if(status == "Inactive")
value = inactiveCount
elsif(status == "Offline")
value = offlineCount
elsif(status == "Gone")
value = goneCount
elsif(status == "Bots")
value = botCount
end
return value
end
def newestContent(type)
allContents = ""
#Determines the correct type of content to display
if(type == "Art")
allContents = Art.order("created_on desc")
elsif(type == "Movie")
allContents = Movie.order("created_on desc")
elsif(type == "Sound")
allContents = Sound.order("created_on desc")
elsif(type == "Book")
allContents = Book.order("created_on desc")
else
raise "Invalid content type detected!"
end
reviewedContents = allContents.select{|content| content.reviewed && checkBookgroupStatus(content)}
contents = reviewedContents.take(3)
return contents
end
def checkBookgroupStatus(content)
group = ((content.bookgroup.name == "Peter Rabbit") || (current_user && content.bookgroup.id <= getBookGroups(current_user)))
return group
end
def getMusicOrVideo(type, content)
music = ""
if(current_user)
#Determine if we are looking at a video or audio browser
oggbrowser = (current_user.userinfo.audiobrowser == "ogg-browser")
if(type == "Movie" || type == "Crazybat")
oggbrowser = (current_user.userinfo.videobrowser == "ogv-browser")
end
#Determine if we are looking at a video or audio browser
mp3browser = (current_user.userinfo.audiobrowser == "mp3-browser")
if(type == "Movie" || type == "Crazybat")
mp3browser = (current_user.userinfo.videobrowser == "mp4-browser")
end
#Determines the correct type of content to play
if(oggbrowser)
music = ""
if(type == "User")
music = content.userinfo.ogg_url
elsif(type == "Movie")
music = content.ogv_url
elsif(type == "Sound")
music = content.ogg_url
elsif(type == "Homepage" || "Crazybat" || "Maintenance")
music = content
end
elsif(mp3browser)
music = ""
if(type == "User")
music = content.userinfo.mp3_url
elsif(type == "Movie")
music = content.mp4_url
elsif(type == "Sound")
music = content.mp3_url
elsif(type == "Homepage" || "Crazybat" || "Maintenance")
music = content
end
end
else
#Determines the content to play for guests
music = ""
if(type == "User")
music = content.userinfo.ogg_url
elsif(type == "Movie")
music = content.ogv_url
elsif(type == "Sound")
music = content.ogg_url
elsif(type == "Homepage" || "Crazybat" || "Maintenance")
music = content
end
end
return music
end
def logout_user
if(current_user)
flash[:success] = "Don't worry #{current_user.vname} we will await your return."
resetExpiretime(current_user)
cookies.delete(:remember_token)
self.current_user = nil
else
flash[:error] = "You are already logged out of the system!"
end
end
def logoutExpiredUsers
allUsers = User.order("joined_on desc")
users = allUsers.select{|user| !user.pouch.expiretime.nil? && (currentTime >= user.pouch.expiretime)}
if(users.count > 0)
users.each do |user|
resetExpiretime(user)
end
end
end
def resetExpiretime(user)
userPouch = Pouch.find_by_user_id(user.id)
userPouch.remember_token = "NULL"
userPouch.last_visited = nil
value = currentTime
if(timeExpired)
value = userPouch.expiretime
end
userPouch.signed_out_at = value
userPouch.expiretime = nil
@pouch = userPouch
@pouch.save
end
def timeExpired
#Determines if the user has exceed the time limit
if(current_user)
userPouch = Pouch.find_by_user_id(current_user.id)
if(userPouch && !userPouch.expiretime.nil?)
if(currentTime >= userPouch.expiretime)
return true
else
return false
end
end
else
return false
end
end
def getClock
if(current_user)
clockTime = currentTime.in_time_zone(current_user.country_timezone)
if(current_user.userinfo.militarytime)
clockTime.strftime("%H:%M:%S %Z")
else
clockTime.strftime("%I:%M:%S %p %Z")
end
else
currentTime.strftime("%I:%M:%S %p %Z")
end
end
def currentTime
Time.zone.now
end
def current_user
userPouch = Pouch.find_by_remember_token(cookies[:remember_token])
if(userPouch)
@current_user ||= User.find_by_vname(userPouch.user.vname)
else
@current_user
end
end
def current_user=(user)
@current_user = user
end
end
Помощник пользователя
module UsersHelper
private
def user_params
params.require(:user).permit(:firstname, :lastname, :email, :country,
:country_timezone, :military_time, :birthday, :login_id, :vname,
:password, :password_confirmation)
end
def musicCommons(type)
userFound = User.find_by_id(params[:id])
if(userFound)
if(current_user && current_user.id == userFound.id)
userInfo = Userinfo.find_by_user_id(userFound.id)
if(userInfo.music_on)
userInfo.music_on = false
else
userInfo.music_on = true
end
@userinfo = userInfo
@userinfo.save
redirect_to user_path(@userinfo.user)
end
else
redirect_to crazybat_path
end
end
def showCommons(type)
userFound = User.find_by_vname(params[:id])
if(userFound)
setLastpageVisited
#visitTimer(type, userFound)
#cleanupOldVisits
@user = userFound
if(type == "destroy")
logged_in = current_user
if(logged_in && ((logged_in.id == userFound.id) || logged_in.admin))
adminXorCurrentUser = (logged_in.admin && logged_in.id != userFound.id) || (!logged_in.admin && logged_in.id == userFound.id)
if(adminXorCurrentUser)
allColors = Colorscheme.all
allInfos = Userinfo.all
userColors = allColors.select{|colorscheme| colorscheme.user_id == @user.id}
if(userColors.size != 0)
userColors.each do |colorscheme|
infosToChange = allInfos.select{|userinfo| userinfo.colorscheme_id == colorscheme.id}
if(infosToChange.size != 0)
infosToChange.each do |userinfo|
userinfo.colorscheme_id = 1
@userinfo = userinfo
@userinfo.save
end
end
end
end
@user.destroy
flash[:success] = "#{@user.vname} was successfully removed."
if(logged_in.admin)
redirect_to users_path
else
redirect_to root_path
end
else
flash[:error] = "You cannot delete the main admin account."
redirect_to root_path
end
else
redirect_to root_path
end
end
else
redirect_to crazybat_path
end
end
def editCommons(type)
userFound = User.find_by_vname(params[:id])
if(userFound)
logged_in = current_user
if(logged_in && ((logged_in.id == userFound.id) || logged_in.pouch.privilege == "Admin"))
@user = userFound
if(type == "update")
if(@user.update(user_params))
flash[:success] = "#{@user.vname} was successfully updated."
redirect_to user_path(@user)
else
render "edit"
end
end
else
redirect_to root_path
end
else
render "crazybat"
end
end
def mode(type)
logoutExpiredUsers
if(timeExpired)
logout_user
redirect_to root_path
else
if(type == "index")
logged_in = current_user
if(logged_in && logged_in.pouch.privilege == "Admin")
allUsers = User.order("joined_on desc").page(params[:page]).per(10)
@users = allUsers
else
redirect_to root_path
end
elsif(type == "edit" || type == "update")
#if(current_user && current_user.admin)
# editCommons(type)
#else
allMode = Maintenancemode.find_by_id(1)
userMode = Maintenancemode.find_by_id(5)
if(allMode.maintenance_on || userMode.maintenance_on)
if(allMode.maintenance_on)
#the render section
render "/start/maintenance"
else
render "/users/maintenance"
end
else
editCommons(type)
end
#end
elsif(type == "show" || type == "destroy")
if(current_user && current_user.pouch.privilege == "Admin")
showCommons(type)
else
allMode = Maintenancemode.find_by_id(1)
userMode = Maintenancemode.find_by_id(5)
if(allMode.maintenance_on || userMode.maintenance_on)
if(allMode.maintenance_on)
#the render section
render "/start/maintenance"
else
render "/users/maintenance"
end
else
showCommons(type)
end
end
elsif(type == "music")
if(current_user && current_user.pouch.privilege == "Admin")
musicCommons(type)
else
allMode = Maintenancemode.find_by_id(1)
userMode = Maintenancemode.find_by_id(5)
if(allMode.maintenance_on || userMode.maintenance_on)
if(allMode.maintenance_on)
#the render section
render "/start/maintenance"
else
render "/users/maintenance"
end
else
musicCommons(type)
end
end
end
end
end
end
Раздел входа
<% provide(:h1, "Login") %>
<div class="pageformat">
<p><%= image_tag(@artpage.art_url(:thumb)) %></p>
<p><%= @artpage.message %></p>
</div>
<br>
<div class="pageformat">
<%= form_with(scope: :session, url: loginpost_path) do |f| %>
<p><%= f.label :login_id, "Login Name" %></p>
<p><%= f.password_field :login_id %></p>
<p><%= f.label :password %></p>
<p><%= f.password_field :password %></p>
<p><%= f.submit "Login" %></p>
<% end %>
</div>
<br>
<div class="pageformat">
<p class="formlinks">New User? <%= link_to "Register now!", register_path %></p>
<p class="formlinks">New Account? <%= link_to "Activate now!", activate_path %></p>
<p class="formlinks">Forgot Password? <%= link_to "Forgot Password", recover_path %></p>
<br>
<p class="formlinks"><%= link_to 'Back', root_path %></p>
</div>
Домашняя страница:
<% provide(:h1, "Welcome to Duelingpets #{homepageAlerts}") %>
<p class="centerpagecontent"><%= playMainMusic %></p>
<div class="pageformat">
<% if checkMusicFlag == "On" %>
<p><%= button_to 'Unmute music', muteAudio_path, method: :post, class: "button submitbutton" %></p>
<% else %>
<p><%= button_to 'Mute music', muteAudio_path, method: :post, class: "button submitbutton" %></p>
<% end %>
</div>
<br>
<p class="centerpagecontent"><%= image_tag(displayType("Mascot")) %></p>
<div class="pageformat">
<p><%= gateStatus %></p>
<% if criticalErrors > 0 %>
<br>
<p>Structural Integrity of Server down to 20%. Complete system failure imminent!</p>
<p>Emergency cooling systems are being applied!</p>
<p>Data Integrity down to 30%.</p>
<p>Fire detected on databanks 2, 3, and 4!</p>
<p>Cylinderical skipping on hard drive detected!</p>
<p>Liquid coolent leaking detected on databanks 7, 9, and 10!</p>
<p>Shutting off power to banks 7, 9 and 10!</p>
<p>Free hard drive space down to 5%.</p>
<p>Ram space is being over run!</p>
<p>Shutting down background processes to relieve ram issues!</p>
<p>CPU Processor 1 has completely failed!</p>
<p>Relocating processes to Emergency CPUs 5, 6, and 7.</p>
<p>CPU Processor 3 is nearing failure!</p>
<p>Initiating shutdown of Processor 3!</p>
<% end %>
</div>