<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		
		<title>Developer Garden Blog</title>
		<link>http://www.developergarden.com/</link>
		<description>News from the Developer Garden</description>
		<language>en</language>
		<image>
			<title>Developer Garden Blog</title>
			<url>http://www.developergarden.com/typo3conf/ext/tt_news/ext_icon.gif</url>
			<link>http://www.developergarden.com/</link>
			<width>18</width>
			<height>16</height>
			<description>News from the Developer Garden</description>
		</image>
		<generator>TYPO3 - get.content.right</generator>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		
		
		
		<lastBuildDate>Thu, 22 Aug 2013 07:03:00 +0200</lastBuildDate>
		
		
		<item>
			<title>TECHTALK: DLNA - DIGITALES HOME ENTERTAINMENT MADE EASY? | JANUARY, 12 2012 BERLIN</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=712&#38;cHash=e14e19ec643fcbcfbc2fb8735008e115</link>
			<description>The central task of the DLNA is to control and further develop the DLNA standard, which is intended to ensure that different types of equipment from different manufacturers are mutually compatible. Jens Georg, developer at Openismus Berlin, explains in his lecture what exactly is behind the DLNA standard, what the UPnP (Universal Plug and Play) protocols stands for and why DLNA is still needed in spite of UPnP. The event begins at 7 pm. Attendanc</description>
			<content:encoded><![CDATA[<div><div style="padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; font-size: 12px; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: Verdana, sans-serif; -webkit-background-size: cover; background-size: cover; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; "><div style="font-size: 12px; "><p style="font-size: 14px; ">Digital home entertainment only begins to be real fun when all the machines at home harmonize with one another and – for instance – it’s no problem to show films and photos from your PC on the TV – quickly and without any error messages. But that is easier said than done.&nbsp;</p>
<p style="font-size: 14px; ">For this reason, since 2003 more than 240 companies in the consumer electronics area and the IT and telecommunications industry have joined forces under the&nbsp;<span style="font-size: 14px; border-style: initial; border-color: initial; "><a href="http://www.dlna.org/home" title="Öffnet externen Link in neuem Fenster" target="_blank" class="external-link-new-window" >Digital Living Network Alliance</a></span>, DLNA for short.&nbsp;<br />The central task of the DLNA is to control and further develop the DLNA standard, which is intended to ensure that different types of equipment from different manufacturers are mutually compatible.</p>
<p style="font-size: 14px; "><span style="font-size: 14px; border-style: initial; border-color: initial; "><br /><a href="http://jensge.org/" title="Öffnet externen Link in neuem Fenster" target="_blank" class="external-link-new-window" >Jens Georg</a></span>, developer at&nbsp;<span style="font-size: 14px; border-style: initial; border-color: initial; "><a href="http://www.openismus.com/" title="Öffnet externen Link in neuem Fenster" target="_blank" class="external-link-new-window" >Openismus&nbsp;</a></span>Berlin, explains in his lecture what exactly is behind the DLNA standard, what the UPnP (Universal Plug and Play) protocols stands for and why DLNA is still needed in spite of UPnP.<br />He provides insights on the technological aspects of DLNA and the certification process and discusses where DLNA gained its somewhat poor reputation, and where the repeated incompatibilities come from between devices that have actually been certified.<br />In addition, Jens reports on the adventure of implementing a closed specification like DLNA as a FOSS project.</p>
<p style="font-size: 14px; ">The talk will not over-indulge in source codes, and will be in German.</p>
<p style="font-size: 14px; ">The event will take place at c-base spacestation&nbsp;– in the heart of Berlin. &nbsp;You can register with a formless e-mail to&nbsp;<span style="font-size: 14px; border-style: initial; border-color: initial; "><a href="javascript:linkTo_UnCryptMailto('jxfiql7qbzeqxihXabsbilmbodxoabk+zlj');" title="Anmeldung TechTalk DLNA" class="mail" >techtalk@<span style="display:none;">remove-this.</span>developergarden.com</a></span>&nbsp;by January 11, 2012 at the latest. The event begins at 7 pm. Attendance is free and drinks and snacks are provided.</p></div><div style="font-size: 12px; "></div><div style="font-size: 12px; "><p style="font-size: 14px; "><b style="font-size: 14px; "><br />The facts in brief:<br /></b><b style="font-size: 14px; ">What&nbsp;</b>| TechTalk: DLNA - Digital home entertainment made easy?<br /><b style="font-size: 14px; ">When&nbsp;</b>| January 12, 2012, 7 pm (closing date: January 11, 2012)<br /><b style="font-size: 14px; ">Where&nbsp;</b>| c-base, Rungestr. 20, 10170 Berlin<br /><b style="font-size: 14px; ">How&nbsp;</b>| Presentation + discussion, networking &amp; buffet</p></div><div style="font-size: 12px; "></div><div style="font-size: 12px; "><p style="font-size: 14px; "><br />You will find the video of the talk on our&nbsp;<span style="font-size: 14px; border-style: initial; border-color: initial; "><a href="http://www.youtube.com/user/DeveloperGarden" title="Öffnet externen Link in neuem Fenster" target="_blank" class="external-link-new-window" >Developer Garden&nbsp;YouTube Channel</a></span>&nbsp;afterwards.</p></div><div style="font-size: 12px; "></div><div style="font-size: 12px; "><p style="font-size: 14px; "><br />Looking forward to seeing you guys at c-base on Thursday!</p></div></div><p><br />Further information:&nbsp;<a href="http://www.developergarden.com/index.php?id=1164" class="internal-link" >DLNA&nbsp;TechTalk details</a></p>
<p>&nbsp;</p></div><div></div>]]></content:encoded>
			
			
			<pubDate>Mon, 02 Jan 2012 14:49:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>How to develop a TYPO3 extension based on the Conference Call API</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=702&#38;cHash=ba4fc295bbcdda88b16e662adcd10774</link>
			<description>The conference call API is the most complex API of the Developer Garden portfolio. There is a total of 20 REST methods. You can create telephone conferences with up to 15 people using the API. There are ad-hoc conferences that start immediately as well as planned conferences. During a conference, for example, participants can be added or removed.AJAX technology is required to develop a good conference call plug-in.
