Author Archives: TimL

What it does:

  • When the page loads the buttons are changed to will wait for a calendar entry to be made before submitting the form.

How to do it:

  1. Make your Calendar and Database applications, add at least a text and date element to your Database.
  2. Note the folder id and event type from the Calendar. Note the date and button element ids on the form.
  3. Customize the following sample script accordingly.
  4. Add the script to a rich text element in the form.
<script>
	function init() {
		if(document.location.href.indexOf("MainWindow.po")<0 || document.location.href.indexOf("formHandle")>0 ){
			return;
		}
		document.getElementById("add").type="button";
		document.getElementById("addAnother").type="button";
		top.noodle.cbc.addEventListener(document.getElementById("add"), 'click', doit);
		top.noodle.cbc.addEventListener(document.getElementById("addAnother"), 'click', doit);
	}
	
	function doit() {
		document.getElementById("lowerButtonBar").style.display="none";
		var folder="256272"
		var evetnTypeID="3511";
		var title="Training "+top.noodle.headWindow().document.getElementById("currentUserName").innerHTML;
		var day=document.getElementById("day_220063").value;
		var month=document.getElementById("month_220063").value;
		var year=document.getElementById("year_220063").value;
		month=parseInt(month)-1;
		var vars="";
		vars+="folder="+folder;
		vars+="&eventid=new";
		vars+="&addedRecipients=";
		vars+="&title="+title;
		vars+="&isAllDay=";
		vars+="&isPrivate=";
		vars+="&eventType="+evetnTypeID;
		vars+="&quickSave=Quick Save";
		vars+="&repeat=";
		vars+="&eventColorName=LightBlue";
		vars+="&eventColor=#add8e6";
		vars+="&save=Save";
		vars+="&selMonth="+month;
		vars+="&selDay="+day;
		vars+="&selYear="+year;
		vars+="&startHour=9";
		vars+="&startMinute=00";
		vars+="&am_pm=am";
		vars+="&durationMonth="+month;
		vars+="&durationDay="+day;
		vars+="&durationYear="+year;
		vars+="&durationHour=5";
		vars+="&durationMinute=00";
		vars+="&duration_am_pm=pm";
		vars+="&TimeZone=6";
		vars+="&eventLocation=";
		vars+="&groupsAndUsersList=";
		vars+="&addedGroupsAndUsers=";
		vars+="&endAfterN=1";
		top.noodle.ajax.post("/calendar/HandleEventView.po", vars, handle_doit, []);
		return false;
	}
	
	function handle_doit(xml, txt, array) {
		top.noodle.cbc.removeEventListener(document.getElementById('add'), 'click', doit);
		top.noodle.cbc.removeEventListener(document.getElementById('addAnother'), 'click', doit);
		document.getElementById("lowerButtonBar").style.display="block";
		document.mainform.submit();
	}
	
	window.onload = init;
	
</script>

Some browsers incorrectly cache HTTP 302 "Found/Moved temporarily" and 303 "See Other" redirects as if they were 301 "Permanent Redirect"s.

Safari

The "Too many redirects" error can be temporarily fixed In the "Safari" menu by selecting "Reset Safari".

Chrome/Chromium

Disabling "Use a prediction service to load pages more quickly" is advised.

<script>
function loadjsfile(filename){
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", filename);
  if (typeof fileref!="undefined"){
    document.getElementsByTagName("head")[0].appendChild(fileref);
  }
}
var link=document.getElementById("elementValue_10");
if(link){
    link=link.firstChild;
    if(link){
        link=link.href;
        if(link.length>10){
            link="/feed2js/feed2js.php?targ=y&move=elementValue_10&src="+encodeURI(link);
            loadjsfile(link);
        }
    }
}
</script>

replace elementValue_10 with the id of the RSS feed you want to use from the entry.
This will work on newer browsers:

<script src="/feed2js/feed2js.php?targ=y&move=demo&src=http://my.domain.tld/feed.rss"></script>
<div id="demo"> </div>

Other ways to insert JavaScript here

  1. Press the "Edit" button
  2. Press the "More" button
  3. Press the "Source" button
  4. make a script tag
  5. put your Javascript in it

If you want to use the page re-writer or otherwise effect other pages you will have to escape the scope of the page:

<script>
function temp(){
	if(!top.noodle.custom){
	    top.noodle.custom=function(){
	        var doc=top.noodle.mainWindow().document;
	        var url=doc.location.href;
	        
                //your code here
	        
	    };
	}
}
top.noodle.core.evalString(temp.toString()+";temp();");
</script>

You need custom scripts enabled.

