Categories
post

Dojo dijit.form.Form submission with a dijit.form.Button

ARGH!!! I searched and searched for a very long time for this answer. I hope it helps someone.

I couldn’t seem to get the form to submit correctly. I tried various ways. Widget’s, non widgets, declarative, programmatic.

Turns out for some very strange reason, the form does not take kindly to data-dojo-type, it must use the older dojoType.

Categories
post

Getting “flags:FATAL unable to determine getopt version” while trying to do git flow init

I am preparing for a presentation on git flow for the Orlando PHP Users Group. I don’t use git flow on my laptop, so I thought I should set it up since the wireless is kind of spotty at our meeting place.

Installation was simple enough, however when trying to init I was receiving an error about getopt.

JC-PowerBook17:gitflow jcongdon$ git flow init
/opt/local/bin/gitflow-shFlags: line 119: 70405 Trace/BPT trap getopt > /dev/null 2>&1
flags:FATAL unable to determine getopt version

By running getopt directly I found this

JC-PowerBook17:gitflow jcongdon$ getopt
dyld: Library not loaded: /opt/local/lib/libintl.8.dylib
Referenced from: /opt/local/bin/getopt
Reason: no suitable image found. Did find:
/opt/local/lib/libintl.8.dylib: mach-o, but wrong architecture
Trace/BPT trap

Basically it looks like my libintl.8.dylib is not correct. I ran the following:

JC-PowerBook17:gitflow jcongdon$ otool -L /opt/local/lib/libintl.8.dylib
/opt/local/lib/libintl.8.dylib:
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.42.0)

I see that this is version 10.1.0. I then ran:

JC-PowerBook17:gitflow jcongdon$ otool -L /opt/local/bin/getopt
/opt/local/bin/getopt:
/opt/local/lib/libintl.8.dylib (compatibility version 9.0.0, current version 9.2.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)

WTF?!?!? getopt is looking for 9.2.0? It turns out that I tried doing something along time ago that messed up my libraries. Luckily I made a copy of them for some unknown reason. I just copied my backup version over the old one and it works. I probably broke something else in the meantime though. :’-(

Categories
post

jQuery Multiple Column AutoComplete (multicolumn)

I was searching for a way to do a jQuery multicolumn autocomplete with a search box, and kept coming up short. The solutions out there were more table based, with a single row of similar data.

On http://www.bowlingball.com I wanted to have 3 distinct columns when someone searched, the first was for product, the second for articles, and the third column would contain any matching pro shops.

Here’s how I did it, not saying this is elegant, but it works.
1) Create a custom autocomplete widget, based on the one that comes with jQueryUI.
2) Override the _renderMenu function
a) This sets up my columns, and their headers
b) Used CSS to format and float them so that they are side by side.
c) Used $.each to run through the items, examine item.category (set via Ajax data) and appended that to the appropriate column
3) Created a _renderItem that creates each individual item.
a) This creates the div of the item to be appended. It checks for certain pieces such as an image and uses that to create the view

Using jQueryUI autocomplete:

$.widget(“custom.catcomplete”, $.ui.autocomplete, {
_renderMenu: function( ul, items ) {
var self = this;
ul.css(‘z-index’, ‘99999’);
ul.append(“<div id=’productColumn’><div class=’autoCellHeader’>Products</div></div>” +
“<div id=’articleColumn’><div class=’autoCellHeader’>BowlVersity Articles</div></div>” +
“<div id=’proshopColumn’><div class=’autoCellHeader’>Pro Shop Locator</div></div>” +
“<div style=’clear:both;’></div>”);
$.each( items, function( index, item ) {
var column = “#” + item.category + “Column”;
self._renderItem( ul.find(column), item);
});
},
_renderItem: function( appendTo, item) {
if (item.image) {
var cell = $(“<div class=’autoCell’></div>”);
cell.data( “item.autocomplete”, item )
var reviews = ”;
var image = ”;
var video = ”;
if (item.image) {
image = “<div class=’imgCell’><a href='” + item.value + “‘><img src='” + item.image + “‘ align=’left’ height=’35’ width=’35’/></a></div>”;
}
if (item.reviews) {
reviews = “<br/><a href='” + item.value +”&reviews=1#tabs’><img class=’reviews’ src='” + item.reviews + “‘ alt=’Read Reviews’ title=’Read Reviews’ />(” + item.reviewCount + ” reviews)<br/><img class=’reviews’ src=’http://c0004111.cdn.cloudfiles.rackspacecloud.com/ReadReviews_95x12.png’ alt=’Read Reviews’ title=’Read Reviews’ /></a>”;
}
if (item.video) {
video = “<a href='” + item.value + “&video=1#tabs’><img class=’video’ src=’http://c0004111.cdn.cloudfiles.rackspacecloud.com/WatchVideo_90x12.png’ style=’padding-left: 15px;’ alt=’Watch Video’ title=’Watch Video’ /></a>”;
}
cell.append( image + ‘<div><a href=”‘ + item.value + ‘”>’ + item.label + ‘</a>’ + reviews + video + ‘</div><div style=”clear:both;”></div>’ )
cell.appendTo( appendTo );
return cell;
}
else {
return $( “<div class=’autoCell’></div>” )
.data( “item.autocomplete”, item )
.append( ‘<a href=”‘ + item.value + ‘”>’ + item.label + ‘</a>’ )
.appendTo( appendTo );
}
}
});

 

My inspiration and guide came from http://stackoverflow.com/questions/2744747/quick-example-of-multi-column-results-with-jqueryuis-new-autocomplete which was using a table to align information.

Categories
post

My First Experience at the @OrlandoPHP Coding Dojo

I attended my first coding dojo last night for our Orlando PHP Meetup.

Boy was I confused. In my mind I was thinking the javascript library Dojo. I thought maybe they used Dojo as a front end to a PHP backend, and just did some coding samples. I have been wanting to use Dojo (the javascript library) lately, so that is why if was top of mind.

The coding dojo is interesting. Simply put, it’s like a karate dojo, in the sense that it is a programming practice. Pick a simple problem, lay the groundwork, and start developing. Not start coding. They guys running the group stress good TDD (Test Driven Design) practices, which was great. I heard many people last night say something to the effect that the project will take twice as long, because you are writing twice as much code.

While I feel I am a decent programming and make a living, I realize that there are many new programmers that come to these meetups. It was nice to feel like I was contributing to someone else’s learning. I was able to relay some of my personal experience with spaghetti code that I am working on untangling now. TDD is the best way for me to untangle the mess.

All in all, I prefer the presentations when they have them. I have volunteered to do one (I want to improve my speaking skills). I may not make all the dojo’s, only because I drive an hour each way, however I will definitely contribute to others learning when I can.

Thanks #OrlandoPHP