Author |
Message |
hicuxunicorniobestbuildpc
The Mouse Is Extension Of Arm
Joined: Aug 13, 2009
Posts: 1123
|
Posted:
Fri Oct 11, 2013 6:29 am |
|
I am not so clear how exactly a javascript has be converted in order to load properly.
I have this file called swfobject.js
Code:function SWFObject(swf, id, w, h, ver, c){
this.params = new Object();
this.variables = new Object();
this.attributes = new Object();
this.setAttribute("id",id);
this.setAttribute("name",id);
this.setAttribute("width",w);
this.setAttribute("height",h);
this.setAttribute("version",ver);
this.setAttribute("swf",swf);
this.setAttribute("classid","clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
this.addParam("bgcolor",c);
}
SWFObject.prototype.addParam = function(key,value){
this.params[key] = value;
}
SWFObject.prototype.getParam = function(key){
return this.params[key];
}
SWFObject.prototype.addVariable = function(key,value){
this.variables[key] = value;
}
SWFObject.prototype.getVariable = function(key){
return this.variables[key];
}
SWFObject.prototype.setAttribute = function(key,value){
this.attributes[key] = value;
}
SWFObject.prototype.getAttribute = function(key){
return this.attributes[key];
}
SWFObject.prototype.getVariablePairs = function(){
var variablePairs = new Array();
for(key in this.variables){
variablePairs.push(key +"="+ this.variables[key]);
}
return variablePairs;
}
SWFObject.prototype.getHTML = function(){
var con = '';
if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
con += '<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
con += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
for(var key in this.params){ con += [key] +'="'+ this.params[key] +'" '; }
var pairs = this.getVariablePairs().join("&");
if (pairs.length > 0){ con += 'flashvars="'+ pairs +'"'; }
con += '/>';
}else{
con = '<object id="'+ this.getAttribute('id') +'" classid="'+ this.getAttribute('classid') +'" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+this.setAttribute("version")+',0,0,0" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
con += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
for(var key in this.params) {
con += '<param name="'+ key +'" value="'+ this.params[key] +'" />';
}
var pairs = this.getVariablePairs().join("&");
if(pairs.length > 0) {con += '<param name="flashvars" value="'+ pairs +'" />';}
con += "</object>";
}
return con;
}
SWFObject.prototype.write = function(elementId){
if(typeof elementId == 'undefined'){
document.write(this.getHTML());
}else{
var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
n.innerHTML = this.getHTML();
}
}
|
I just created in includes/addon folder a file head-jsobject.php and I inserted this code
addJSToHead('includes/js/swfobject.js', 'file');
Is that the only way to do it?.
|
|
|
|
|
nuken
RavenNuke(tm) Development Team
Joined: Mar 11, 2007
Posts: 2024
Location: North Carolina
|
Posted:
Fri Oct 11, 2013 6:54 am |
|
There is some info in the wiki here
[ Only registered users can see links on this board! Get registered or login! ]
You can load the js site wide or module level through the functions introduce in RN 2.4. The js can also be loaded in the head or body depending on what the script requires. There is no conversion required unless you are including it inline, you would need to escape any single quotes in the js. |
_________________ Tricked Out News |
|
|
|
hicuxunicorniobestbuildpc
|
Posted:
Fri Oct 11, 2013 7:45 am |
|
Quote: | you would need to escape any single quotes in the js |
This is what I don't understand!!!! What is the trick. Please give me an example so I can learn. I read the wiki but I don't get it.
I think to create a file in includes/addon/head-example.php is not the best I think 'cause it will always call this file everytime I open the website and other modules. What I want to achieve is user can only call this file when they use the module. |
|
|
|
|
nuken
|
Posted:
Fri Oct 11, 2013 9:27 am |
|
If you want the file added module level, look in the news module. The index.php and article.php both include js and css when the news module is loaded. To escape the single quotes, add \ before the ' to use it in an inline situation.
Code:
this.getAttribute('swf')
would become
this.getAttribute(\'swf\')
or you could use " like this
this.getAttribute("swf")
|
|
|
|
|
|
hicuxunicorniobestbuildpc
|
Posted:
Sat Oct 12, 2013 3:15 am |
|
to add single quotes to the file it is complicated. I really don't know how to do it. Well, I think it is better to call the file in the specific module. I did this
Code:addJSToBody('modules/' . $module_name . '/js/swfobject.js', 'file');
|
I think every single module must load his own javascript so it doesn't load all the time. What do you think is more efficient? |
|
|
|
|
montego
Site Admin
Joined: Aug 29, 2004
Posts: 9457
Location: Arizona
|
Posted:
Sat Oct 12, 2013 8:18 am |
|
|
|
|
nuken
|
Posted:
Sat Oct 12, 2013 8:26 am |
|
If the js only needs to load when the module is called. use it module level. If the js is needed site wide, load it in a file in the addons. |
|
|
|
|
spasticdonkey
RavenNuke(tm) Development Team
Joined: Dec 02, 2006
Posts: 1693
Location: Texas, USA
|
Posted:
Sat Oct 12, 2013 5:04 pm |
|
in terms of single quotes versus double quotes, they are interchangeable in JavaScript.. you should be able to find/replace all single quotes (within a JavaScript) with double quotes without issue. the only exception being if the code has both single and double quotes in it to start with. In that case you would need to escape in double quotes prior to your find/replace
\"
This is unlike php where single/double quotes are processed differently.
Although this is only really necessary if you are using the JavaScript inline in your page. The only reason to do so would be if you need to dynamically insert data into the JavaScript via PHP. It is always preferable to use an external JavaScript file when you can, as it gets cached by the browser and doesn't have to download everytime the page is loaded. |
|
|
|
|
montego
|
Posted:
Sun Oct 13, 2013 8:23 am |
|
... and, I find it much easier to include JS in PHP using PHP's HEREDOC syntax. For example, my own AddThis inclusion was done within my includes/custom_files/custom_head.php file like this (I've masked some data with asterisks '******'):
Code:
/*
* Add new AddThis Layer code
*/
echo <<<_JS_
<!-- AddThis Smart Layers BEGIN -->
<!-- Go to http://www.addthis.com/get/smart-layers to customize -->
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=******"></script>
<script type="text/javascript">
addthis.layers({
'theme' : 'transparent',
'follow' : {
'services' : [
{'service': 'facebook', 'id': 'pages/********/*******'},
{'service': 'twitter', 'id': '********'}
]
},
'whatsnext' : {},
'recommended' : {
'title': 'Recommended for you:'
}
});
</script>
<!-- AddThis Smart Layers END -->
_JS_;
|
Take special NOTE that the end tag (here: "_JS_") can be almost anything you want but the final line MUST be fully left-aligned! |
|
|
|
|
neralex
Site Admin
Joined: Aug 22, 2007
Posts: 1774
|
Posted:
Wed Oct 16, 2013 7:56 am |
|
For me are the functions addJSToHead and addJSToBody the best choice. Its very cool to use and flexible. |
_________________ Github: RavenNuke |
|
|
|
hicuxunicorniobestbuildpc
|
Posted:
Wed Oct 16, 2013 11:55 am |
|
Montego, if I create a file in includes/custom_files/custom_head.php then I get a blank page. |
|
|
|
|
montego
|
Posted:
Sat Oct 19, 2013 9:38 am |
|
Then you have a coding error in custom_head.php... |
|
|
|
|
southern
Client
Joined: Jan 29, 2004
Posts: 624
|
Posted:
Wed Dec 11, 2013 5:28 pm |
|
montego wrote: | ... and, I find it much easier to include JS in PHP using PHP's HEREDOC syntax. For example, my own AddThis inclusion was done within my includes/custom_files/custom_head.php file like this (I've masked some data with asterisks '******'):
Code:
/*
* Add new AddThis Layer code
*/
echo <<<_JS_
<!-- AddThis Smart Layers BEGIN -->
<!-- Go to http://www.addthis.com/get/smart-layers to customize -->
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=******"></script>
<script type="text/javascript">
addthis.layers({
'theme' : 'transparent',
'follow' : {
'services' : [
{'service': 'facebook', 'id': 'pages/********/*******'},
{'service': 'twitter', 'id': '********'}
]
},
'whatsnext' : {},
'recommended' : {
'title': 'Recommended for you:'
}
});
</script>
<!-- AddThis Smart Layers END -->
_JS_;
|
Take special NOTE that the end tag (here: "_JS_") can be almost anything you want but the final line MUST be fully left-aligned! |
How would I put in
Code:
<script type="text/javascript" src="snowstorm.js"></script>
|
for the whole site? I'm a bit confused. |
_________________ Computer Science is no more about computers than astronomy is about telescopes.
- E. W. Dijkstra |
|
|
|
nuken
|
Posted:
Thu Dec 12, 2013 6:30 am |
|
In your themes theme.php file just under the <?php add this:
Code:
addJSToBody('snowstorm.js', 'file');
|
this is assuming the file is located in the root of your site. If not, put the correct path to the js file in. |
|
|
|
|
southern
|
Posted:
Thu Dec 12, 2013 11:56 am |
|
nuken wrote: | In your themes theme.php file just under the <?php add this:
Code:
addJSToBody('snowstorm.js', 'file');
|
this is assuming the file is located in the root of your site. If not, put the correct path to the js file in. |
Just like that? The .js should go in the head, so I should use the form addJSToHead('/scripts/snowstorm.js', 'file');?
Thanks, nuken. |
|
|
|
|
southern
|
Posted:
Thu Dec 12, 2013 12:10 pm |
|
I tried both and the Body works. It is a script from
[ Only registered users can see links on this board! Get registered or login! ]
in case anyone else wants to use it. |
|
|
|
|
hicuxunicorniobestbuildpc
|
Posted:
Fri Dec 13, 2013 2:10 am |
|
Hi southern
1. Open your ftp
2. Open includes/addons/
3. Create a file called body-Storm_Snowing.php and the copy and paste the code below.
Code:<?php
// Storm Snowing 1.0
//This addon has been created by bestbuildpc
if (stristr(htmlentities($_SERVER['PHP_SELF']), 'body-Storm_Snowing.php')) {
Header('Location: ../../index.php');
die();
}
addJSToBody('js/snowstorm.js', 'file');
$inlineJS = '<script type="text/javascript">
$(document).ready(function(){
$(\'#snowStorm\').snowColor : "#99ccff";
$(".nowStorm").flakesMaxActive : "96";
$(".nowStorm").useTwinkleEffect : "true";
});
});
</script>';
addJSToBody($inlineJS , 'inline');
|
4. In the root where mainfile.php create a folder named js and upload your javascript file snowstorm.js
That's all!
|
Last edited by hicuxunicorniobestbuildpc on Fri Dec 13, 2013 9:23 am; edited 1 time in total |
|
|
|
neralex
|
Posted:
Fri Dec 13, 2013 7:56 am |
|
hicuxunicorniobestbuildpc, little questions ... from where you have the variable $contact and why don't you use you added variable $inlineJS? |
|
|
|
|
hicuxunicorniobestbuildpc
|
Posted:
Fri Dec 13, 2013 9:24 am |
|
you are right neralex, I made a little bit mistake. Thanks for the correction!!
|
|
|
|
|
southern
|
Posted:
Fri Dec 13, 2013 2:09 pm |
|
hicuxunicorniobestbuildpc wrote: | Hi southern
1. Open your ftp
2. Open includes/addons/
3. Create a file called body-Storm_Snowing.php and the copy and paste the code below.
Code:<?php
// Storm Snowing 1.0
//This addon has been created by bestbuildpc
if (stristr(htmlentities($_SERVER['PHP_SELF']), 'body-Storm_Snowing.php')) {
Header('Location: ../../index.php');
die();
}
addJSToBody('js/snowstorm.js', 'file');
$inlineJS = '<script type="text/javascript">
$(document).ready(function(){
$(\'#snowStorm\').snowColor : "#99ccff";
$(".nowStorm").flakesMaxActive : "96";
$(".nowStorm").useTwinkleEffect : "true";
});
});
</script>';
addJSToBody($inlineJS , 'inline');
|
4. In the root where mainfile.php create a folder named js and upload your javascript file snowstorm.js
That's all!
|
Just like that. Thanks for simplifying it. |
|
|
|
|
|