<?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>Anders Hassis &#187; Programmering</title>
	<atom:link href="http://hassis.com/category/programmering/feed/" rel="self" type="application/rss+xml" />
	<link>http://hassis.com</link>
	<description>DID MMORPGS OVERWRITE YOUR COMMON SENSE?</description>
	<lastBuildDate>Sat, 31 Jul 2010 11:20:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Riding the Rails: Aktiva menyobjekt</title>
		<link>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/</link>
		<comments>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 11:17:49 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=325</guid>
		<description><![CDATA[Fredrik W visade mig en riktigt stilig sak häromdagen på ett Rails-projekt vi håller på med. Att göra layouter och framför allt visa vilket menyobjekt som är &#8221;aktivt&#8221;, dvs vilken sida du är på just nu. Lägg in denna helpern, i exempelvis application_helper.rb: def menu_item&#40;text, link, options = &#123;:use_span =&#62; false, :only_controller =&#62; false&#125;&#41; active [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitsamppixels.com/">Fredrik W</a> visade mig en riktigt stilig sak häromdagen på ett Rails-projekt vi håller på med. Att göra layouter och framför allt visa vilket menyobjekt som är &#8221;aktivt&#8221;, dvs vilken sida du är på just nu. </p>
<p>Lägg in denna helpern, i exempelvis application_helper.rb:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> menu_item<span style="color:#006600; font-weight:bold;">&#40;</span>text, link, options = <span style="color:#006600; font-weight:bold;">&#123;</span>:use_span <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span>, <span style="color:#ff3333; font-weight:bold;">:only_controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
   active = Rails.<span style="color:#9900CC;">application</span>.<span style="color:#9900CC;">routes</span>.<span style="color:#9900CC;">recognize_path</span> link
   text = content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;span&quot;</span>, text<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:use_span</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
   link_is_currently_active = options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:only_controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> ? params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> : params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:action</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:action</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
   klass = link_is_currently_active ? <span style="color:#996600;">&quot;active&quot;</span> : <span style="color:#996600;">&quot;&quot;</span>
   <span style="color:#0000FF; font-weight:bold;">return</span> content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;li&quot;</span>, link_to<span style="color:#006600; font-weight:bold;">&#40;</span>text, link<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#ff3333; font-weight:bold;">:class</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> klass<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> menu<span style="color:#006600; font-weight:bold;">&#40;</span>options = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;ul&quot;</span>, options, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Vi läser alltså av existerande routen och jämför den med menyobjektets. Så nu istället för att länk runt dig i applikationen med <em>link_to</em> så kan du nu använda blocket <em>menu</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span> menu <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;%</span>= menu_item <span style="color:#996600;">&quot;Link 1&quot;</span>, project_path<span style="color:#006600; font-weight:bold;">&#40;</span>@project<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;%</span>= menu_item <span style="color:#996600;">&quot;Link 2&quot;</span>, project_medias_path<span style="color:#006600; font-weight:bold;">&#40;</span>@project<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span></pre></div></div>

<p>Vips, så har vi nu fått en lista med det aktiva objektets klass som &#8221;<em>active</em>&#8221;. </p>
<p>Nu är det klart att detta är en väldigt begränsad lösning och kanske inte lämpar sig i större projekt med stora menystrukturer, men för enklare projekt fungerar detta alldeles utmärkt.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=325&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress pluginguide: Sätta ny titel i en shortcode</title>
		<link>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/</link>
		<comments>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 15:59:04 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=280</guid>
		<description><![CDATA[Jag håller på med ett Reddit-liknande WordPress-plugin på ett projekt hos Populate. Systemet listar ett antal frågor som du som besökare kan &#8221;rösta upp&#8221;, sedan visar man de populäraste frågorna och lite annat. Varje fråga har en egen landningssida, exempelvis /fraga/10 (där 10 är id:t på frågan). Landningssidan och listningen av frågorna definieras av shortcodes [...]]]></description>
			<content:encoded><![CDATA[<p>Jag håller på med ett <a href="http://www.reddit.com">Reddit</a>-liknande WordPress-plugin på ett projekt hos <a href="http://www.populate.se">Populate</a>. </p>
<p>Systemet listar ett antal frågor som du som besökare kan &#8221;rösta upp&#8221;, sedan visar man de populäraste frågorna och lite annat. Varje fråga har en egen landningssida, exempelvis /fraga/10 (där 10 är id:t på frågan). Landningssidan och listningen av frågorna definieras av shortcodes i sidor, exempelvis: [poll_show_single] och [poll_list]. </p>
<p>På sidan som innehåller [poll_show_single], i det här fallet är det sidan &#8216;fraga&#8217;, vill jag ha möjlighet att sätta frågans rubrik som ny titel (via filtret wp_title). </p>
<p>Det går tyvärr inte att ändra titeln inifrån shortcoden, utan man får identifiera vilken sida som shortcoden finns på och sen sätta titeln separat. Detta kan du göra på följande sätt:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> locate_shortcode <span style="color: #009900;">&#40;</span><span style="color: #000088;">$shortcode</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$search</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>?<span style="color: #0000ff;">&quot; OR &quot;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;post_content LIKE '%<span style="color: #006699; font-weight: bold;">$shortcode</span>%'&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT ID,post_title,post_name,post_content FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> WHERE <span style="color: #006699; font-weight: bold;">$search</span> AND post_type='page'&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_title</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_name</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'uri'</span> <span style="color: #339933;">=&gt;</span> get_page_uri<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Sedan läser du av den:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$pollSingle</span> <span style="color: #339933;">=</span> locate_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'poll_show_single'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
<span style="color: #000088;">$pollSingleURI</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$pollSingle</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uri'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Då får jag fram vilken sida som innehåller shortcoden för att visa en enskild fråga, därefter kan jag haka in mig på filtret &#8216;wp&#8217; och sätta titeln:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'titles'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I titels() kollar vi sedan upp om vi står på rätt sida (den som finns i $pollSingleURI) och jämför den med $wp_query->query['pagename']:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> titles<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">,</span> <span style="color: #000088;">$newTitle</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pollSingleURI</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Single poll</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pagename'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$pollSingleURI</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\d+\/?$/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'page'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$pollID</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'page'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT subject FROM <span style="color: #009933; font-weight: bold;">%s</span>poll WHERE id = <span style="color: #009933; font-weight: bold;">%d</span> LIMIT 1&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prefix</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">escape</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pollID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Set title</span>
      <span style="color: #000088;">$newTitle</span> <span style="color: #339933;">=</span> esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">subject</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'frontend_set_title'</span> <span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ovanstående SQL-fråga hämtar just nu frågans titel, men detta ändrar du givetvis till det du vill ha som titel.</p>
<p>Och eftersom PHP fortfarande har lite problem med closures/anonyma funktioner så måste titeln sättas separat:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> frontend_set_title<span style="color: #009900;">&#40;</span><span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #000088;">$separator</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$newTitle</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$newTitle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$separator</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Allt är ryckt ur en klass för att lättare kunna visa hur det fungerar, därav alla globala variabler *urk*. Denna metod kräver inga &#8221;rewrites&#8221; eller &#8221;template redirect intercepts&#8221;.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=280&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visa ID på Media i WordPress</title>
		<link>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/</link>
		<comments>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 11:46:37 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=250</guid>
		<description><![CDATA[Jag hade nyss ett behov på jobbet att visa vilket ID ett objekt har i mediaredigeraren (WordPress). Detta kan vara bra att ha när man ska bygga gallerier, framförallt när man exkluderar vissa bilder genom att använda ID:et. Kod: add_filter&#40;'attachment_fields_to_edit', 'enable_media_id', 10, 2&#41;; function enable_media_id&#40; $form_fields, $post &#41; &#123; $form_fields&#91;&#34;enable-media-id&#34;&#93; = array&#40;&#34;label&#34; =&#62; &#34;MediaID&#34;, &#34;input&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Jag hade nyss ett behov <a href="http://www.populate.se">på jobbet</a> att visa vilket ID ett objekt har i mediaredigeraren (WordPress). Detta kan vara bra att ha när man ska bygga gallerier, framförallt när man exkluderar vissa bilder genom att använda ID:et.</p>
<p>Kod:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'attachment_fields_to_edit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'enable_media_id'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> enable_media_id<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$form_fields</span><span style="color: #339933;">,</span> <span style="color: #000088;">$post</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$form_fields</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;enable-media-id&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;label&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;MediaID&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;input&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;html&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;html&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;&lt;p&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/p&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$form_fields</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Bild på hur det kommer se ut:<br />
<a href="http://hassis.com/wp-content/uploads/2010/06/mediaexempel.jpg" rel="lightbox[250]" title="mediaexempel"><img src="http://hassis.com/wp-content/uploads/2010/06/mediaexempel-287x300.jpg" alt="" title="mediaexempel" width="287" height="300" class="alignnone size-medium wp-image-253" /></a></p>
<p>(Jag såg idag att någon hade önskat denna funktionaliteten på <a href="http://wordpress.org/extend/ideas/topic/display-id-of-pictures">WordPress.org -> Ideas</a>)</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=250&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R.I.P PHPSidan 2002-2010</title>
		<link>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/</link>
		<comments>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 17:55:03 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Personligt]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=224</guid>
		<description><![CDATA[Läs om PHPSidans historia fram tills nedläggningen, PHPSidan var ända fram tills slutet en av Sveriges ledande diskussionsforum för webbutveckling, främst inom PHP.]]></description>
			<content:encoded><![CDATA[<p><em>PHPSidan var ända fram tills nedläggningen en av Sveriges ledande diskussionsforum för webbutveckling, främst inom PHP.</em></p>
<p>PHPSidan startades av mig och Björn Enochsson i högstadiet (2002) som ett roligt projekt, främst för att jag ville lära mig PHP bättre. På den tiden höll jag på med ASP (Classic) och hade precis börjat titta på PHP. Namnet PHPSidan kommer ifrån den kända <a href="http://www.aspsidan.se">ASPsidan</a>.</p>
<p>I början driftade jag PHPSidan på en server som jag hade hemma hos mina föräldrar i Orsa, efter ett tag så växte sidan sig allt för stor för att jag skulle vilja drifta den på en ostabil 0.5 Mbit/s -lina. Därefter fick vi sponsring från lite olika håll innan vi till slut hamnade hos <a href="http://www.loopia.se">Loopia</a>. </p>
<h3>Så, vad hände sen?</h3>
<p>Väldigt mycket (de första åren), sen blev det mindre och mindre tid över till PHPSidan från både mitt och Björns håll. Om jag inte minns fel så var det 2006 vi släppte PHPSidan version 6, därefter gjorde vi många försök för att få klart en helt ny version som skulle passa våra (och hela webbens) nya behov bättre. Men på grund av tidsbristen så blev aldrig den nya versionen riktigt klar.</p>
<p>En av mina personliga anledningar till att PHPSidan aldrig färdigsställdes, var att jag blev mer och mer övertygad om att de engelska resurserna som fanns (finns) är så mycket bättre än det vi kan publicera. Därför kände jag aldrig det personliga behovet av att göra allt det som de gjorde, fast på svenska.</p>
<h3>Nu då?</h3>
<p>Efter en lång tids velande så tog vi beslutet att lägga ner PHPSidan. Besökarantalet på sidan har sakta men säkert dalat. Jag bestämde att jag inte ville att någon skulle ta över PHPSidan och driva vidare den. En av anledningarna till det beslutet är att domänen fortfarande används aktivt av mig. Att låta någon ta över en viss &#8221;del&#8221; av domänen, men att jag får behålla någon slags kontroll över eposten kändes inte riktigt rätt mot den personen, den personen skulle nog aldrig kunna satsa 110% på PHPSidan utan fullständig kontroll över domänen.</p>
<p>Jag antar att jag samtidigt på något sätt ville att PHPSidan v7 skulle göras på &#8221;mitt&#8221; sätt.</p>
<p>PHPSidan har betytt enormt mycket för mig personligen, jag har fått vänner som jag fortfarande har kontakt med och träffar aktivt. Jag har fått höra från många andra att PHPSidan har betytt väldigt mycket och fått dem att börja med programmering.</p>
<p>Strax innan nedläggningen så startade några på PHPSidan upp <a href="http://phpsverige.se/">PHP Sverige</a>, jag hoppas att många hittar dit och att de gör något riktigt bra av den sidan. Några andra webbplatser ni kan besöka ifall för PHP-relaterade ämnen är <a href="http://www.w3sidan.net">W3sidan</a> och <a href="http://www.phpportalen.net">PHPportalen</a>. Det är fortfarande aktivitet på IRC-kanalen #phpsidan på Quakenet ifall ni känner för att prata med någon av oss.</p>
<h3>Summan av kardemumman</h3>
<p>Tack för denna tid allihop, hoppas vi hörs på andra diskussionsforum och om inte annat så hör gärna av er till mig för att snacka webb. Stort tack till <a href="http://www.loopia.se">Loopia</a> för att ni har tagit hand om oss så länge!</p>
<h3>Nostalgitripp</h3>
<p>Här kan vi se olika utseenden som PHPSidan haft under åren som gått. Ni kan även se några av de tidiga konceptbilderna på version 7.</p>

<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan/' title='phpsidan'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan-150x150.jpg" class="attachment-thumbnail" alt="phpsidan" title="phpsidan" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/attachment/3/' title='3'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/3-150x150.jpg" class="attachment-thumbnail" alt="3" title="3" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan4_1/' title='phpsidan4_1'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan4_1-150x150.jpg" class="attachment-thumbnail" alt="phpsidan4_1" title="phpsidan4_1" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan5/' title='phpsidan5'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan5-150x150.jpg" class="attachment-thumbnail" alt="phpsidan5" title="phpsidan5" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/v6/' title='v6'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/v6-150x150.jpg" class="attachment-thumbnail" alt="v6" title="v6" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/final/' title='final'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/final-150x150.jpg" class="attachment-thumbnail" alt="final" title="final" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/php/' title='PHP'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/PHP-150x150.gif" class="attachment-thumbnail" alt="PHP" title="PHP" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsajt/' title='phpsajt'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsajt-150x150.gif" class="attachment-thumbnail" alt="phpsajt" title="phpsajt" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/v7temp/' title='v7temp'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/v7temp-150x150.jpg" class="attachment-thumbnail" alt="v7temp" title="v7temp" /></a>

<img src="http://hassis.com/?ak_action=api_record_view&id=224&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Nyheter kring Shopp 1.1</title>
		<link>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/</link>
		<comments>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/#comments</comments>
		<pubDate>Sun, 30 May 2010 17:03:23 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Shopp]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=216</guid>
		<description><![CDATA[Utveckligen av Shopp går i en rasande fart framåt. Just nu fokuserar utvecklarna främst på att se till att göra kodbasen stabil och se till att allting fungerar. Jag nämnde i mitt senaste inlägg kring Shopp att en alpha-version skulle dyka upp ganska kort efter att det postades. Den har dykt upp för ganska länge [...]]]></description>
			<content:encoded><![CDATA[<p>Utveckligen av <a href="http://www.shopplugin.net">Shopp</a> går i en rasande fart framåt. Just nu fokuserar utvecklarna främst på att se till att göra kodbasen stabil och se till att allting fungerar. </p>
<p>Jag nämnde i mitt <a href="http://hassis.com/2010/01/23/blandad-information-om-shopp/">senaste inlägg kring Shopp</a> att en alpha-version skulle dyka upp ganska kort efter att det postades. Den har dykt upp för ganska länge sedan och det ser riktigt bra ut, det som har fått mycket fokus är baksidan, alltså källkoden, det gör att det inte är några jättestora förändringar utseendemässigt. Det är förvisso lite enklare att hitta i orderdetaljerna och en andra småsaker.</p>
<p>Något som jag trivs riktigt bra med är hanteringen av betalningsmodulerna, jag var med Jonathan Davis (huvudutvecklare) en kväll och vi gjorde i ordning Payson-modulen så den är kompatibel med 1.1. Jisses vilken skillnad i kod jämfört med den tidigare versionen 1.0.x.</p>
<p>Momssatser för specifika kategorier är även det möjligt, men det är lite finputsning på det kvar innan den fungerar klockrent. </p>
<h3>Så, när kommer den?</h3>
<p>Det som just nu tar tid är QA-delen, att se till att allting funkar. Det har varit lite dåligt med testning från min egen sida, men jag räknar med att sätta igång ordentligt någon gång under nästa vecka. Det nämndes i en <a href="http://www.wptavern.com/jonathan-davis-via-wordcamp-raleigh">videointervju med Jonathan</a> att de siktade på slutet av juni, men det är flytande.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=216&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Min guide till Whilenium</title>
		<link>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/</link>
		<comments>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/#comments</comments>
		<pubDate>Sat, 29 May 2010 15:52:52 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Assembler]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=200</guid>
		<description><![CDATA[I en projektkurs den här perioden &#8221;Operativsystem&#8221; har vi skapat ett ganska grundläggande operativsystem vid namn &#8221;Whilenium&#8221;, vi har kört det genom Simics med emulering av MIPS. Simics beskrivs så här av Wikipedia: Simics is a full-system simulator used to run unchanged production binaries of the target hardware at high-performance speeds. Simics was originally developed [...]]]></description>
			<content:encoded><![CDATA[<p>I en projektkurs den här perioden &#8221;Operativsystem&#8221; har vi skapat ett ganska grundläggande operativsystem vid namn &#8221;Whilenium&#8221;, vi har kört det genom Simics med emulering av MIPS. Simics beskrivs så här av Wikipedia: </p>
<blockquote><p>Simics is a full-system simulator used to run unchanged production binaries of the target hardware at high-performance speeds. Simics was originally developed by the Swedish Institute of Computer Science (SICS), and then spun off to Virtutech  for commercial development in 1998.</p></blockquote>
<p>Vårt operativsystem har i korta drag följande funktioner:
<ul>
<li>Skapa flera processer</li>
<li>Köra processerna samtidigt</li>
<li>Skicka och ta emot I/O</li>
</ul>
<p><a href="http://hassis.com/wp-content/uploads/2010/05/Whilenium-HelloWorld.png" rel="lightbox[200]" title="Hello World"><img src="http://hassis.com/wp-content/uploads/2010/05/Whilenium-HelloWorld.png" alt="" title="Hello World" width="493" height="264" class="alignnone size-full wp-image-201" /></a></p>
<p>Däremellan är det väldigt mycket saker varje process ska kunna göra (och inte göra), exempelvis ska processerna kunna avsluta varandra, inte dela minne med varandra etc.</p>
<p>Det har varit en väldigt intressant kurs som byggde på en tidigare väldigt teoretisk kurs med mycket praktiskt arbete. Det som var svårast var nog att förstå kopplingen mellan C och Assembler. Därefter stötte vi på en del problem vad gäller schemaläggningen av processer samt få till systemanropen för att hoppa mellan <a href="http://en.wikipedia.org/wiki/User_space">&#8221;User-space&#8221; och &#8221;Kernel-space&#8221;</a></p>
<p>För de som är intresserade kan ni ladda ner <a href='http://hassis.com/wp-content/uploads/2010/05/os-2010.zip'>källkoden</a> och se (den väldigt korta) <a href='http://hassis.com/wp-content/uploads/2010/05/Whilenium_User_guide.pdf'>dokumentationen</a> här. Ni kan även besöka <a href="http://code.google.com/p/os-2010/">vårt projekt på Google Code</a>.</p>
<p>Källkoden har en del struktureringsbrister och är inte helt komplett dokumenterad, det hann vi inte med i slutspurten av projektet.</p>
<p><a href="http://hassis.com/wp-content/uploads/2010/05/Grupp-5.jpg" rel="lightbox[200]" title="Gruppfoto"><img src="http://hassis.com/wp-content/uploads/2010/05/Grupp-5.jpg" alt="" title="Gruppfoto" width="527" height="344" class="alignnone size-full wp-image-211" /></a><br />
Tack till Jesper Friberg, Oskar Wirén och <a href="http://www.daniellervik.com">Daniel Lervik</a> för ett bra arbete!</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=200&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8221;They want users on modern browsers”</title>
		<link>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/</link>
		<comments>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:49:39 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=191</guid>
		<description><![CDATA[Rubriken är en del av ett twitter-inlägg postat av Rey Bango och handlar om Internet Explorer 9 som släpptes som en preview idag. Istället för att jag ska skriva om denna händelse så tänkte jag länka till några andra läsvärda inlägg om detta: Mikael Söderström: En första titt på Internet Explorer 9 Net tuts: IE9 [...]]]></description>
			<content:encoded><![CDATA[<p>Rubriken är en del av ett twitter-inlägg postat av <a href="http://twitter.com/reybango/status/10577319636">Rey Bango</a> och handlar om Internet Explorer 9 som släpptes som en preview idag.</p>
<p>Istället för att jag ska skriva om denna händelse så tänkte jag länka till några andra läsvärda inlägg om detta:</p>
<ul>
<li><a href="http://weblogs.asp.net/mikaelsoderstrom/archive/2010/03/17/en-f-246-rsta-titt-p-229-internet-explorer-9.aspx?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+MikaelSoderstrom+%28Mikael+S%C3%B6derstr%C3%B6m%29">Mikael Söderström: En första titt på Internet Explorer 9</a></li>
<li><a href="http://net.tutsplus.com/articles/news/ie9-may-actually-be-a-great-browser/">Net tuts:  IE9 May Actually Be a Fantastic Browser </a></li>
<li><a href="http://robertnyman.com/2010/03/17/testing-the-internet-explorer-platform-preview-ie9-reviewing-the-good-the-bad-and-the-main-letdown/">Robert Nyman: Testing the Internet Explorer Platform Preview (IE9) – reviewing the good, the bad and the main letdown</a></li>
</ul>
<p>Trevlig läsning! Jag säger som min gode vän <a href="http://parhaggstrom.com">Pär Häggström</a> sa: &#8221;Om Microsoft inte gjort rätt den här gången kommer jag aldrig förlåta dem!&#8221;</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=191&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enkelt shell skrivet i C</title>
		<link>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/</link>
		<comments>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:17:32 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=185</guid>
		<description><![CDATA[Tänkte snabbt lägga upp koden som vi gjorde i en skoluppgift. Uppgiften gick ut på att skapa en del i ett shell-script, närmare bestämt den delen där kommandon som skrivs i shellet &#8221;pipas&#8221;. #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;string.h&#62; #include &#60;ctype.h&#62; #include &#60;unistd.h&#62; &#160; #include &#60;sys/types.h&#62; #include &#60;sys/wait.h&#62; &#160; /* The array below will hold [...]]]></description>
			<content:encoded><![CDATA[<p>Tänkte snabbt lägga upp koden som vi gjorde i en skoluppgift. Uppgiften gick ut på att skapa en del i ett shell-script, närmare bestämt den delen där kommandon som skrivs i shellet &#8221;pipas&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;ctype.h&gt;</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
&nbsp;
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/wait.h&gt;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* The array below will hold the arguments: args[0] is the command. */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span><span style="color: #339933;">*</span> args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
pid_t pid<span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> command_pipe<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">#define READ  0</span>
<span style="color: #339933;">#define WRITE 1</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*
 * Handle commands separatly
 * input: return value from previous command (useful for pipe file descriptor)
 * first: 1 if first command in pipe-sequence (no input from previous pipe)
 * last: 1 if last command in pipe-sequence (no input from previous pipe)
 *
 * EXAMPLE: If you type &quot;ls | grep shell | wc&quot; in your shell:
 *    fd1 = command(0, 1, 0), with args[0] = &quot;ls&quot;
 *    fd2 = command(fd1, 0, 0), with args[0] = &quot;grep&quot; and args[1] = &quot;shell&quot;
 *    fd3 = command(fd2, 0, 1), with args[0] = &quot;wc&quot;
 *
 * So if 'command' returns a file descriptor, the next 'command' has this
 * descriptor as its 'input'.
 */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> command<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> pipettes<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* Invoke pipe */</span>
	pipe<span style="color: #009900;">&#40;</span> pipettes <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	pid <span style="color: #339933;">=</span> fork<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/*
	 SCHEME:
	 	STDIN --&gt; O --&gt; O --&gt; O --&gt; STDOUT
	*/</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>pid <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>first <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;&amp;</span> last <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> input <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// First command</span>
			dup2<span style="color: #009900;">&#40;</span> pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> STDOUT_FILENO <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>first <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> last <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> input <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Middle command</span>
			dup2<span style="color: #009900;">&#40;</span>input<span style="color: #339933;">,</span> STDIN_FILENO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			dup2<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> STDOUT_FILENO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Last command</span>
			dup2<span style="color: #009900;">&#40;</span> input<span style="color: #339933;">,</span> STDIN_FILENO <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>execvp<span style="color: #009900;">&#40;</span> args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> args<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			_exit<span style="color: #009900;">&#40;</span>EXIT_FAILURE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// If child fails</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>input <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> 
		close<span style="color: #009900;">&#40;</span>input<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Nothing more needs to be written</span>
	close<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// If it's the last command, nothing more needs to be read</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>last <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		close<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>READ<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> pipettes<span style="color: #009900;">&#91;</span>READ<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Final cleanup, 'wait' for processes to terminate.
 *  n : Number of times 'command' was invoked.
 */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> cleanup<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> n<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> n<span style="color: #339933;">;</span> <span style="color: #339933;">++</span>i<span style="color: #009900;">&#41;</span> 
		wait<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> run<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span> line<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* number of calls to 'command' */</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SIMPLE SHELL: Type 'exit' or send EOF to exit.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Print the command prompt */</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$&gt; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		fflush<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* Read a command line */</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>fgets<span style="color: #009900;">&#40;</span>line<span style="color: #339933;">,</span> <span style="color: #0000dd;">1024</span><span style="color: #339933;">,</span> stdin<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
			<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #993333;">int</span> input <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
		<span style="color: #993333;">int</span> first <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd <span style="color: #339933;">=</span> line<span style="color: #339933;">;</span>
		<span style="color: #993333;">char</span><span style="color: #339933;">*</span> next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* Find first '|' */</span>
&nbsp;
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>next <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* 'next' points to '|' */</span>
			<span style="color: #339933;">*</span>next <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
			input <span style="color: #339933;">=</span> run<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			cmd <span style="color: #339933;">=</span> next <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* Find next '|' */</span>
			first <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		input <span style="color: #339933;">=</span> run<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cleanup<span style="color: #009900;">&#40;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> split<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> run<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	split<span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>strcmp<span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;exit&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> 
			exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		n <span style="color: #339933;">+=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> command<span style="color: #009900;">&#40;</span>input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> last<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span><span style="color: #339933;">*</span> skipwhite<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> s<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>isspace<span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">++</span>s<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> s<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> split<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	cmd <span style="color: #339933;">=</span> skipwhite<span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span><span style="color: #339933;">*</span> next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>next <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		next<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
		args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cmd<span style="color: #339933;">;</span>
		<span style="color: #339933;">++</span>i<span style="color: #339933;">;</span>
		cmd <span style="color: #339933;">=</span> skipwhite<span style="color: #009900;">&#40;</span>next <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cmd<span style="color: #339933;">;</span>
		next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		next<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">++</span>i<span style="color: #339933;">;</span> 
	<span style="color: #009900;">&#125;</span>
&nbsp;
	args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<img src="http://hassis.com/?ak_action=api_record_view&id=185&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blandad information om Shopp</title>
		<link>http://hassis.com/2010/01/23/blandad-information-om-shopp/</link>
		<comments>http://hassis.com/2010/01/23/blandad-information-om-shopp/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 15:16:16 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Shopp]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=166</guid>
		<description><![CDATA[Jag får ganska mycket frågor om WordPress-tillägget Shopp som jag är inblandad i, så jag tänkte ta tillfället i akt och skriva om det. Payson-betalningsmodul Det finns en betalningsmodul för Payson att köpa som tillägg i Shopp. Jag är inte ansvarig för utvecklingen av den, det sköter Ingenesis Ltd (företaget bakom Shopp), däremot så har [...]]]></description>
			<content:encoded><![CDATA[<p>Jag får ganska mycket frågor om <a href="http://www.wordpress.org">WordPress</a>-tillägget <a href="http://www.shopplugin.net">Shopp</a> som jag är inblandad i, så jag tänkte ta tillfället i akt och skriva om det.</p>
<h3>Payson-betalningsmodul</h3>
<p>Det finns en betalningsmodul för <a href="http://www.payson.se">Payson</a> att köpa som tillägg i Shopp. Jag är inte ansvarig för utvecklingen av den, det sköter Ingenesis Ltd (företaget bakom Shopp), däremot så har jag hjälpt till i utvecklingen.</p>
<p>Det har även kommit till min kännedom att det finns ex. rabatter inte fungerar fullt ut, vi får se ifall Ingenesis Ltd väljer att åtgärda dessa innan 1.1 (se mer nedan).</p>
<h3>Svenska översättningen</h3>
<p>Jag underhåller och uppdaterar för närvarande den svenska översättningen av Shopp. Hittar ni någon översättning som inte stämmer eller någon som saknas någonstans i systemet, <a href="http://hassis.com/kontakt/">kontakta mig</a> så ska jag försöka ordna det.</p>
<h3>Shopp 1.1</h3>
<p>Jag är med i beta-teamet för Shopp, det innebär att jag hjälper till att hitta buggar och kan lägga in förslag på nya funktioner. <span style="text-decoration: line-through;">Det var tänkt att det skulle bli en 1.0.18 av Shopp,  men den idén har slopats och de kommer att satsa på 1.1</span> Jag vet inte när 1.0.18 kommer. Förhoppningsvis dyker en alpha-version upp ganska kort (~1 vecka).</p>
<p>Några av nyheterna i 1.1</p>
<ul>
<li><strong>Ny hantering av betalningsmoduler/fraktmoduler</strong><br />
Systemet som finns just nu för att skriva egna betalningslösningar/fraktmoduler är rent ut sagt obegripligt. Det kommer att ändras till det bättre och förhoppningsvis bli riktigt bra!</li>
<li><strong>Moms<br />
</strong>Just nu finns det inga möjligheter att sätta specifik moms på vissa produkter, det kommer förhoppningsvis att komma med i 1.1</li>
<li><strong>Sessionshantering</strong><br />
I dagsläget är det ganska rörigt att hålla koll på sessioner som skapas i Shopp och WordPress. Drömmen vore ifall WordPress implementerade ett eget system som andra tillägg kan &#8221;hooka&#8221; in sig på, men jag har inte sett något om det på deras tidsplan.</li>
</ul>
<p>Ni kan läsa tidsplanen i sin helhet på Shopps webbplats: <a href="http://docs.shopplugin.net/Beta_Team:Roadmap">Beta_Team:Roadmap</a></p>
<img src="http://hassis.com/?ak_action=api_record_view&id=166&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/01/23/blandad-information-om-shopp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Vad jag saknar i WordPress</title>
		<link>http://hassis.com/2010/01/08/saker-jag-ogillar-med-wordpress/</link>
		<comments>http://hassis.com/2010/01/08/saker-jag-ogillar-med-wordpress/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 19:18:29 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=146</guid>
		<description><![CDATA[2010-01-08 20:39 &#8211; Ändrade rubriken från &#8221;Saker jag ogillar med WordPress&#8221; till &#8221;Vad jag saknar i WordPress&#8221; WYSIWYG Snarare: WYSIWTF (What You See Is WTF). Den ursprungliga idén med editorn var att förhindra att folk la in komplexa HTML-stycken, men just nu begränsar den alldeles för mycket. Den fungerar för den vanliga användaren, men så [...]]]></description>
			<content:encoded><![CDATA[<p><em>2010-01-08 20:39 &#8211; Ändrade rubriken från &#8221;Saker jag ogillar med WordPress&#8221; till &#8221;Vad jag saknar i WordPress&#8221;</em></p>
<h3>WYSIWYG</h3>
<p>Snarare: WYSIWTF (What You See Is WTF). Den ursprungliga idén med editorn var att förhindra att folk la in komplexa HTML-stycken, men just nu begränsar den alldeles för mycket. Den fungerar för den vanliga användaren, men så fort jag försöker göra något utöver det vanliga får jag ta till lite knep och knåp för att få det att fungera.</p>
<h3>Standardinstallationen</h3>
<p>Då WordPress är en så pass populär mjukvara så gör det att många WordPress-installationer blir mål vid en eventuell säkerhetslucka. Om denna säkerhetslucka utnyttjar något som ingår i standardinstallationen (ex: databasprefix eller administratörskontot) så är många illa ute.</p>
<p>Saker jag gör vid en nyinstallation:</p>
<ul>
<li>Ändrar databasprefixet</li>
<li>Byter administratörskontots användarnamn</li>
<li>Flyttar ut wp-config.php utanför WordPress-katalogen (oåtkomlig)</li>
<li>Ser till att rättigheterna på katalogerna stämmer</li>
<li>(<em>Tema</em>) Tar bort WordPress versionsnummer i head-taggen.</li>
</ul>
<p>Jag skulle även gärna vilja byta ut alla hänvisningar till WordPress-kataloger på webbplatsen (ex: wp-content), just nu är det för mycket meck för att detta ska vara hållbart. Mycket av ovanstående saker borde användaren tvingas göra vid installationen (möjligt att detta försämrar WordPress &#8221;välkänt&#8221; korta installationstid).</p>
<h3>Sidhantering och menylistning</h3>
<p>Just nu är sidhanteringen ohållbar, för att få menyobjekt att <a href="http://core.trac.wordpress.org/ticket/2702">hamna i den ordning jag vill</a> utan att hålla koll på prioriteten så krävs ett tillägg som ex. <a href="http://wordpress.org/extend/plugins/pagemash/">pageMash</a>.</p>
<p>Det finns heller ingen chans att utesluta sidor i administrationen utan det görs manuellt via <em>wp_list_pages()</em> eller ett plugin som <a href="http://wordpress.org/extend/plugins/page-lists-plus/">Page Lists Plus</a> (där jag även kan vilja vilket namn som ska synas i menyn).</p>
<h3>Javascript</h3>
<p>Bättre möjligheter för att få kontroll över vilka Javascript och stilmallar som köas. Jag skulle vilja ha möjlighet att <a href="http://wordpress.org/extend/plugins/wp-js/">bunta ihop dessa</a> till en fil. Mycket av ansvaret för att köa filer ligger på tilläggsutvecklare, många lägger in dessa manuellt utan att köa dem.</p>
<h3>Några småsaker</h3>
<ul>
<li>Det finns ingen möjlighet till intern länkning. Ex: <a href="http://wordpress.org/extend/plugins/rb-internal-links/">RB Internal Links</a></li>
<li><a href="http://core.trac.wordpress.org/ticket/9674">&#8221;Custom fields&#8221;</a> &#8211; bättre möjligheter för att lätt kunna skapa olika typer av mallar där fördefinerade fält enkelt kan fyllas i (dålig förklaring?).</li>
<li>Page vs Posts &#8211; Blir alldeles för krångligt så fort jag försöker kombinera två loopar, suck&#8230;</li>
</ul>
<h3>Sammanfattning</h3>
<p>Jag hoppas att många av dessa saker ordnas i WordPress 3.0, det mesta av detta går att lösa genom att använda tredjeparts-tillägg. Jag tror att dessa saker skulle gå att lägga in i kärnan utan att göra den bloatad eller att krångla till det för mycket för slutanvändaren.</p>
<p>Trots ovanstående &#8221;brister&#8221; så gillar jag WordPress och projektet utvecklas åt rätt håll känns det som.</p>
<p>(Ovanstående lista är skriven med fokus på WordPress som CMS, inte bloggverktyg)</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=146&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/01/08/saker-jag-ogillar-med-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
