<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ladysign Dev Blog &#187; opensource</title>
	<atom:link href="http://www.ladysign-apps.com/blog/category/code/opensource/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ladysign-apps.com/blog</link>
	<description>Girls can code.</description>
	<lastBuildDate>Mon, 12 Dec 2011 16:58:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mash-ups with YQL</title>
		<link>http://www.ladysign-apps.com/blog/code/javascript/mash-ups-with-yql/</link>
		<comments>http://www.ladysign-apps.com/blog/code/javascript/mash-ups-with-yql/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 11:00:32 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[YUI Library]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[corizon]]></category>
		<category><![CDATA[mash-ups]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://www.ladysign-apps.com/blog/?p=923</guid>
		<description><![CDATA[<h5>&#8230;and why Corizon mashups suck.</h5>
<p><strong>Difficulty:</strong> 2 out of 5 stars<br />
It was because of working with Corizon that I became more interested in creating Mas[......]</p><p class='read-more'><a href='http://www.ladysign-apps.com/blog/code/javascript/mash-ups-with-yql/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<h5>&#8230;and why Corizon mashups suck.</h5>
<p><strong>Difficulty:</strong> 2 out of 5 stars<br />
It was because of working with Corizon that I became more interested in creating Mash-ups*.<br />
During the last 2 years, I&#8217;ve seen a lot of mash-up tools, From the easy (&#8221;Lego-like&#8221;) Popfly from Microsoft which is recently discontinued, to large handy API&#8217;s or serverside Java frameworks; such as the nice but heavy <a title="SiteMesh" href="http://www.opensymphony.com/sitemesh/" id="i2v4">SiteMesh</a> framework.<br />
But it was the <a href="http://www.corizon.com/">Corizon mash-up</a> toolkit that I started to realize, coding mash-ups can have it&#8217;s ups and downs.</p>
<p>In my opinion creating a mash-up should be easy &amp; fast. Not buggy and heavy (running 2 or 3 Tomcat servers in the background *kuch*). Also it&#8217;s an unwritten rule that for a mash-up you should not first destroy and rebuild it&#8217;s components before you gonna mix them up. This means you can only mash-up content what&#8217;s in your maintenance and when one of your components changes, your mash-up is broken.<br />
It&#8217;s not a wonder that I became extremely positive about YQL, when I first saw this working.<br />
And now, after <a href="http://www.fronteers.nl">Fronteers 2009</a>, where I had a presentation and talk with <a href="http://icant.co.uk">Chris Heilmann</a> from Yahoo.</p>
<p>With YQL (Yahoo Query Language), you can make the same mash-ups, client or serverside and you don&#8217;t need thousands lines of code.<br />
<b>Why you should use YQL for a mash-up?</b></p>
<ul>
<li>You won’t use your own bandwidth, but the bandwidth from Yahoo.</li>
<li>It’s easy, just the basic SQL knowledge is required.</li>
<li>It’s lightweight.</li>
<li>It’s fast.</li>
</ul>
<p>But like every Mashup tool, there are also downside&#8217;s. So it&#8217;s good to consider:</p>
<p><b>Why you shouldn&#8217;t use YQL for a mash-up?</b></p>
<ul>
<li>When one of the including components is slow or has timeouts, you result object will be <strong>null</strong>.</li>
</ul>
<h5>Mash-ups with YQL</h5>
<p>Ok enough with the theory. Let&#8217;s practice with a simple YQL mash-up. As you might know, I like videogames. So I want to have a website with the release dates of games on my website, which I can watch on YouTube. Fokzine Games (<a href="http://games.fok.nl/overzicht.php?action=release">http://games.fok.nl/overzicht.php?action=release</a>) has a nice game release list.</p>
<ul>
<li>For using this tutorial, you will need a Yahoo Developer Account, which you can create for free. </li>
<li>Unless you like to write full XPath lines without any help,<br />
you’ll also need <a title="Mozilla Firefox" href="http://www.mozilla-europe.org/nl/firefox/" id="me3x">Mozilla Firefox</a> browser with the <a title="Firebug" href="https://addons.mozilla.org/en-US/firefox/addon/1843" id="f_1b">Firebug</a> plugin installed.</li>
</ul>
<ol>
<li><b>Register your Yahoo Dev account.</b><br />
Go to the below URL, register your Yahoo account and login<br />
to the YQL console:&nbsp;<a href="http://developer.yahoo.com/yql/console/" target="_blank">http://developer.yahoo.com/yql</a>
</li>
<li><b>Query the content.</b><br />
YQL is quite similar to SQL. To query content (the videogame<br />
release list) from an external website, I will select all the HTML nodes from an URL. With Xpath I can point to the part of the website I will need. (Now you’ll need Firebug, inspect the website, till you’ll reach the table tag of the release list. – In top of your Firebug screen, you will see the full Xpath line.<br />
– Just right click, and “Copy Xpath”. This will be your YQL query for selecting the table tag on Fok.nl Game Release Page:</p>
<pre class="brush: sql; title: ;">
select * from html where url ='http://games.fok.nl/overzicht.php?action=release' and xpath ='//*[@id=&quot;itemtext&quot;]'
//or select the tr tag on Fok.nl Game Release page
//(note that I removed “tbody” from the xpath line to make it work)
select * from html where url ='http://games.fok.nl/overzicht.php?action=release' and xpath ='/html/body/div[4]/table/tr/td[2]/div[2]/div/table/tr'
</pre>
<p>Hit enter (or press “Test”) and you can switch between formatted view or tree view to see the result. Result can be in XML of JSON.<br />
Also note that you can copy the REST URL Query, from the console:<br />
<strong><br />
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20&#8242;http%3A%2F%2Fgames.fok.nl%2Foverzicht.php%3Faction%3Drelease&#8217;%20and%20xpath%20%3D%20&#8242;%2Fhtml%2Fbody%2Fdiv%5B4%5D%2Ftable%2Ftr%2Ftd%5B2%5D%2Fdiv%5B2%5D%2Fdiv%2Ftable%2Ftr&#8217;&amp;format=xml<br />
</strong><br />
<img src="yql.jpg" alt="YQL Console" />
</li>
<li>
<b>How the retrieved XML looks like:</b></p>
<pre class="brush: xml; title: ;">&lt;query xmlns:yahoo=&quot;http://www.yahooapis.com/v1/base.rng&quot;yahoo:count=&quot;50&quot; yahoo:created=&quot;2009-09-25T12:14:12Z&quot;yahoo:lang=&quot;en-US&quot; yahoo:updated=&quot;2009-09-25T12:14:12Z&quot;
yahoo:uri=&quot;http://query.yahooapis.com/v1/yql?q=select+*+from+html+where+url+%3D+%27http%3A%2F%2Fgames.fok.nl%2Foverzicht.php%3Faction%3Drelease%27+and+xpath+%3D+%27%2Fhtml%2Fbody%2Fdiv%5B4%5D%2Ftable%2Ftr%2Ftd%5B2%5D%2Fdiv%5B2%5D%2Fdiv%2Ftable%2Ftr%27&quot;&gt;
&lt;diagnostics&gt;
&lt;publiclyCallable&gt;true&lt;/publiclyCallable&gt;
&lt;url execution-time=&quot;263&quot; proxy=&quot;DEFAULT&quot;&gt;&lt;![CDATA[http://games.fok.nl/overzicht.php?action=release]]&gt;&lt;/url&gt;
&lt;user-time&gt;272&lt;/user-time&gt;
&lt;service-time&gt;263&lt;/service-time&gt;
&lt;build-version&gt;3130&lt;/build-version&gt;
&lt;/diagnostics&gt;
&lt;results&gt;
 &lt;tr bgcolor=&quot;#E0E0E0&quot;&gt;
  &lt;td&gt;
   &lt;img alt=&quot;PC&quot; src=&quot;http://images.fok.nl/ads/games/IB_PC.png&quot;/&gt;
  &lt;/td&gt;
  &lt;td&gt;
   &lt;p&gt;29-09-2009&lt;/p&gt;
  &lt;/td&gt;
  &lt;td&gt;
   &lt;a class=&quot;invisiblelink&quot; href=&quot;gameinfo.php?gameid=9985&quot;&gt;Tales of Monkey Island episode 3&lt;/a&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
  ..
&lt;/results&gt;
&lt;/query&gt;</pre>
<p><b>How your JSON (Javascript object looks like:</b></p>
<pre class="brush: jscript; title: ;">releaseList({
 &quot;query&quot;:{
 &quot;count&quot;:&quot;50&quot;,
 &quot;created&quot;:&quot;2009-09-25T12:10:17Z&quot;,
 &quot;lang&quot;:&quot;en-US&quot;,
 &quot;updated&quot;:&quot;2009-09-25T12:10:17Z&quot;,
 &quot;uri&quot;:&quot;http://query.yahooapis.com/v1/yql?q=select+*+from+html+where+url+%3D+%27http%3A%2F%2Fgames.fok.nl%2Foverzicht.php%3Faction%3Drelease%27+and+xpath+%3D+%27%2Fhtml%2Fbody%2Fdiv%5B4%5D%2Ftable%2Ftr%2Ftd%5B2%5D%2Fdiv%5B2%5D%2Fdiv%2Ftable%2Ftr%27&quot;,
 &quot;diagnostics&quot;:{
  &quot;publiclyCallable&quot;:&quot;true&quot;,
  &quot;url&quot;:{
   &quot;execution-time&quot;:&quot;28&quot;,
   &quot;proxy&quot;:&quot;DEFAULT&quot;,
   &quot;content&quot;:&quot;http://games.fok.nl/overzicht.php?action=release&quot;
  },
 &quot;user-time&quot;:&quot;36&quot;,
 &quot;service-time&quot;:&quot;28&quot;,
 &quot;build-version&quot;:&quot;3130&quot;
 },
&quot;results&quot;:{
 &quot;tr&quot;:[{
 &quot;bgcolor&quot;:&quot;#E0E0E0&quot;,
 &quot;td&quot;:[.. ]
 }
..
 ]
}}});</pre>
</li>
<li><b>Use the YQL widget.</b><br />
Create a new HTML page. In this page, you&#8217;ll include the YQL JS Widget:<br />
<a href="http://github.com/sh1mmer/dotnet-yql-tutorial/blob/master/yql_js_widget.js" target="_blank">http://github.com/sh1mmer/dotnet-yql-tutorial/blob/master/yql_js_widget.js</a><br />
This is a pre-made Javascript widget. If you check out the links on the end of this article, you can check out other implementations as well. (Such as Dojo-YQL or JQuery YQL).<br />
For this article, we will use vanilla Javascript.</li>
<li><b>Create the Mash-up.</b><br />
The only think what you&#8217;ll need now is the logic to implement the previous made YQL query, to have the YQL results in your Document Object Model (DOM).<br />
With the Firebug plug-in, you can check the &#8220;Net&#8221; tab, to see if the correct object is retrieved. You can walk through the results, and implement it in your Javascript to do fancy things with it.</li>
<pre class="brush: xml; title: ;">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;YQL - Game Release&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;yql-js-widget.js&quot; &gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var config = {};
var format = '&lt;li class=&quot;{td[0].img.alt}&quot;&gt;{td[1].p} - &lt;a href=&quot;http://games.fok.nl/{td[2].a.href}&quot; target=&quot;_blank&quot;&gt;{td[2].a.content}&lt;/a&gt; - &lt;a href=&quot;http://www.youtube.com/results?search_query={td[2].a.content}&quot; target=&quot;_blank&quot;&gt;Watch on YouTube&lt;/a&gt;&lt;/li&gt;';
var gameQuery = &quot;select * from html where url = 'http://games.fok.nl/overzicht.php?action=release' and xpath = '/html/body/div[4]/table/tr/td[2]/div[2]/div/table/tr'&quot;;
yqlWidget.push(gameQuery, config, format, &quot;widgetContainer&quot;);
yqlWidget.render();
&lt;/script&gt;&lt;ul id=&quot;widgetContainer&quot;&gt;&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Well that&#8217;s it. See how easy it is to create a nice Mash-up? As long as you can reach the DOM, you can mash-up everything. Below my article, I&#8217;ve written some nice links. If you liked my article or you would like to discuss with me about YQL or Mash-up technologies; feel free to add me on <a title="LinkedIn" href="http://www.linkedin.com/in/leeboonstra" id="a93_">LinkedIn</a> or <a title="Twitter" href="http://twitter.com/ladysign" id="e:f5">Twitter</a>.</p>
<ul>
<li>YQL Community:<a href="http://github.com/yql/" target="_blank"> http://github.com/yql/</a></li>
<li>YQL video by Jonathan LeBlanc: <a href="http://developer.yahoo.com/yui/theater/video.php?v=leblanc-yql" target="_blank">http://developer.yahoo.com/yui/theater/video.php?v=leblanc-yql</a></li>
</ul>
<h6>* In webdevelopment, a mashup is a web page or application that combines<br />
data or functionality from two or more external sources to create a new<br />
service. An example of a Mash-up is a Google Map combined with Wikipedia<br />
town information and a (accuweather.com) Weather indicator.</h6>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ladysign-apps.com/blog/code/javascript/mash-ups-with-yql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aptana 1.5 and SVN 1.6.x</title>
		<link>http://www.ladysign-apps.com/blog/code/opensource/aptana-1-5-and-svn-1-6-x/</link>
		<comments>http://www.ladysign-apps.com/blog/code/opensource/aptana-1-5-and-svn-1-6-x/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 12:40:53 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[subclipse]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://ladysign-apps.com/blog/?p=877</guid>
		<description><![CDATA[<p><strong>Difficulty:</strong> 2 out of 5 stars</p>
org.tigris.subversion.javahl.ClientException - svn: Unable to open an ra_local session to URL svn: Unable to open reposit[......]<p class='read-more'><a href='http://www.ladysign-apps.com/blog/code/opensource/aptana-1-5-and-svn-1-6-x/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Difficulty:</strong> 2 out of 5 stars</p>
<pre class="brush: jscript; title: ;">org.tigris.subversion.javahl.ClientException - svn: Unable to open an ra_local session to URL svn: Unable to open repository 'file:///D:/SvnData/Repositories/Project' svn: Expected FS format between '1' and '3'; found format '4'</pre>
<p>Got a similair error exception in Aptana?</p>
<p>When you install <a href="http://www.aptana.org/studio/download">Aptana 1.5</a> version, you&#8217;ll notice that the included Subclipse plugin is 1.4.x.</p>
<p>With Subversion 1.6.x. installed on your system, the Subclipse plugin in Aptana won&#8217;t work. Since Subversion client &#038; Subclipse (&#038; for example Tortoise SVN), all need to be from the same version.<br />
So the solution is to upgrade Supclipse to 1.6.x.<br />
However it bugged me, to do so.<br />
Here is the complete solution:</p>
<ol>
<li>Verify Aptana 1.4.x version: In Aptana click:<br />
<strong>Help > About Aptana Studio > Installation Details</strong><br />
Subclipse 1.4.x. should be in this installed sofware list.<br />
Shutdown Aptana.
</li>
<li>Go to your installation folder of Aptana, for example:<br />
C:\Program Files\Aptana\
</li>
<li>In the features folder, remove all the folders and jars with subversion or subclipse in the file name:<br />
<strong>C:\Program Files\Aptana\features\</strong>
</li>
<li>In the plugin folder, remove all the folders and jars with subversion or subclipse in the file name:<br />
<strong>C:\Program Files\Aptana\plugins\</strong>
</li>
<li>From now, there is no Subclipse installed in your Aptana. Let&#8217;s install 1.6.x.<br />
In Aptana click: <strong>Help > Install New Software</strong>
</li>
<li>Add the following software site, and name it &#8216;Subclipse&#8217;: <strong>http://subclipse.tigris.org/update_1.6.x</strong></li>
<li>Select the &#8220;Core SVN Kit&#8221; and &#8220;Subclipse&#8221; checkboxes, and press &#8220;Next&#8221;</li>
<li><em>Incase you&#8217;ll get the following error: &#8220;The operation cannot be completed.  See the details.&#8221;;<br />
uncheck: &#8220;Subclipse Integration for Mylyn&#8230; &#8220;</em></li>
<li><em>Incase you&#8217;ll have problems with &#8220;Accepting the agreements&#8221;, because the &#8220;Finish&#8221; button does not appear after checking &#8220;agree&#8221;. Retry the above 3 steps, but make sure, you uncheck the Mylyn on the first window (&#8221;Available software&#8221;), instead of pressing &#8220;Next&#8221; first.</em></li>
<li>Restart Aptana &#038; Done! Your SVN should work right now. To verify Aptana 1.6.x version, repeat step 1.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ladysign-apps.com/blog/code/opensource/aptana-1-5-and-svn-1-6-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SVN on a USB Stick</title>
		<link>http://www.ladysign-apps.com/blog/code/opensource/svn-on-a-usb-stick/</link>
		<comments>http://www.ladysign-apps.com/blog/code/opensource/svn-on-a-usb-stick/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 18:01:09 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[flash drive]]></category>
		<category><![CDATA[mobile svn]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[usb stick]]></category>
		<category><![CDATA[versioning]]></category>

		<guid isPermaLink="false">http://ladysign-apps.com/blog/archives/863</guid>
		<description><![CDATA[<p><strong>Difficulty:</strong> 1 out of 5 stars<br />
Toirtoise SVN, is a SVN version control client for windows.<br />
The handy thing about SVN, is that you can work with your who[......]</p><p class='read-more'><a href='http://www.ladysign-apps.com/blog/code/opensource/svn-on-a-usb-stick/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Difficulty:</strong> 1 out of 5 stars<br />
Toirtoise SVN, is a SVN version control client for windows.<br />
The handy thing about SVN, is that you can work with your whole team on certain files,<br />
and always can track the correct version of it.<br />
Normally you would install SVN on a server, so your whole team can access it.<br />
But when you don&#8217;t have a team? You still want to track your file versions, but a whole<br />
server is not required. You can also use your USB stick!<br />
Here is how it works. (Though I require a USB stick with enough space, incase you want to carry multiple/large projects with you.)</p>
<ol>
<li>
<b>Download and install subversion</b><br />
<a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100">http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100</a>
</li>
<li>
<b>Download and install Tortoise SVN for windows:</b><br />
<a href="http://sourceforge.net/projects/tortoisesvn/files/Application/1.6.5/TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi/download">http://sourceforge.net/projects/tortoisesvn/files/Application/1.6.5/TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi/download</a>
</li>
<li>
<b>Create a new repository</b><br />
Create a folder using Windows Explorer, let&#8217;s say it&#8217;s called D:\Repositories\Standard. (Note that in this case I called the project &#8220;Standard&#8221;,<br />
but you can use whatever you want.)<br />
This folder should be located on your USB Drive, because this is the part that you&#8217;ll be dragging around with you.<br />
Open that folder and right click on the client area, select TortoiseSVN and then Create repository here. Choose the native file system option.
</li>
<li>
<b>Create a working copy</b><br />
Right click on the My Documents folder (or any folder of your choosing), and select SVN Checkout from the popup menu.<br />
In this example, I&#8217;ve called the repository that I created in step 2 Standard.<br />
In the URL of repository field, fill in a URL that points to the newly created repository, i.e. file:///F:/Repositories/Standard.<br />
(Make sure you are pointing to the correct drive. In my case the USB stick is F:)<br />
A window should pop up stating that it has completed at revision 0.
</li>
<li><b>Use it</b><br />
Now go into your recently checked out folder, and right click on them and from the TortoiseSVN menu, select Add.<br />
This command will mark the files for addition to the repository.<br />
To complete the add, right on the client area and select SVN Commit. This will add all the files marked for addition to the repository and commit new versions of files already in the repository.
</li>
</ol>
<p>So that&#8217;s all, you&#8217;ll now have a SVN Repo on your USB drive, which you can cary arround.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ladysign-apps.com/blog/code/opensource/svn-on-a-usb-stick/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joomla plugin&#8217;s &#8211; copying, fixing or creating them</title>
		<link>http://www.ladysign-apps.com/blog/code/php/joomla-plugins-copying-fixing-or-creating-them/</link>
		<comments>http://www.ladysign-apps.com/blog/code/php/joomla-plugins-copying-fixing-or-creating-them/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 15:23:58 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[create your own Joomla plugin module]]></category>
		<category><![CDATA[creating own Joomla plugins]]></category>
		<category><![CDATA[fixing plugins]]></category>
		<category><![CDATA[installing Joomla modules]]></category>
		<category><![CDATA[installing Joomla plugins]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://ladysign-apps.com/blog/?p=834</guid>
		<description><![CDATA[<p><strong>Difficulty:</strong> 3 out of 5 stars<br />
<b>It happens to me, every now and then.<br />
I&#8217;m working on a great Joomla site and I need that module or plugin which I u[......]</b></p><p class='read-more'><a href='http://www.ladysign-apps.com/blog/code/php/joomla-plugins-copying-fixing-or-creating-them/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Difficulty:</strong> 3 out of 5 stars<br />
<b>It happens to me, every now and then.<br />
I&#8217;m working on a great Joomla site and I need that module or plugin which I used on one of my previous project.</p>
<p>Bad luck! I lost the installation zip and the plugin is not available online anymore.<br />
Though you can not install it now via the Joomla Installation manager I can get the module or plugin working.</b></p>
<p>Let&#8217;s say we have a plugin called: myPlugin (type=system), I had it installed on Joomla website X.<br />
I need to install this plugin on Joomla website Y. I can copy from X the files to Y, that&#8217;s no big deal. However, the Joomla manager does not recognize your new transfered files.</p>
<p>With my below logics, you can get a broken plugin to work in Joomla. Or even create your own plugins!</p>
<ul>
<li>Copy the myPlugin.php and myPlugin.xml from the plugin/system/ folder of server X.  (Note the folder &#8217;system&#8217;, in my case the plugin type is called &#8217;system&#8217;)</li>
<li>Open up the myPlugin.xml file. If you don&#8217;t have the xml file anymore, so only the php file, it&#8217;s still fine.<br />
You can create the XML file by yourself. It should have the same file name as the PHP file, but with XML extension.</p>
<p>Usually the xml file should look something like this:</p>
<pre class="brush: xml; title: ;">&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;system&amp;quot;&amp;gt;
    &amp;lt;name&amp;gt;System - MyPlugin&amp;lt;/name&amp;gt;
    &amp;lt;author&amp;gt;Leee Boonstra&amp;lt;/author&amp;gt;
    &amp;lt;creationDate&amp;gt;August 2009&amp;lt;/creationDate&amp;gt;
    &amp;lt;copyright&amp;gt;(C) 2009 Lee Boonstra&amp;lt;/copyright&amp;gt;
    &amp;lt;license&amp;gt;GNU/GPL&amp;lt;/license&amp;gt;
    &amp;lt;authorEmail&amp;gt;mailadres@mail.com&amp;lt;/authorEmail&amp;gt;
    &amp;lt;authorUrl&amp;gt;http://www.ladysign.nl&amp;lt;/authorUrl&amp;gt;
    &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;
    &amp;lt;description&amp;gt;The description of myPlugin&amp;lt;/description&amp;gt;
    &amp;lt;files&amp;gt;
        &amp;lt;filename plugin=&amp;quot;myPlugin&amp;quot;&amp;gt;myPlugin.php&amp;lt;/filename&amp;gt;
    &amp;lt;/files&amp;gt;
    &amp;lt;languages&amp;gt;
	&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;language/en-GB/en-GB.plg_system_myPlugin.ini&amp;lt;/language&amp;gt;
    &amp;lt;/languages&amp;gt;
    &amp;lt;params addpath=&amp;quot;/plugins/system&amp;quot;&amp;gt;
	&amp;lt;param name=&amp;quot;myPluginFormField&amp;quot; type=&amp;quot;text&amp;quot; size=&amp;quot;20&amp;quot; label=&amp;quot;PARAM_LABEL_FORMFIELD&amp;quot; default=&amp;quot;&amp;quot; description=&amp;quot;PARAM_DESC_FORMFIELD&amp;quot;/&amp;gt;
 &amp;lt;/params&amp;gt;
&amp;lt;/install&amp;gt;</pre>
</li>
<p>In this case myPlugin contains a form with a field: myPluginFormField, which will be a parameter used in the actual myPlugin.php file).<br />
Now copy both files over to server of Joomla website Y.
</li>
<li>Within the XML file you can see in which folder the language files are stored.  (see the language tag).<br />
You can look up the language files on the server of Joomla Website X and copy them over to the same path on the server of website Y.<br />
Incase you don&#8217;t have the language files, you can create your own. (Unless you don&#8217;t care to read uppercase-code-labels in your Administration<br />
panel instead of real translations.)</p>
<p>en-GB.plg_system_myPlugin.ini</p>
<pre class="brush: jscript; title: ;">PARAM_LABEL_FORMFIELD=Form Field
PARAM_DESC_FORMFIELD=Please fill in some text.</pre>
</li>
<li>After copying over all the required files, you will notice that the plugin is not visible in your Joomla plugin manager.<br />
So how to proceed?</p>
<p>Well Joomla stores the installed plugin information in your database! Knowing this, it&#8217;s not so hard to enable your plugin.<br />
Open your database structure for website X in for example phpMyAdmin.<br />
Open the plugins table (jos_plugins).</li>
<li>Export the row of the to be copied plugin: (myPlugin).<br />
It&#8217;s also possible to write this SQL by yourself, it should look like this:</p>
<pre class="brush: sql; title: ;">INSERT INTO `jos_plugins` (`id`, `name`, `element`, `folder`, `access`, `ordering`, `published`, `iscore`, `client_id`, `checked_out`, `checked_out_time`, `params`) VALUES
(37, 'System - MyPlugin', 'myPlugin', 'system', 0, 0, 1, 0, 0, 0, '0000-00-00 00:00:00', 'myPluginFormField=\n');</pre>
<p>(In my database the parameter myPluginFormField has no value stored yet.)
</li>
<li>Before running the above SQL query on the database of server Y, make sure that the table prefix (&#8217;jos_&#8217;) is similar to server Y. Also the &#8216;id&#8217; number is an increment to the id number of the last jos_plugin table row on database of server Y.</li>
<li>That did the trick. Open your plugin manager in Joomla Admin panel, and you can see that the plugin is finally visible and enabled.
</ul>
<p>Now when you know my above logics, you can understand that creating your own plugins in Joomla is not that hard at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ladysign-apps.com/blog/code/php/joomla-plugins-copying-fixing-or-creating-them/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mootools and jQuery conflicts in Joomla 1.5</title>
		<link>http://www.ladysign-apps.com/blog/code/javascript/mootools-jquery-conflicts-in-joomla-1-5/</link>
		<comments>http://www.ladysign-apps.com/blog/code/javascript/mootools-jquery-conflicts-in-joomla-1-5/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 11:52:07 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[conflicts]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[template head]]></category>

		<guid isPermaLink="false">http://ladysign-apps.com/blog/?p=780</guid>
		<description><![CDATA[<p><strong>Difficulty:</strong> 2 out of 5 stars</p>
<p>Yes, Mootools and jQuery can conflict each other, when you load both on your page.<br />
Ofcourse, they can use same method nam[......]</p><p class='read-more'><a href='http://www.ladysign-apps.com/blog/code/javascript/mootools-jquery-conflicts-in-joomla-1-5/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Difficulty:</strong> 2 out of 5 stars</p>
<p>Yes, Mootools and jQuery can conflict each other, when you load both on your page.<br />
Ofcourse, they can use same method names, therefore one of both could break.<br />
In my case, I received in Joomla 1.5 errors for removing handlers.</p>
<p>See, I&#8217;m a fan of jQuery, that doesn&#8217;t say that I dislike MooTools, but when you create a nice Template for Joomla 1.5 and you decide to use jQuery, the hell breaks open when implementing:</p>
<pre class="brush: xml; title: ;">&lt;jdoc:include type=&quot;head&quot; /&gt;</pre>
<p>This, is because Joomla 1.5 uses MooTools and Caption javascript frameworks, for the backend admin panel, but also some components may require it.<br />
In this case I would say, fuck it. &#8211; I want to have my own choice of which framework I would like to use.<br />
So stick together with jQuery and wrote the following lines in the top of my index.php template:</p>
<pre class="brush: php; title: ;">$headerstuff = $this-&gt;getHeadData();
$headerstuff['scripts'] = array();
$this-&gt;setHeadData($headerstuff);</pre>
<p>Goodbye MooTools and Caption frameworks. &#8211; My conflicts are solved!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ladysign-apps.com/blog/code/javascript/mootools-jquery-conflicts-in-joomla-1-5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