In the previous article on sen</description>
			<content:encoded><![CDATA[<p>The conference call API is the most complex API of the Developer Garden portfolio. There is a total of 20 REST methods. You can create telephone conferences with up to 15 people using the API. There are ad-hoc conferences that start immediately as well as planned conferences. During a conference, for example, participants can be added or removed.AJAX technology is required to develop a good conference call plug-in.</p>
<p>In the previous article on sending SMS texts, we also showed you how a simple extension can be created. You can use the &quot;Kickstarter&quot; extension again, but this time – instead of the &quot;/src/sendsms/ folder – you copy the &quot;/src/conferencecall/&quot; folder to the &quot;lib&quot; folder. You need the &quot;jQuery&quot; library for the AJAX functionality and also need to copy it in the &quot;lib&quot;. </p>
<p>The second step is creating the &quot;eId&quot; script.&quot;eId&quot; means &quot;Extension Id&quot; and this script can be called up with &quot;www.example.com?eID=keyword&quot;. Calling up this script interrupts the normal rendering process, which is why the pure JSON or XML data can be output.</p>
<p>To register a new keyword, write it in &quot;ext_localconf.php&quot;:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$TYPO3_CONF_VARS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'FE'</span><span style="color:BlueViolet; ">][</span><span style="color:grey; ">'eID_include'</span><span style="color:BlueViolet; ">][</span><span style="color:grey; ">'conferencecall'</span><span style="color:BlueViolet; ">]</span> <span style="color:BlueViolet; ">=</span> <span style="color:grey; ">'EXT:conferencecall/pi1/tx_conferencecall_eId.php'</span><span style="color:BlueViolet; ">;</span></pre>
<p> The keyword &quot;conferencecall&quot; is now connected to the script &quot;tx_conferencecall_eId.php&quot;.</p>
<p>The file &quot;tx_conferencecall_eId.php&quot; does not need to contain any PHP classes, but only a simple script. At the beginning of the file, you write:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:blue; "><b>if</b></span> <span style="color:BlueViolet; ">(</span>!defined <span style="color:BlueViolet; ">(</span><span style="color:grey; ">'PATH_typo3conf'</span><span style="color:BlueViolet; ">))</span> <span style="color:blue; "><b>die</b></span> <span style="color:BlueViolet; ">(</span><span style="color:grey; ">'Access denied.'</span><span style="color:BlueViolet; ">);</span></pre>
<p>And add SDK:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:blue; "><b>require_once</b></span><span style="color:BlueViolet; ">(</span>dirname<span style="color:BlueViolet; ">(</span><span style="color:blue; "><b>__FILE__</b></span><span style="color:BlueViolet; ">)</span> . <span style="color:grey; ">'/../lib/sdk/conferencecall/client/ConferenceCallClient.php'</span><span style="color:BlueViolet; ">);</span><br /><span style="color:blue; "><b>require_once</b></span><span style="color:BlueViolet; ">(</span>dirname<span style="color:BlueViolet; ">(</span><span style="color:blue; "><b>__FILE__</b></span><span style="color:BlueViolet; ">)</span> . <span style="color:grey; ">'/../lib/sdk/conferencecall/data/ConferenceCallStatusConstants.php'</span><span style="color:BlueViolet; ">);</span></pre>
<p>The POST variable &quot;command&quot; will represent the SDK's functions.&quot;0&quot; will mean CreatateConference(), &quot;1&quot; also means CreatateConference(), but only for the planned conferences and &quot;2&quot; calls up AddParticipant(), etc.</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:blue; "><b>switch</b></span><span style="color:BlueViolet; ">(</span><span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'command'</span><span style="color:BlueViolet; ">]) {</span><br /> &nbsp;&nbsp;<span style="color:blue; "><b>case</b></span> <span style="color:orange; ">0</span>:<br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green; ">// Creates Ad Hoc conference</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$createConferenceResponse</span> <span style="color:BlueViolet; ">=</span> <span style="color:blue; "><b>null</b></span><span style="color:BlueViolet; ">;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue; "><b>try</b></span> <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$createConferenceResponse</span> <span style="color:BlueViolet; ">=</span> <span style="color:midnightblue; ">$client</span><span style="color:BlueViolet; ">-&gt;</span>createConference<span style="color:BlueViolet; ">(</span><span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'ownerID'</span><span style="color:BlueViolet; ">]</span>, <span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'name'</span><span style="color:BlueViolet; ">]</span>, <span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'description'</span><span style="color:BlueViolet; ">]</span>, <span style="color:blue; "><b>null</b></span>, <span style="color:blue; "><b>null</b></span>, <span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'duration'</span><span style="color:BlueViolet; ">]</span>, <span style="color:midnightblue; ">$_POST</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'joinConfirm'</span><span style="color:BlueViolet; ">]</span>, <span style="color:blue; "><b>null</b></span>, <span style="color:blue; "><b>null</b></span><span style="color:BlueViolet; ">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue; "><b>if</b></span><span style="color:BlueViolet; ">(!(</span><span style="color:midnightblue; ">$createConferenceResponse</span><span style="color:BlueViolet; ">-&gt;</span>getStatus<span style="color:BlueViolet; ">()</span><span style="color:BlueViolet; ">-&gt;</span>getStatusConstant<span style="color:BlueViolet; ">() ==</span> ConferenceCallStatusConstants<span style="color:BlueViolet; ">::</span>SUCCESS<span style="color:BlueViolet; ">)) {</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$errorMessage</span> <span style="color:BlueViolet; ">=</span> <span style="color:midnightblue; ">$createConferenceResponse</span><span style="color:BlueViolet; ">-&gt;</span>getStatus<span style="color:BlueViolet; ">()-&gt;</span>getStatusDescriptionEnglish<span style="color:BlueViolet; ">();</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw <span style="color:blue; "><b>new</b></span> Exception<span style="color:BlueViolet; ">(</span><span style="color:midnightblue; ">$errorMessage</span><span style="color:BlueViolet; ">);</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">}</span> <span style="color:blue; "><b>else</b></span> <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$a</span> <span style="color:BlueViolet; ">=</span> <span style="color:blue; "><b>Array</b></span> <span style="color:BlueViolet; ">(</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'Status'</span> <span style="color:BlueViolet; ">=&gt;</span> <span style="color:orange; ">1</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'ConfId'</span> <span style="color:BlueViolet; ">=&gt;</span> <span style="color:midnightblue; ">$createConferenceResponse</span><span style="color:BlueViolet; ">-&gt;</span>getConferenceId<span style="color:BlueViolet; ">()<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /> &nbsp;&nbsp;&nbsp;&nbsp;}</span> <span style="color:blue; "><b>catch</b></span><span style="color:BlueViolet; ">(</span>Exception <span style="color:midnightblue; ">$e</span><span style="color:BlueViolet; ">) {</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$a</span> <span style="color:BlueViolet; ">=</span> <span style="color:blue; "><b>Array</b></span> <span style="color:BlueViolet; ">(</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'Status'</span> <span style="color:BlueViolet; ">=&gt;</span> <span style="color:orange; ">0</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'ConfId'</span> <span style="color:BlueViolet; ">=&gt;</span> <span style="color:orange; ">0</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">);<br /> &nbsp;&nbsp;&nbsp;&nbsp;}</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue; "><b>break</b></span><span style="color:BlueViolet; ">;</span><br /> }</pre>
<p>Since the Telekom client is created in the eId script, the Developer Center login data (user name and password) must be transferred in this script.You can do this with a TYPO3 session. In the &quot;main&quot; function of the &quot;tx_conferencecall_pi1.php&quot; file, you write:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>fe_user<span style="color:BlueViolet; ">]-&gt;</span>setKey<span style="color:BlueViolet; ">(</span><span style="color:grey; ">'ses'</span>,<span style="color:grey; ">'dc_username'</span>, <span style="color:midnightblue; ">$username</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>fe_user<span style="color:BlueViolet; ">]-&gt;</span>setKey<span style="color:BlueViolet; ">(</span><span style="color:grey; ">'ses'</span>,<span style="color:grey; ">'dc_password'</span>, <span style="color:midnightblue; ">$password</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>fe_user<span style="color:BlueViolet; ">]-&gt;</span>setKey<span style="color:BlueViolet; ">(</span><span style="color:grey; ">'ses'</span>,<span style="color:grey; ">'dc_proxy'</span>, <span style="color:midnightblue; ">$proxy</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>fe_user<span style="color:BlueViolet; ">]-&gt;</span>setKey<span style="color:BlueViolet; ">(</span><span style="color:grey; ">'ses'</span>,<span style="color:grey; ">'dc_environment'</span>, <span style="color:midnightblue; ">$environment</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>storeSessionData<span style="color:BlueViolet; ">();</span></pre>
<p>If the login data is saved in a FlexForm, write the following before the session is processed:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>pi_initPIflexform<span style="color:BlueViolet; ">();</span><br /> <span style="color:midnightblue; ">$username</span><span style="color:BlueViolet; "> = </span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>pi_getFFvalue(<span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>cObj<span style="color:BlueViolet; ">-&gt;</span>data<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'pi_flexform'</span><span style="color:BlueViolet; ">]</span>, <span style="color:grey; ">'DC_Login'</span>, <span style="color:grey; ">'sheet1'</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$password</span><span style="color:BlueViolet; "> = </span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>pi_getFFvalue(<span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>cObj<span style="color:BlueViolet; ">-&gt;</span>data<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'pi_flexform'</span><span style="color:BlueViolet; ">]</span>, <span style="color:grey; ">'DC_Password'</span>, <span style="color:grey; ">'sheet1'</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$proxy</span><span style="color:BlueViolet; "> = </span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>pi_getFFvalue(<span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>cObj<span style="color:BlueViolet; ">-&gt;</span>data<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'pi_flexform'</span><span style="color:BlueViolet; ">]</span>, <span style="color:grey; ">'Proxy'</span>, <span style="color:grey; ">'sheet1'</span><span style="color:BlueViolet; ">);</span><br /> <span style="color:midnightblue; ">$env</span><span style="color:BlueViolet; "> = </span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>pi_getFFvalue(<span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>cObj<span style="color:BlueViolet; ">-&gt;</span>data<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'pi_flexform'</span><span style="color:BlueViolet; ">]</span>, <span style="color:grey; ">'Environment'</span>, <span style="color:grey; ">'sheet1'</span><span style="color:BlueViolet; ">);</span></pre>
<p>You must then create your HTML forms for all functions. There is still one JS script missing that calls up the functions from the eId script. First, you add links to the jQuery and new JavaScript file to &quot;tx_conferencecall_pi1.php&quot;.</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>additionalHeaderData<span style="color:BlueViolet; ">[</span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>prefixId<span style="color:BlueViolet; ">] .= </span><span style="color:grey; ">'&lt;script src=&quot;'</span> . <span style="color:midnightblue; ">t3lib_extMgm</span><span style="color:BlueViolet; ">::</span>siteRelPath<span style="color:BlueViolet; ">(</span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>extKey<span style="color:BlueViolet; ">)</span> . <span style="color:grey; ">'lib/jquery.js&quot; type=&quot;text/javascript&quot; /&gt;'</span><span style="color:BlueViolet; ">;</span><br /> <span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]-&gt;</span>additionalHeaderData<span style="color:BlueViolet; ">[</span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>prefixId<span style="color:BlueViolet; ">] .= </span><span style="color:grey; ">'&lt;script src=&quot;'</span> . <span style="color:midnightblue; ">t3lib_extMgm</span><span style="color:BlueViolet; ">::</span>siteRelPath<span style="color:BlueViolet; ">(</span><span style="color:midnightblue; ">$this</span><span style="color:BlueViolet; ">-&gt;</span>extKey<span style="color:BlueViolet; ">)</span> . <span style="color:grey; ">'pi1/tx_conferencecall_pi1.js&quot; /&gt;'</span><span style="color:BlueViolet; ">;</span></pre>
<p>And then you write the implementation of the required functions to the &quot;tx_conferencecall_pi1.js&quot;.</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; "><b>function</b></span> confcall_newParticipantInTemplate<b>() {</b><br /> &nbsp;&nbsp;jQuery.ajax<b>({</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;url: <span style="color:grey; ">&quot;index.php&quot;</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;type: <span style="color:grey; ">&quot;POST&quot;</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;data: <b>{</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eID: <span style="color:grey; ">&quot;conferencecall&quot;</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command: 3,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;confID: jQuery(<span style="color:grey; ">&quot;#conf_id&quot;</span>).val(),<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstname: jQuery(<span style="color:grey; ">&quot;#conf_firstname&quot;</span>).val(),<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastname: jQuery(<span style="color:grey; ">&quot;#conf_lastname&quot;</span>).val(),<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phonenumber: jQuery(<span style="color:grey; ">&quot;#conf_phone&quot;</span>).val(),<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: jQuery(<span style="color:grey; ">&quot;#conf_email&quot;</span>).val()<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>}</b>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;dataType: <span style="color:grey; ">&quot;json&quot;</span>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;success: <b><span style="color:midnightblue; ">function</span>(</b>response<b>) {</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><span style="color:midnightblue; ">if</span> (</b>response.Status == 1<b>) {</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green; ">// The participant has been added&nbsp;</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>} <span style="color:midnightblue; ">else</span> {</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green; ">// There is an error</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>}<br /> &nbsp;&nbsp;&nbsp;&nbsp;}</b>,<br /> &nbsp;&nbsp;&nbsp;&nbsp;error: <b><span style="color:midnightblue; ">function</span>(</b>error<b>) {</b><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green; ">// AJAX-Error</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<b>}<br /> &nbsp;&nbsp;});<br /> }</b></pre>
<p>As an example, you can find the conference call extension, in which the API methods were already implemented, in the <a href="http://typo3.org/extensions/repository/view/conferencecall/current/" target="_blank" class="external-link-new-window" >TYPO3 Extensions Repository</a> and in the <a href="http://forge.typo3.org/projects/extension-conferencecall/repository" target="_blank" class="external-link-new-window" >TYPO3 Forge</a>.</p>]]></content:encoded>
			
			
			<pubDate>Thu, 29 Dec 2011 14:00:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Cell phone localization using Cell IDs</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=706&#38;cHash=c30bf5f735c9596455e73e14b724902b</link>
			<description>Mobile positioning on smartphones currently uses a combination of at least three technologies: WiFi positioning, GPS positioning, Cell ID positioning using mobile network antenna masts. If any of you are currently working on – and maybe struggling with – the localization of mobile devices using Cell IDs as part of your current projects, the following overview contains plenty of links and may offer a helpful introduction to the subject as well as </description>
			<content:encoded><![CDATA[<p>Mobile positioning on smartphones currently uses a combination of at least three technologies:<br /><br />1.&nbsp;&nbsp;&nbsp; WiFi positioning<br />2.&nbsp;&nbsp;&nbsp; GPS positioning<br />3.&nbsp;&nbsp;&nbsp; Cell ID positioning using mobile network antenna masts<br /><br />The M2M team at Telekom Innovation Laboratories has, with the help of a prototype solution, evaluated a range of services and websites that are open for testing mobile device positioning using Cell ID. This was based on <a href="http://en.wikipedia.org/wiki/Cell_ID" target="_blank" class="external-link-new-window" >Wikipedia's article on Cell ID</a>. <br />The services have not yet been evaluated qualitatively as the necessary base data (geoposition and Cell IDs) was not available. <br /><br />If any of you are currently working on – and maybe struggling with – the localization of mobile devices using Cell IDs as part of your current projects, the following overview contains plenty of links and may offer a helpful introduction to the subject as well as saving you some time on research. <br />The information in the table might also help you to identify services of interest. You can look into them in more detail to determine whether they are right for your project.</p>
<h3>Table of commercial databases</h3><table class="dgtable" style="width: 610px"><colgroup><col width="50%" /><col width="25%" /><col width="25%" /></colgroup><thead><tr><th scope="col"><p>Name and Claim</p></th><th scope="col"><p>Coverage</p></th><th scope="col"><p>Cost and Licence</p></th></tr></thead><tbody><tr><td><p><a href="http://www.location-api.com/" target="_blank" class="external-link-new-window" ><b>http://www.location-api.com/</b></a><br />&quot;Typically we have a global success rate of &gt;96%.&quot;</p></td><td><ul><li>18.053.559 cells</li><li>213 countries</li><li>1170 operators</li></ul></td><td><ul><li>First 1000 requests are free (more)</li><li>Commercial Location-API Customer Agreement</li></ul></td></tr><tr><td><p><a href="http://labs.ericsson.com/apis/mobile-location/" target="_blank" class="external-link-new-window" ><b>http://labs.ericsson.com/apis/mobile-location/</b></a><br />&quot;The Mobile Location API provides you, as a developer, with client-side positioning.&quot;</p></td><td><ul><li>18.302.737 cells (10.701.768 WCDMA + 7.600.969 GSM)</li><li><a href="https://labs.ericsson.com/apis/mobile-location/coverage-map" target="_blank" class="external-link-new-window" >worldwide coverage</a></li></ul></td><td><ul><li>First 1000 lookups are free (more)</li><li><a href="https://labs.ericsson.com/apis/mobile-location/terms-of-use/commercial" target="_blank" class="external-link-new-window" >Commercial Terms of use</a></li></ul></td></tr><tr><td><p><a href="http://cellspotting.com/" target="_blank" class="external-link-new-window" ><b>http://cellspotting.com</b></a><br />&quot;CellSpotting.com is a global location based information service for mobile (GSM and UMTS) users.&quot;</p></td><td><ul><li>111.287 cells</li><li>591 operators</li><li><a href="http://cellspotting.com/thick/statistics.php" target="_blank" class="external-link-new-window" >statistics page<br /></a></li></ul></td><td><ul><li>free only for personal use</li><li>terms of use</li></ul></td></tr><tr><td><p><a href="http://www.navizon.com/" target="_blank" class="external-link-new-window" ><b>http://www.navizon.com</b></a><br />&quot;Navizon I.T.S locates active Wi-Fi devices throughout a coverage area (site) with higher accuracy than that provided by other technologies such as Assisted GPS and Wi-Fi hotspot/cell tower locations.&quot;</p></td><td><ul><li>device detection by site/node</li></ul></td><td><ul><li>250 $ each site/month, 25 $ each node/month; 60 $ node setup</li><li><a href="http://www.navizon.com/businesses.php" target="_blank" class="external-link-new-window" >request licence key via email</a></li></ul></td></tr><tr><td><p><a href="http://cellid.telin.nl/" target="_blank" class="external-link-new-window" ><b>http://cellid.telin.nl</b></a></p></td><td><ul><li>133.637 cells</li><li>61 countries</li><li>165 operators</li></ul></td><td></td></tr></tbody></table><p>&nbsp;</p>
<h3>Table of free databases</h3><table class="dgtable" style="width: 610px"><colgroup><col width="50%" /><col width="25%" /><col width="25%" /></colgroup><thead><tr><th scope="col"><p>Name and Claim</p></th><th scope="col"><p>Coverage</p></th><th scope="col"><p>Cost and Licence</p></th></tr></thead><tbody><tr><td><p><a href="http://opencellid.org/" target="_blank" class="external-link-new-window" ><b>http://opencellid.org</b></a><br />&quot;This project is an open source project, aiming to create a complete database of CellID worlwide, with their locations.&quot;</p></td><td><ul><li>610.168 cells</li><li>168 countries</li><li>208 operators</li></ul></td><td><ul><li>free</li><li><a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank" class="external-link-new-window" >CC Attribution ShareAlike 3.0</a></li></ul></td></tr><tr><td><p><a href="http://celldb.org/" target="_blank" class="external-link-new-window" ><b>http://celldb.org</b></a><br />&quot;CellDB is an open database which links the cells that make up mobile networks, to their location.&quot;</p></td><td><ul><li>336.275 cells </li><li>242 countries</li><li>816 operators</li><li><a href="http://celldb.org/stats.php" target="_blank" class="external-link-new-window" >statistics page<br /></a></li></ul></td><td><ul><li>free</li><li><a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank" class="external-link-new-window" >Commercial and non commercial</a></li></ul></td></tr><tr><td><p><a href="http://www.cellumap.com/" target="_blank" class="external-link-new-window" ><b>http://www.cellumap.com</b></a><br />&quot;Cellumap is a revolution in cellular coverage maps, in that the coverage maps here are not created by the network operators, but rather by the users of the network (ie: you!).&quot;<br /><br /></p></td><td></td><td><ul><li><a href="http://www.cellumap.com/about.html" target="_blank" class="external-link-new-window" >applications and maps are all free</a></li></ul></td></tr><tr><td><p><a href="http://openbmap.org/" target="_blank" class="external-link-new-window" ><b>http://openbmap.org</b></a><br />&quot;openBmap is a free and open map of wireless communicating objects (e.g. cellular antenna, Wi-Fi, Bluetooth).&quot;</p></td><td><ul><li><a href="http://openbmap.org/server_stats.php5" target="_blank" class="external-link-new-window" >server stats</a></li><li><a href="http://openbmap.org/logins_stats.php5" target="_blank" class="external-link-new-window" >user stats</a></li><li><a href="http://openbmap.org/operators_stats.php5" target="_blank" class="external-link-new-window" >operator stats</a></li></ul></td><td><ul><li>free</li></ul></td></tr></tbody></table><p>&nbsp;<br />If you have any questions regarding this overview, please leave a comment in this blog or contact Lothar Schulz. Lothar is the M2M project Scrum Master and can be contacted at lothar[dot]schulz[at]t-systems[dot]com.</p>
<p>&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Tue, 27 Dec 2011 12:00:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>1. Geekli.st API Hackathon in Europa | Samstag, 17.12.2011 Berlin</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=701&#38;cHash=9d8a685b505fd070ed4b114413970eb0</link>
			<description>Am 17.12.2011 findet in Berlin der erste Geekli.st Hackathon in Europa statt. Die Idee dahinter: Ihr baut in weniger als 8 Stunden allein oder im Team Anwendungen auf der Basis einer oder mehrerer APIs. Für die &quot;most awesome&quot; Anwendung gibt es einen Amazon.de-Gutschein im Wert von 500 EUR. </description>
			<content:encoded><![CDATA[<p>Morgen findet in Berlin von 10-18 Uhr&nbsp;der erste <a href="http://www.meetup.com/Berlin-Hack-and-Tell/events/44483332/" target="_blank" class="external-link-new-window" >Geekli.st Hackathon</a>&nbsp;in Europa&nbsp;statt.</p>
<p>Die Idee dahinter:&nbsp;<br />Ihr baut in weniger als 8 Stunden allein oder im Team Anwendungen auf der Basis einer oder mehrerer APIs. <br />Welche APIs ihr verwendet, spielt keine Rolle. Ihr könnt also sowohl mit unseren Developer Garden APIs basteln als auch mit den APIs von Google, Twitter, Facebook, Dropbox, Soundcloud und Co.<br /><br />Zur Stärkung werdet ihr natürlich mit Mittagessen, Snacks und Getränken versorgt.</p>
<h2>Die Incentives</h2>
<p>Die ersten 20 Teilnehmer erhalten eines der exklusiven&nbsp;<a href="http://geekli.st/beta" target="_blank" class="external-link-new-window" >Geekli.st</a> Berlin #hackathon T-Shirts.&nbsp;Für die &quot;most awesome&quot; Anwendung gibt es obendrauf&nbsp;einen Amazon.de-Gutschein im Wert von <b>500 EUR</b>.&nbsp;</p>
<p><br />Darüber hinaus gehören die&nbsp;Teilnehmer des Hackathons zu den ersten, die einen Blick auf die Geekli.st API werfen dürfen.&nbsp;</p>
<h2>Die Koordinaten</h2>
<p><b>Wann</b>: 17.12.2011, 10-18 Uhr<br /><b>Wo</b>: ImmobilienScout24 ScoutLounge, Andreasstr. 10, 10243 Berlin<br /><b>Anmeldung</b>:&nbsp;<span style="font-family: Verdana, sans-serif; font-size: 12px; line-height: normal; "><a href="http://www.meetup.com/Berlin-Hack-and-Tell/events/44483332/" >http://www.meetup.com/Berlin-Hack-and-Tell/events/44483332/</a></span></p>
<p><br />Detailinfos zum Event:<br /><a href="http://www.meetup.com/Berlin-Hack-and-Tell/events/44483332/" >http://www.meetup.com/Berlin-Hack-and-Tell/events/44483332/</a></p>
<p>Mehr über Geekli.st:&nbsp;<br /><a href="http://geekli.st/about" >http://geekli.st/about</a></p>]]></content:encoded>
			
			
			<pubDate>Fri, 16 Dec 2011 13:37:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>How to: Develop Typo3 extensions with the Developer Garden Send SMS API</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=671&#38;cHash=8792548570d8ce5a6bb0508fba6f82c5</link>
			<description>TYPO3 is a flexible content management system for which there are numerous add-ons or “extensions.” Nearly all of the content users see in the back-end or front-end is provided using extensions.This article is a step-by-step guide for developing TYPO3 extensions with the Developer Garden Send SMS API.
1. Creating a basic extension
To create a “blank” extension, you can use the Kickstarter extension. The important settings in Kickstarter are “ex</description>
			<content:encoded><![CDATA[<p>TYPO3 is a flexible content management system for which there are numerous add-ons or “extensions.” Nearly all of the content users see in the back-end or front-end is provided using extensions.<br />This article is a step-by-step guide for developing TYPO3 extensions with the Developer Garden Send SMS API.</p>
<h2>1. Creating a basic extension</h2>
<p>To create a “blank” extension, you can use the <a href="http://typo3.org/extensions/repository/view/kickstarter/current/" target="_blank" class="external-link-new-window" >Kickstarter</a> extension. The important settings in Kickstarter are “extension key” and “category.” In our example, we used “sendsms” as the extension key and selected the category “frontend plug-in”. Selecting this category ensures that the extension can be added to pages in the form of a content element (page content). Next, we created a new front-end plug-in in Kickstarter. All of the files belonging to the extension are now found in the directory /typo3conf/ext/sendsms/.</p>
<h2>2. Connecting the PHP SDK</h2>
<p><a href="http://typo3.org/documentation/document-library/core-documentation/doc_core_cgl/4.5.1/view/toc/0/" class="external-link-new-window" >TYPO3 coding guidelines</a> recommend saving all of the libraries used by an extension in the lib folder. To send text messages, the SDK only requires two directories: /src/common and /src/sendsms. These are then copied to the folder /typo3conf/ext/sendsms/lib.</p>
<p>Next, write&nbsp; in the Include section of the PHP script “/sendsms/pi1/class.tx_sendsms_pi1.php”:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:blue; "><b>require_once</b></span>(dirname(<span style="color:blue; "><b>__FILE__</b></span>) . <span style="color:grey; ">'/../lib/sdk/sendsms/client/SendSmsClient.php'</span>); <br /><span style="color:blue; "><b>require_once</b></span>(dirname(<span style="color:blue; "><b>__FILE__</b></span>) . <span style="color:grey; ">'/../lib/sdk/sendsms/data/SendSmsStatusConstants.php'</span>);</pre>
<p><b>Important note: <br /></b></p>
<p>Caching must be disabled in order to send text messages from a front-end page. You can of course do this using the global TSFE object:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]</span>-&gt;set_no_cache();</pre>
<p>This is not very practical, though, since the entire page with the plug-in would not be saved in the cache as a result. It’s better to include the following text in the “main” function:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$this</span>-&gt;pi_USER_INT_obj <span style="color:BlueViolet; ">=</span> <span style="color:orange; ">1</span>;</pre>
<p>and then in the definition of the class, to delete the following line:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$pi_checkCHash</span> <span style="color:BlueViolet; ">=</span> <span style="color:blue; "><b>TRUE</b><span>; </span></span></pre>
<p>In the “ext_localconf.php” file, replace:</p>
<pre style="font-family:Courier New; font-size:10pt; ">t3lib_extMgm<span style="color:BlueViolet; ">::</span>addPItoST43(<span style="color:midnightblue; ">$_EXTKEY</span>, <span style="color:grey; ">'pi1/class.tx_yourext_pi1.php'</span>, <span style="color:grey; ">'_pi1'</span>, <span style="color:grey; ">'list_type'</span>, <span style="color:orange; ">1</span>);</pre>
<p>with the following:</p>
<pre style="font-family:Courier New; font-size:10pt; ">t3lib_extMgm<span style="color:BlueViolet; ">::</span>addPItoST43(<span style="color:midnightblue; ">$_EXTKEY</span>, <span style="color:grey; ">'pi1/class.tx_yourext_pi1.php'</span>, <span style="color:grey; ">'_pi1'</span>, <span style="color:grey; ">'list_type'</span>, <span style="color:orange; ">0</span>);</pre>
<p>This will disable caching only for the plug-in. Now the cache has to be deleted from the TYPO3 back-end a single time (click the lightning symbol at the top edge of the page).</p>
<h2>3. Implementing the sending of text messages</h2>
<p>The “main” function already contains an HTML form created automatically by Kickstarter for each new plug-in.</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$content</span> <span style="color:BlueViolet; ">=</span> <span style="color:grey; ">'<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;strong&gt;This is a few paragraphs:&lt;/strong&gt;&lt;br /&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;This is line 1&lt;/p&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;This is line 2&lt;/p&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;h3&gt;This is a form:&lt;/h3&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;'</span>.<span style="color:midnightblue; ">$this</span>-&gt;pi_getPageLink(<span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]</span>-&gt;id).<span style="color:grey; ">'&quot; method=&quot;POST&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; name=&quot;'</span>.<span style="color:midnightblue; ">$this</span>-&gt;prefixId.<span style="color:grey; ">'[input_field]&quot; value=&quot;'.</span>htmlspecialchars(<span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span>'input_field'<span style="color:BlueViolet; ">]</span>).<span style="color:grey; ">'&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;submit&quot; name=&quot;'</span>.<span style="color:midnightblue; ">$this</span>-&gt;prefixId.<span style="color:grey; ">'[submit_button]&quot; value=&quot;'</span>.htmlspecialchars(<span style="color:midnightblue; ">$this</span>-&gt;pi_getLL('submit_button_label')).<span style="color:grey; ">'&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;You can click here to '</span>.<span style="color:midnightblue; ">$this</span>-&gt;pi_linkToPage('get to this page again',<span style="color:midnightblue; ">$GLOBALS<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]</span></span>-&gt;id).<span style="color:grey; ">'&lt;/p&gt;<br /> '</span>;</pre>
<p>This form is replaced by:</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:midnightblue; ">$content</span> <span style="color:BlueViolet; ">=</span> <span style="color:grey; ">'<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;h3&gt;Send SMS&lt;/h3&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;' </span>. <span style="color:midnightblue; ">$this</span>-&gt;pi_getPageLink(<span style="color:midnightblue; ">$GLOBALS</span><span style="color:BlueViolet; ">[</span><span style="color:grey; ">'TSFE'</span><span style="color:BlueViolet; ">]</span>-&gt;id) . <span style="color:grey; ">'&quot; method=&quot;POST&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&gt;Recipients:&lt;/label&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br/&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; name=&quot;' </span>. <span style="color:midnightblue; ">$this</span>-&gt;prefixId.<span style="color:grey; ">'[recipients]&quot; value=&quot;'</span> . htmlspecialchars(<span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'recipients'</span><span style="color:BlueViolet; ">]</span>) .<span style="color:grey; "> '&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&gt;Text:&lt;/label&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;textarea name=&quot;' </span>. <span style="color:midnightblue; ">$this</span>-&gt;prefixId . <span style="color:grey; ">'[text]&quot;&gt;'</span> . htmlspecialchars(<span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'text'</span><span style="color:BlueViolet; ">]</span>) .<span style="color:grey; "> '&lt;/textarea&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;submit&quot; name=&quot;' </span>. <span style="color:midnightblue; ">$this</span>-&gt;prefixId .<span style="color:grey; "> '[submit_button]&quot; value=&quot;Send!&quot;&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br /> '</span>;</pre>
<p>A Send SMS client must then be created using the <a href="http://www.developercenter.telekom.com/" target="_blank" class="external-link-new-window" >Developer Center</a> access data:</p>
<pre><span style="color:midnightblue; ">$client</span> = <span style="color:blue; "><b>new</b></span> SendSmsClient('production', 'Developer Center username', 'Developer Center password');</pre>
<p>The first parameter is for the <a href="http://www.developergarden.com/index.php?id=511&amp;L=1&amp;vURL=ch02s04.html&amp;cHash=eda8d54ec9f51c206812121ed2709491" class="external-link-new-window" >development environment</a> and can only have three denotations: “production,” “sandbox” or “mock.” The second and third parameters are the Developer Center log-in and password.</p>
<p>After the client has been created, the sendSms(<span style="color:midnightblue; ">$recipients</span>, <span style="color:midnightblue; ">$message</span>, <span style="color:midnightblue; ">$originator</span>, <span style="color:midnightblue; ">$flash</span>, <span style="color:midnightblue; ">$account</span>) function must be invoked.</p>
<pre style="font-family:Courier New; font-size:10pt; "><span style="color:blue; "><b>if</b></span> (<span style="color:blue; "><b>isset</b></span>(<span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span>'submit_button'<span style="color:BlueViolet; ">]</span>)) <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$client</span> = <span style="color:blue; "><b>new</b></span> SendSmsClient(<span style="color:grey; ">'production'</span>, <span style="color:grey; ">'Developer Center username'</span>, <span style="color:grey; ">'Developer Center password'</span>);<br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$sendSmsResponse</span> = <span style="color:blue; "><b>NULL</b></span>;<br /> &nbsp;&nbsp;&nbsp;&nbsp;try <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$sendSmsResponse</span> = <span style="color:midnightblue; ">$client</span>-&gt;sendSms(<span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'recipients'</span><span style="color:BlueViolet; ">]</span>, <span style="color:midnightblue; ">$this</span>-&gt;piVars<span style="color:BlueViolet; ">[</span><span style="color:grey; ">'text'</span><span style="color:BlueViolet; ">]</span>, <span style="color:grey; ">'T3Extension'</span>, <span style="color:grey; ">'false'</span>, <span style="color:blue; "><b>NULL</b></span>);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue; "><b>if</b></span> (<span style="color:midnightblue; ">$sendSmsResponse</span>-&gt;getStatus()-&gt;getStatusConstant() <span style="color:BlueViolet; ">==</span> SendSmsStatusConstants<span style="color:BlueViolet; ">::</span>SUCCESS) <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$content</span> = <span style="color:grey; ">'Deine SMS wurde erfolgreich gesendet'</span> . <span style="color:midnightblue; ">$content</span>;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">}</span> else <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$errorMessage</span> <span style="color:BlueViolet; ">=</span> <span style="color:grey; ">'The invocation of sendSms() was not successful&lt;br /&gt;'</span> .<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'The error code is: '</span> . <span style="color:midnightblue; ">$sendSmsResponse</span>-&gt;getStatus()-&gt;getStatusCode() . <span style="color:grey; ">'&lt;br/&gt;'</span> .<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:grey; ">'The error message is: '</span> . <span style="color:midnightblue; ">$sendSmsResponse</span>-&gt;getStatus()-&gt;getStatusMessage() . <span style="color:grey; ">'&lt;br/&gt;';</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw <span style="color:blue; "><b>new</b></span> Exception(<span style="color:midnightblue; ">$errorMessage</span>);<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">}</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">}</span> catch(Exception <span style="color:midnightblue; ">$e</span>) <span style="color:BlueViolet; ">{</span><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:midnightblue; ">$content</span> <span style="color:BlueViolet; ">=</span> <span style="color:midnightblue; ">$e</span>-&gt;getMessage() . <span style="color:midnightblue; ">$content</span>;<br /> &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:BlueViolet; ">}</span><br /> <span style="color:BlueViolet; ">}</span></pre>
<p>Sending text messages from your own PHP scripts is that simple.</p>
<h2>4. Examples of use</h2>
<p>Of course, using the Send SMS API is not limited to the sending of simple text messages. The API also lets you send appointment reminders or password reset codes, all sorts of confirmations (e.g., when making online purchases) and much more. A back-end module can also be used to notify administrators of malfunctions or info updates via text message.</p>
<p>This extension is available in the <a href="http://typo3.org/extensions/repository/view/sendsms/current/" title="TYPO3 Extensions Repository" target="_blank" class="external-link-new-window" >TYPO3 Extensions Repository</a> and in the <a href="http://forge.typo3.org/projects/extension-sendsms/repository" title="SVN Repository" target="_blank" class="external-link-new-window" >SVN Repository in TYPO3 Forge</a>.</p>
<p>For more information on the Send SMS API, please visit: <br /><span style="font-family: Verdana, sans-serif; font-size: 12px; line-height: normal; "><a href="http://www.developergarden.com/apis/apis-sdks/send-sms/" >http://www.developergarden.com/apis/apis-sdks/send-sms/</a></span></p>]]></content:encoded>
			
			
			<pubDate>Wed, 30 Nov 2011 14:00:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Minecraft conquers the Developer Garden</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=689&#38;cHash=a735a83dce9f8ebd0854f41dbbedc39a</link>
			<description>If you do not already know it - Minecraft is a very successful PC game of the independent Swedish development studio Mojang. But the beta-status is now over: On the MineCon in Las Vegas, the first Minecraft Convention, the release of version 1.0 of Minecraft is being celebrated. Daniel and Mathias from Developer Garden team congratulate with the current background image!</description>
			<content:encoded><![CDATA[<p>If you do not already know it - <a href="http://www.minecraft.net/" class="external-link-new-window" >Minecraft</a> is a very successful PC game of the independent Swedish development studio <a href="http://mojang.com/" class="external-link-new-window" >Mojang</a>. As a &quot;sandbox game&quot; there is no specific purpose of the game, but the player has the freedom to play the game according to his preferences. Countless possibilities for action, a quasi-infinite, varied and changeable game world, and a variety of mods contribute to the success of Minecraft. Not for nothing, the game has more than 4 million copies sold while being in beta stage.</p>
<p>But the beta-status is now over: On the <a href="http://minecon.mojang.com/" class="external-link-new-window" >MineCon in Las Vegas</a>, the first Minecraft Convention, the release of version 1.0 of Minecraft is being celebrated.</p>
<p>So we join, too - not least at the instigation of the two biggest fans of Minecraft in the Developer Garden team: Daniel and Mathias, who also contributed to the current background image.</p>
<p>ps: The most important events of MineCon are <a href="http://pc.ign.com/articles/121/1212578p1.html" class="external-link-new-window" >streamed free of charge</a> via IGN.</p>]]></content:encoded>
			
			
			<pubDate>Thu, 17 Nov 2011 14:55:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>TECHTALK: DEVOPS - EMINENTLY PRACTICAL | NOVEMBER, 24 2011 BERLIN</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=687&#38;cHash=65eb6478629df769e7e818ebf31c72a5</link>
			<description>Following our successful kick-off event at GPU Computing in October, the second Developer Garden TechTalk will take place in Berlin this month.
