I have been given our intranet site to add a few features too, but I have very little experience with this kind of coding. (The company we had went out of business. Great). We are running a Drupal site and the following is some custom code to display an orange alert bar on the site (ie: Cookies in the lunch room!)
function alert_poll() {
setTimeout(function(){
jQuery.ajax({
url: baseUrl + "intranet/alerts/get",
success: function(data){
alert_setup(data);
},
dataType: "html"
});
}, 60000); // Polling every 60 seconds
}
// Setup
function alert_setup(data) {
jQuery(data).find(".views-row").each(function() {
var alertId = jQuery(this).find(".alert-nid").text();
var alertMsg = "<span class='alert-label'>** ALERT MESSAGE **</span> <span class='alert-msg'>";
alertMsg += jQuery(this).find(".alert-msg").html() + "</span>";
alertMsg += "<a href='#' class='alert-hide'><span>Hide Alert</span></a>";
if ( !jQuery.cookie("scl-alert-" + alertId) ) {
// Loop through all on-page alerts to see if this one is currently on the page already
// if so, don't display
var displayAlert = true;
jQuery(".intranet-alert-wrap").each(function() {
var onpageAlertId = jQuery(this).attr("id");
if ( onpageAlertId.indexOf("-" + alertId) ) { displayAlert = false; }
});
if ( displayAlert ) { inject_alert(alertMsg,alertId); }
}
});
alert_poll(); //Setup the next poll recursively
}
// Drop alert message onto page
function inject_alert(alert_msg,alert_id) {
jQuery("#zone-content").prepend("<div class='intranet-alert-wrap' id='alert-" + alert_id + "' style='opacity:0;'><div class='intranet-alert'>" + alert_msg + "</div></div>");
jQuery(".intranet-alert-wrap").stop().animate( { "opacity": 1}, 700, null, function(){});
}
Now, for the life of me, I can't figure out how to make it call a PHP function. They want it to make the title bar flash when a new alert is posted. I am trying to use this one: http://heyman.info/2010/sep/30/jquery-title-alert/ It works fine in small testing, but when I try to add it to their custom code I run into the following issues:
- I can't just add it to 'alertMsg' as that has a dataType of 'html' and just spits the PHP code out as text.
- I tried using $.post in a few spots and calling a file with the PHP function call, but nothing happened.
- I tried changing dataType to json, but then the alert just doesn't appear. I think there is more I would have to do here, but I have no idea.
- I tried to rewrite the body of the drupal node (in a drupal view) to include the PHP call, but the body will not execute PHP as well. I can't use the header or footer since the body is pulled out directly by the code above.
So, is there something obvious I am missing? I just want this call "$.titleAlert('New Alert');" to occur when a new alert is dropped.
Thanks so much!