top.document.title = "Intranet";
function titleChange() {
    if(!top.noodle || !top.noodle.core || !top.noodle.core.title){
        setTimeout("titleChange();", 1000);
        return;
    }
    top.noodle.core.title="Intranet";
    top.document.title = top.noodle.core.title;
}
setTimeout("titleChange();", 1000);

This is an example only; if you want to change the title please use "System Tools > Settings > Theme"

If your browser is capable Videos will play in the browser from the folder and Media applications, and from embedded in Pages etc;

<video width="320" height="240" controls>
    <source src="/ShowItemData.po?path=/folder/example.mp4" type="video/mp4">
    <source src="/ShowItemData.po?handle=1&filename=example.ogg" type="video/ogg">
    <source src="//domain.tld/example.webm" type="video/webm">
    Please use a modern browser for video support.
</video>

Tools:

  • ffmpeg can be used to thumbnail and transcode.
    • Noodle will thumbnail images and videos for you.
    • make sure to encode with the "faststart" flag;
      ffmpeg -i in.mp4 -codec copy -movflags +faststart out.mp4
  • MediaInfo can be used to inspect.
    • Verify faststart/IsStreamable;
      mediainfo -f file.mp4 | grep IsStreamable
  • handbrake is a nice GUI for encoding
    • make sure to encode with "web optimized"
  • djpeg + pngtopnm + pnmscale can be used to thumbnail non-progressive jpgs of any size with minimal RAM usage.

List what is available in the enabled repositories on your CentOS Install:
yum info postgresql-server.x86_64 | grep Version
Select a newer version form http://yum.postgresql.org/
yum install http://yum.postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-centos93-9.3-1.noarch.rpm
# if you are using priorities add some to /etc/yum.repos.d/pgdg-93-centos.repo
yum install postgresql93-contrib
service postgresql-9.3 initdb
service postgresql-9.3 start
Directories of interest are:
conf/var/lib/pgsql/9.3/data/
data/var/lib/pgsql/9.3/data/base/

put the following in an announcement widget to make a Noodle Slide Show:

<script>
function SlideShow(){
this.pages=null;
this.page=null;
this.timer=null;
this.ms_to_show_slide=null;
this.init=function(ms){
this.pages=new Array();
this.pages[0]="/OpenFolder.po?folder=2490";
this.pages[1]="/OpenFolder.po?folder=18777264";
this.pages[2]="/OpenFolder.po?folder=18782612";
this.page=0;
this.ms_to_show_slide=60000;
};
this.next=function(){
if(this.page&gt;=(this.pages.length-1)){
this.page=0;
}else{
this.page++;
}
top.document.getElementById("main").src=this.pages[this.page];
};
this.start=function(){
if(top.noodle.slideShow.timer!=null){
alert("The slide show is already running");
}
top.document.getElementById("body").rows="0,0,*";
top.document.getElementById("lowerBody").cols="0,*";
top.noodle.slideShow.timer=top.setInterval("top.noodle.slideShow.next();", top.noodle.slideShow.ms_to_show_slide);
};
this.stop=function(){
if(top.noodle.slideShow.timer==null){
alert("The slide show was not running");
}
top.document.getElementById("body").rows="55,0,*";
top.document.getElementById("lowerBody").cols="220,*";
top.clearInterval(top.noodle.slideShow.timer);
top.noodle.slideShow.timer=null;
};
this.init();
}
top.noodle.slideShow=new SlideShow();
</script>
<input type="button" onclick="top.noodle.slideShow.start();" value="start">
<input type="button" onclick="top.noodle.slideShow.stop();" value="stop">

You can add as many pages as you want just make sure the folder ids are valid and the indexes are sequential from 0.
In the following example the index is 0 and the folder id is 2490.

this.pages[0]="/OpenFolder.po?folder=2490";

you could use any URL as a page

this.pages[1]="http://wwww.google.com";

List what is available in the enabled repositories on your Ubuntu install:
apt-cache search postgresql | grep -P "^postgresql-[0-9\.]+ "
Install the latest version:
R=$(lsb_release -c | perl -pe 's/.*\t//g')
echo "deb http://apt.postgresql.org/pub/repos/apt/ "$R"-pgdg main" > /etc/apt/sources.list.d/pgdg.list
apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get upgrade
P=$(apt-cache search postgresql | grep -P "^postgresql-contrib-[0-9\.]+ " | sort | tail -n 2 | head -n 1 | perl -pe 's/ .*//g')
apt-get install $P
Directories of interest are:
conf/etc/postgresql/9.4/main/
data/var/lib/postgresql/9.4/main/base/