<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7254776892909370167</id><updated>2024-09-05T01:55:04.785-04:00</updated><title type='text'>Gemini Logic</title><subtitle type='html'>This blog is a record and CV of my web development projects.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geminiweblogic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7254776892909370167/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://geminiweblogic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rich Crabtree</name><uri>http://www.blogger.com/profile/05780583284859306500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7254776892909370167.post-7794172200329944515</id><published>2011-08-05T22:21:00.029-04:00</published><updated>2011-08-06T13:02:11.258-04:00</updated><title type='text'>Iframe Widget for MediaFrontPage</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-erLeeKIDdB4/Tjyl1NsdrMI/AAAAAAAABmY/9VMRjDWIgw8/s1600/mediafrontpage.jpeg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;br /&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 212px;&quot; src=&quot;http://4.bp.blogspot.com/-erLeeKIDdB4/Tjyl1NsdrMI/AAAAAAAABmY/9VMRjDWIgw8/s400/mediafrontpage.jpeg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5637563167188823234&quot; /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I have created a widget to display an iframe so I can add another webpage frem my HTPC to the MediaFrontPage dashboard.&lt;br /&gt;&lt;br /&gt;Create /var/www/mediafrontpage/widgets/wIframe.php&lt;br /&gt;&lt;div id=&quot;source-code&quot;&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$wdgtIframe = array(&quot;name&quot; =&amp;gt; &quot;Iframe Widget&quot;, &quot;type&quot; =&amp;gt; &quot;inline&quot;, &quot;function&quot; =&amp;gt; &quot;widgetIframe();&quot;);&lt;br /&gt;$wIndex[&quot;wIframe&quot;] = $wdgtIframe;&lt;br /&gt;&lt;br /&gt;function widgetIframe() {&lt;br /&gt;echo &quot;&amp;lt;iframe src=\&quot;http://tron:8080\&quot; width=\&quot;100%\&quot; height=\&quot;600\&quot;&amp;gt;&lt;br /&gt;&amp;lt;/iframe&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Change the iframe source to your url. Put the url between \&quot; and \&quot;&lt;br /&gt;&lt;br /&gt;Add the widget somewhere in /var/www/mediafrontpage/layout.php&lt;br /&gt;&lt;div id=&quot;source-code&quot;&gt;&lt;br /&gt;&quot;wIframe&quot; =&amp;gt; array(&lt;br /&gt;&quot;title&quot; =&amp;gt; &quot;AWX&quot;,&lt;br /&gt;&quot;display&quot; =&amp;gt; &quot;&quot;&lt;br /&gt;),&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Remove the comma if it is the last one in the array.&lt;br /&gt;&lt;br /&gt;There you have it, you can put any web page inside a widget in MediaFrontPage</content><link rel='replies' type='application/atom+xml' href='http://geminiweblogic.blogspot.com/feeds/7794172200329944515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geminiweblogic.blogspot.com/2011/08/iframe-widget-for-mediafrontpage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7254776892909370167/posts/default/7794172200329944515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7254776892909370167/posts/default/7794172200329944515'/><link rel='alternate' type='text/html' href='http://geminiweblogic.blogspot.com/2011/08/iframe-widget-for-mediafrontpage.html' title='Iframe Widget for MediaFrontPage'/><author><name>Rich Crabtree</name><uri>http://www.blogger.com/profile/05780583284859306500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-erLeeKIDdB4/Tjyl1NsdrMI/AAAAAAAABmY/9VMRjDWIgw8/s72-c/mediafrontpage.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7254776892909370167.post-4964571592571531218</id><published>2009-07-16T01:49:00.009-04:00</published><updated>2009-07-16T04:56:21.216-04:00</updated><title type='text'>Louisville Live Music</title><content type='html'>&lt;a href=&quot;http://louisvillelivemusic.com/&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;LouisvilleLiveMusic.com&lt;/span&gt;&lt;/a&gt; is my premier website. It evolved from my music Meetup group as a way to inform people of music performances happening in Louisville that don&#39;t have an associated Meetup event. In order to reduce the amount of editing required, I have automated it so that content comes from event descriptions written by the musicians and venues, mostly from Facebook, but I use other sources as well.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_0Wi39_-ryic/Sl7piJNPAJI/AAAAAAAAAAk/OSGw8ZUuC3I/s1600-h/llm-screenshot.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 178px; height: 200px;&quot; src=&quot;http://4.bp.blogspot.com/_0Wi39_-ryic/Sl7piJNPAJI/AAAAAAAAAAk/OSGw8ZUuC3I/s200/llm-screenshot.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5358977379413721234&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;How it works:&lt;/span&gt;&lt;br /&gt;I created a Facebook application called event-tools that gets data from all the FB events that are in my FB calendar through the FB API and copies it to my website&#39;s database. A cron job automates this process. I need only click on the event or rsvp for it to appear in my calendar and event-tools takes it from there.&lt;br /&gt;&lt;br /&gt;Once in the database, the events are displayed on louisvillelivemusic.com. Pretty straight forward so far.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Here&#39;s where it get&#39;s interesting:&lt;/span&gt;&lt;br /&gt;Another cron job publishes the data back to FB on my website&#39;s fanpage wall  through the event-tools application and FB API. This is useful because not all my FB friends and fans are friends with  the musicians and venues so they might not see all of the events that I do. This benefits the musicians and venues by increasing attendance to events, benefits fans by informing them of events they might not know about, and benefits me by increasing awareness of Louisville Live Music. Everyone benefits!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;That&#39;s the main part of it. I also have created:&lt;/span&gt;&lt;br /&gt;Scapers that get content from other locations like Meetup and various venue&#39;s calendars,&lt;br /&gt;an RSS feed, and a fully AJAXified content management system for editing and greenlighting the database entries.&lt;a href=&quot;http://louisvillelivemusic.com/images/gemini-cms.jpg&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_0Wi39_-ryic/Sl7piHeFjRI/AAAAAAAAAAs/g9AOf-dVtf4/s1600-h/gemini-cms.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 130px;&quot; src=&quot;http://2.bp.blogspot.com/_0Wi39_-ryic/Sl7piHeFjRI/AAAAAAAAAAs/g9AOf-dVtf4/s200/gemini-cms.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5358977378947534098&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Planned improvements:&lt;/span&gt;&lt;br /&gt;In addition to pushing the events to the fanpage as they come in, I will also have the publisher re- send alerts for events happening &quot;Tonight - &quot;.&lt;br /&gt;Make the website W3C validated. The RSS feed is already because it has to be.&lt;br /&gt;Integrate with the Meetup API instead of using their RSS feed. (a lot of work for little benefit)&lt;br /&gt;Improve and update the CMS system. It is very out of date. It was designed around an old model for the site but still works and is still very useful. (I&#39;m quite proud of it) It is also the most complex piece of code on the site.&lt;br /&gt;&lt;br /&gt;I will post a record here of improvements as I make them, and also list planned improvements so I don&#39;t forget.&lt;br /&gt;&lt;a href=&quot;http://www.facebook.com/pages/Louisville-Live-Music/103798312970&quot;&gt;&lt;br /&gt;Facebook Page&lt;/a&gt; &lt;a href=&quot;http://louisvillelivemusic.com/&quot;&gt;Website&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://geminiweblogic.blogspot.com/feeds/4964571592571531218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geminiweblogic.blogspot.com/2009/07/louisville-live-music.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7254776892909370167/posts/default/4964571592571531218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7254776892909370167/posts/default/4964571592571531218'/><link rel='alternate' type='text/html' href='http://geminiweblogic.blogspot.com/2009/07/louisville-live-music.html' title='Louisville Live Music'/><author><name>Rich Crabtree</name><uri>http://www.blogger.com/profile/05780583284859306500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_0Wi39_-ryic/Sl7piJNPAJI/AAAAAAAAAAk/OSGw8ZUuC3I/s72-c/llm-screenshot.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>