The topic of the talk is the DevOps movement, which has set itself the goal of bridging the gap between development and IT operations. Like last time, the event will be held at c-base, the Hackerspace in Berlin Mitte.</description>
			<content:encoded><![CDATA[<p>Following our successful kick-off event at <a href="http://www.developergarden.com/../?id=1024" class="internal-link" >GPU Computing</a> in October, the second Developer Garden TechTalk will take place in Berlin this month.<br />The topic of the talk is the DevOps movement, which has set itself the goal of bridging the gap between development and IT operations. Like last time, the event will be held at <a href="http://www.c-base.org/" title="Öffnet externen Link in neuem Fenster" class="external-link-new-window" >c-base</a>, the Hackerspace in Berlin Mitte.</p>
<p>The first part of the TechTalk will comprise a fascinating presentation by Schlomo Schapiro, system architect and Open Source evangelist at ImmobilienScout24. The second half will be an opportunity to debate and network while enjoying free drinks and a buffet. </p>
<h2>DevOps – eminently practical </h2>
<p>DevOps is an IT movement whose goal it is to promote new ways of thinking in <b>Dev</b>elopment and <b>Op</b>erations. The aims are:</p><ul><li>to create an awareness, amongst developers and administrators, of overriding, common objectives (even where individual sub-objectives and requirements within the two areas appear, at least at first glance, to differ).</li><li>to develop solutions which can improve collaboration between developers and admins and which can spread the core ideas of agile methods to operations.</li></ul><p>Schlomo Schapiro, system architect and Open Source evangelist at ImmobilienScout24, will introduce the subject and report on DevOps successes at ImmobilienScout24. After 2 years of agile rethinking in Development, it has been shown that the traditional separation of powers - Plan - Build - Run – is no longer practical because the requirements and expectations in both Development and Operations are continually changing and require new forms of collaboration.<br /><br />The TechTalk is aimed at employees and managers in IT and web companies who are interested in agile ways of working and cross-functional teams. The presentation will be delivered in German or English. On the day, Schlomo will ask which language those attending prefer.</p>
<p>You can register by November 23, 2011 at the latest, either informally by sending an email to <a href="javascript:linkTo_UnCryptMailto('jxfiql7qbzeqxihXabsbilmbodxoabk+zlj');" title="Öffnet ein Fenster zum Versenden der E-Mail" class="mail" >techtalk@<span style="display:none;">remove-this.</span>developergarden.com</a> or via our <a href="https://www.xing.com/events/developer-garden-techtalk-devops-mal-ganz-praktisch-836912" target="_blank" class="external-link-new-window" >XING</a> and <a href="https://www.facebook.com/DeveloperGarden#!/event.php?eid=279505118754602" title="Facebook Developer Garden TechTalk Event" target="_blank" class="external-link-new-window" >Facebook</a> events.<br />The event starts at 7 pm. It is free of charge. There will also be free drinks and a tasty buffet.<br /><br /><b>The facts at a glance:<br /></b></p><ul><li>What: TechTalk DevOps – eminently practical </li><li>When: November 24, 2011 | 7 pm (registration closes: November 23, 2011)</li><li>Where: c-base,&nbsp; Rungestr. 20 10179 Berlin</li></ul><p>For all other information about the event, go to: <a href="http://www.developergarden.com/de/apis/techtalk/techtalk-devops-mal-ganz-praktisch-24-november-2011-berlin/" >http://www.developergarden.com/de/apis/techtalk/techtalk-devops-mal-ganz-praktisch-24-november-2011-berlin/</a> <br /><br />We look forward to this - spending an interesting, enjoyable event with you! :-)</p>]]></content:encoded>
			
			
			<pubDate>Mon, 14 Nov 2011 15:42:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Freikarten: 2. Fokus Media Web Symposium | 10.-11. November Berlin </title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=653&#38;cHash=43b5408208c6aa31d85bdd38c9f163bd</link>
			<description>Am 10. und 11. November 2011 ist es wieder so weit: Fraunhofer FOKUS lädt zum zweiten Mal zum FOKUS Media Web Symposium in die Hauptstadt ein. Zwei Tage lang tauschen sich internationale Experten in Tutorials, technischen Workshops und Vorträgen über (mobile) Apps, Hybrid TV und Social Media aus. Wie im letzten Jahr haben wir auch dieses Mal ein paar Freitickets im Wert von 500 EUR für euch! </description>
			<content:encoded><![CDATA[<p>Am 10. und 11. November 2011 ist es wieder so weit:&nbsp;Fraunhofer FOKUS&nbsp;lädt zum zweiten Mal zum<a href="http://www.fokus.fraunhofer.de/en/fokus_events/fame/mediawebsymposium2011/index.html" class="external-link-new-window" > FOKUS&nbsp;Media Web Symposium</a> in die Hauptstadt ein. Zwei Tage lang tauschen sich internationale Experten in Tutorials, technischen Workshops und Vorträgen über (mobile) Apps, Hybrid TV und Social Media aus.&nbsp;</p>
<p>Am Donnerstag finden Workshops und Tutorials zu folgenden Themen statt:</p><ul><li>IPTV, Hyrid TV und Web TV</li><li>Application Development for 3 Screens</li><li>Broadband, Broadcast Convergence</li><li>Web applications as an industry game changer</li></ul><p>Abends geht es dann zum <a href="http://www.fokus.fraunhofer.de/en/fokus_events/fame/mediawebsymposium2011/Service/Venues/index.html#socialevent" class="external-link-new-window" >Social Event</a> an den Potsdamer Platz.&nbsp;</p>
<p>Am Freitag folgt die Konferenz mit sechs Sessions. Die Keynote &quot;Future Media Web&quot; hält <a href="http://www.bbc.co.uk/rd/about/george_wright.shtml" class="external-link-new-window" >George Wright, Head of Prototyping bei BBC R&amp;D</a>. Im Anschluss warten&nbsp;Vorträge und Paneldiskussionen zu den&nbsp;fünf&nbsp;Bereichen:</p><ul><li>Consumer Electronics meets Internet</li><li>Social Media Web</li><li>Apps Everywhere Best Practice (Panel)</li><li>Technical Challenges</li><li>New Media Business Models&nbsp;</li></ul><p>Details zu den Tutorials und der Konferenz findet ihr in der <a href="http://www.fokus.fraunhofer.de/en/fokus_events/fame/mediawebsymposium2011/Program/detailed/index.html#s6" class="external-link-new-window" >Programmübersicht</a>.&nbsp;Die Veranstaltung ist inhaltlich breit gefächert und richtet sich sowohl an Entwickler als auch an Entscheider und Marketer.</p>
<h2>Freitickets für das 2. Media Web Symposium</h2>
<p>Wie im letzten Jahr haben wir auch dieses Mal ein paar Freitickets im Wert von 500 EUR für euch! Wenn ihr Interesse an einem der Tickets&nbsp;habt, hinterlasst bitte einen Kommentar hier im Blog, schreibt uns eine Mail an <a href="javascript:linkTo_UnCryptMailto('jxfiql7fkclXabsbilmbodxoabk+zlj');" >info@<span style="display:none;">remove-this.</span>developergarden.com</a>&nbsp;oder kontaktiert uns über <a href="http://www.facebook.com/DeveloperGarden" class="external-link-new-window" >Facebook </a>oder <a href="http://twitter.com/#%21/developergarden" class="external-link-new-window" >Twitter</a>.&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
			<category>Events</category>
			<category>Mobile</category>
			<category>Social Media</category>
			
			
			<pubDate>Fri, 28 Oct 2011 16:52:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>NEW: Objective-C SDK 1.0 - Development for iOS5 made easy</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=647&#38;cHash=86677aca4b04cb2d4d98db61d44d22c1</link>
			<description>From now an the Developer Garden offers an Objective-C SDK that makes it even easier for you to incorporate our APIs in iOS-based apps. Of course, our SDK is fully iOS5-compatible. Use it in combination with Send SMS / Send MMS / Voice Call / Conference Call or AutoScout24.</description>
			<content:encoded><![CDATA[<p><img src="http://www.developergarden.com/uploads/RTEmagicC_iOS5_allExampleApps_01.png.png" width="150" height="225" style="padding-top: 10px; padding-right: 10px; padding-bottom: 10px; float: left; " title="Developer Garden Objective-C example apps" alt="Developer Garden Objective-C example apps" />iOS 5,&nbsp;the brand new version of Apple's operating system, has been available since last week. The new iPhone 4s is also equipped with the new operating system as standard. But iOS 5 is also available as an upgrade for older iPhones and the iPad.</p>
<p>Why are we telling you this? Simple: From now on the Developer Garden offers an <a href="http://www.developergarden.com/index.php?id=348" class="internal-link" >Objective-C SDK</a> that makes it even easier for you to incorporate our <a href="http://www.developergarden.com/index.php?id=39" class="internal-link" >APIs</a> in iOS-based apps. Of course, our SDK is fully iOS5-compatible.</p>
<p><br />The most important new features of the current version of the mobile operating system include:</p>
<p>&nbsp;</p><ul><li>the ability to integrate iCloud Storage in apps;</li><li>new calls or ads in AutoScout24, for example, can be shown in the Notification Center;</li><li>Automatic Reference Counting (ARC), a garbage collector, means the developer no longer has to worry about storage management himself;</li><li>storyboards support the creation of GUIs;</li><li>JSON is now supported by a native API.</li></ul><p>Details of new features for developers are <a href="http://developer.apple.com/technologies/ios5/" target="_blank" class="external-link-new-window" >available directly from Apple</a>.<img src="http://www.developergarden.com/uploads/RTEmagicC_iOS5_Example_ConferenceCall.png.png" width="150" height="225" style="padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 10px; float: right; " title="Developer Garden Objective-C example Conference Call" alt="Developer Garden Objective-C example Conference Call" clickenlarge="1" /></p>
<p>Want the <a href="http://www.developergarden.com/index.php?id=502" class="internal-link" >AutoScout24</a> search engine in your own app on the iPhone? Want to integrate <a href="http://www.developergarden.com/index.php?id=119" class="internal-link" >text messaging</a> and <a href="http://www.developergarden.com/index.php?id=120" class="internal-link" >MMS</a> in an iPad app? Launch <a href="http://www.developergarden.com/index.php?id=122" class="internal-link" >conference calls</a>? All that is child's play with the Telekom <a href="http://www.developergarden.com/index.php?id=39" class="internal-link" >Objective-C SDK</a>. Along with <a href="http://www.developergarden.com/fileadmin/microsites/ApiProject/Dokumente/Dokumentation/ObjectiveC-SDK-1.0/en/classes.html" target="_blank" class="external-link-new-window" >documentation in English</a>, you'll also find sample applications for the individual APIs.</p>
<p>All other information is available on our <a href="http://www.developergarden.com/index.php?id=348" class="internal-link" >SDK site</a> and in the comprehensive <a href="http://www.developergarden.com/index.php?id=100" class="internal-link" >documentation</a>.</p>
<p>The SDK requires iOS 5, which is supported by the iPhone models 3GS / 4 and 4s, iPod touch of the 3rd and 4th generations, and the iPad / iPad 2. The <a href="http://developer.apple.com/xcode/" target="_blank" class="external-link-new-window" >Xcode 4</a> development environment even lets you try out SDK without hardware, using the emulator.</p>
<p>Got any questions or ideas? Just write a comment here in the blog or <a href="http://www.developergarden.com/de/apis/forum/topic/apis_sdks/" class="external-link-new-window" >submit something to the forum</a>.</p>]]></content:encoded>
			
			
			<pubDate>Mon, 17 Oct 2011 16:00:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>Integrating SMS API in the Windows Sidebar</title>
			<link>http://www.developergarden.com/index.php?id=96&#38;tx_ttnews%5Btt_news%5D=640&#38;cHash=584b016d2a93ecaf3559c4a2749c7550</link>
			<description>This article presents the Send SMS Sidebar gadget and the integration of the Developer Garden Send SMS API in the Windows Sidebar using JavaScript. 
Sidebar gadgets are popular mini-applications which are displayed in a bar on the Windows Desktop. Gadgets can perform useful tasks or display a variety of information (e.g., CPU usage or RSS feeds).
Windows Sidebar gadgets can be implemented in various script languages. JavaScript or VBScript are </description>
			<content:encoded><![CDATA[<p>This article presents the Send SMS Sidebar gadget and the integration of the Developer Garden Send SMS API in the Windows Sidebar using JavaScript. </p>
<p>Sidebar gadgets are popular mini-applications which are displayed in a bar on the Windows Desktop. Gadgets can perform useful tasks or display a variety of information (e.g., CPU usage or RSS feeds).</p>
<p>Windows Sidebar gadgets can be implemented in various script languages. JavaScript or VBScript are available for the application logic; the graphical interfaces are created with HTML and CSS. For any interested readers, there is a good tutorial in the <a href="http://msdn.microsoft.com/en-gb/magazine/cc163370.aspx" class="external-link-new-window" >MSDN Magazine Blog</a>.</p>
<p>It is possible to access web services in gadgets by sending out asynchronous REST requests using the XMLHttpRequest object. Three steps are needed to launch the Developer Garden Send SMS API in the Sidebar:</p>
<p>&nbsp;</p>
<p><b>1. Creating the XMLHttpRequest object</b></p>
<p>There are various ways of obtaining the XMLHttpRequest object depending on the version of Internet Explorer installed (which renders the gadget in the Sidebar).<br /><br /></p>
<p style="background-color: rgb(247, 247, 247); font-family: Courier New; font-size: 12px; "><b><span style="color: rgb(0, 0, 127); ">function</span> </b>getXMLHTTP () {<br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>xmlhttp = null ;<br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(window.XMLHttpRequest) {<br />&nbsp;&nbsp;&nbsp; xmlhttp = <b><span style="color: rgb(0, 0, 127); ">new </span></b>XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(<b><span style="color: rgb(0, 0, 127); ">typeof </span></b>xmlhttp.overrideMimeType != <span style="color: rgb(127, 0, 127); ">'undefined'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlhttp.overrideMimeType(<span style="color: rgb(127, 0, 127); ">'text/xml'</span>);<br />&nbsp; }<br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">else</span></b><br />&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if</span> </b>(window.ActiveXObject) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlhttp = <b><span style="color: rgb(0, 0, 127); ">new </span></b>ActiveXObject(<span style="color: rgb(127, 0, 127); ">&quot;Microsoft.XMLHTTP&quot;</span>);<br />&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">throw </span></b><span style="color: rgb(127, 0, 127); ">&quot;No XMLHTTP&quot;</span> ;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">return </span></b>xmlhttp;<br />}</p>
<p>&nbsp;</p>
<p><b>2. Requesting the token</b></p>
<p>Authentication at the security token server is required in order to use the Developer Garden services. This takes place with the Base64-coded access data, in the form “<span style="color: rgb(255, 51, 0); ">User name: Password</span>”. After a response is received from the security token server, the token is parsed and the SMS sending function is invoked.</p>
<p>&nbsp;</p>
<p style="background-color: rgb(247, 247, 247); font-family: Courier New; font-size: 12px; "><b><span style="color: rgb(0, 0, 127); ">function </span></b>preSend(base64auth, environment, number, message, flash, originator, account) {<br />&nbsp; <br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>xmlHttp = getXMLHTTP();<br />&nbsp; xmlHttp.open(<span style="color: rgb(127, 0, 127); ">&quot;GET&quot;</span>,<span style="color: rgb(127, 0, 127); ">&quot;https://sts.idm.telekom.com/rest-v1/tokens/odg&quot;</span>, true);<br />&nbsp; xmlHttp.setRequestHeader(<span style="color: rgb(127, 0, 127); ">&quot;Authorization&quot;</span>, <span style="color: rgb(127, 0, 127); ">&quot;Basic &quot;</span>+base64auth);<br />&nbsp; xmlHttp.send();<br />&nbsp; <br />&nbsp; xmlHttp.onreadystatechange = <b><span style="color: rgb(0, 0, 127); ">function</span></b>() {<br />&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(xmlHttp.readyState == 4) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// received, OK</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(xmlHttp.status == 200) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// extract the token</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>token_start = xmlHttp.responseText.indexOf(<span style="color: rgb(127, 0, 127); ">&quot;token\&quot;&quot;</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token_start += 8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b style="color: rgb(0, 0, 127); ">var</b> token_end = xmlHttp.responseText.indexOf(<span style="color: rgb(127, 0, 127); ">&quot;\&quot;&quot;</span>,token_start);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b style="color: rgb(0, 0, 127); ">var</b> token = xmlHttp.responseText.substring(token_start, token_end);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; send(token, environment, number, message, flash, originator, account);<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// error</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>response;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(xmlHttp.status == 0) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response = <span style="color: rgb(127, 0, 127); ">&quot;Falscher Login?&quot;</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>error;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>errorstart = xmlHttp.responseText.indexOf(<span style="color: rgb(127, 0, 127); ">&quot;message&quot;</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(errorstart != -1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorstart += 10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>errorend = xmlHttp.responseText.indexOf(<span style="color: rgb(127, 0, 127); ">&quot;\&quot;&quot;</span>,errorstart);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error = xmlHttp.responseText.substring(errorstart, errorend);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error = <span style="color: rgb(127, 0, 127); ">&quot;Unbekannter Fehler&quot;</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response = error;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// output the error message</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById(<span style="color: rgb(127, 0, 127); ">'message'</span>).innerHTML = response;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// wait...</span><br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; };<br />}</p>
<p>&nbsp;</p>
<p><b>3. Invoking the SMS interface</b></p>
<p>As described in the <a href="http://www.developergarden.com/index.php?id=511&amp;L=0&amp;vURL=ch04s04s06.html&amp;cHash=eda154fb039dede7add1a14583fbf08a" class="external-link-new-window" >documentation</a>, the parameters “Environment”, “Number”, “Message”, “Flash”, “Originator” and “Account” are sent to the interface. The abovementioned token is used for authentication with the service.<br />After the request has successfully been sent out (readyState == 4), analysis of the API request can take place. Any errors arising must be intercepted here.</p>
<p>&nbsp;</p>
<p style="background-color: rgb(247, 247, 247); font-family: Courier New; font-size: 12px; "><b><span style="color: rgb(0, 0, 127); ">function </span></b>sendmsg(token, environment, number, message, flash, originator, account) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;<br />&nbsp; <b><span style="color: rgb(0, 0, 127); ">var </span></b>xmlHttp = getXMLHTTP();<br />&nbsp; xmlHttp.open(<span style="color: rgb(127, 0, 127); ">&quot;POST&quot;</span>,<span style="color: rgb(127, 0, 127); ">&quot;https://gateway.developer.telekom.com/p3gw-mod-odg-sms/rest/&quot;</span>+environment+<span style="color: rgb(127, 0, 127); ">&quot;/sms&quot;</span>, true);<br />&nbsp; xmlHttp.setRequestHeader(<span style="color: rgb(127, 0, 127); ">&quot;Authorization&quot;</span>, <span style="color: rgb(127, 0, 127); ">&quot;TAuth realm=\&quot;https://odg.t-online.de\&quot;, tauth_token=\&quot;&quot;</span>+token+<span style="color: rgb(127, 0, 127); ">&quot;\&quot;&quot;</span>);<br />&nbsp; xmlHttp.send(<span style="color: rgb(127, 0, 127); ">&quot;number=&quot;</span>+number+<span style="color: rgb(127, 0, 127); ">&quot;&amp;message=&quot;</span>+encodeURIComponent(message)+<span style="color: rgb(127, 0, 127); ">&quot;&amp;flash=&quot;</span>+flash+<span style="color: rgb(127, 0, 127); ">&quot;&amp;originator=&quot;</span>+originator+<span style="color: rgb(127, 0, 127); ">&quot;&amp;account=&quot;</span>+account);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;<br />&nbsp; xmlHttp.onreadystatechange = <b><span style="color: rgb(0, 0, 127); ">function</span></b>() {<br />&nbsp;&nbsp;&nbsp; <b><span style="color: rgb(0, 0, 127); ">if </span></b>(xmlHttp.readyState == 4) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// received, OK</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// further processing</span><br />&nbsp;&nbsp;&nbsp; } <b><span style="color: rgb(0, 0, 127); ">else </span></b>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 127, 0); ">// wait...</span><br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp; };<br />}</p>
<p>&nbsp;</p>
<p>The interface aggregation is now almost complete and it remains to create a small GUI along with the XML definition file.</p>
<h2>Functions of the gadget</h2>
<p>The Send SMS Sidebar gadget implements all of the functions offered by the Send SMS interface. Thus, for example, any alphanumerical sender ID or, via a validation function, a real telephone number can be used as the sender.<br />It is also possible to decide whether to send a “normal” or “Flash SMS”. Flash SMS appear directly in the display (not in the Inbox folder) and cannot be stored.<br />Other functions include: Using sub- accounts, requesting credit, an address book and logging, character counting and message compression. It is also possible to send SMS to a predefined recipient list (in CSV format).</p>
<h2>Downloading and installing</h2>
<p>The gadget can be downloaded&nbsp;<a href="http://www.developergarden.com/apis/applications/sendsmsgadget" class="external-link-new-window" >here</a>. To install, launch the .gadget file.<br />In order to view the source text, the file extension can be changed from .gadget to .zipped and the file can be extracted.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Tue, 11 Oct 2011 11:41:00 +0200</pubDate>
			
		</item>
		
	</channel>
</rss>
