Flex 2 front end for BlogCFC
A few months ago (actually, back earlier this year), I worked on a Flex 2 front end for BlogCFC. This was a bit difficult because I had not built BlogCFC to be used in that way. (In other words, Ray's fault, not Flex's fault.) I had a lot of help from Mike Nimer on this - so he deserves the credit. You can view source by doing a right click. Notice that I had to rename the blogproxy CFC to a text file so the server could load it up. Anyway, I'll be writing an article for Adobe.com later this week about my experiences building it. Enjoy.
BlogCFC attacked by the Green Flex Monster
Comments
That's pretty cool Ray.The back button thing is kinda weird. May just have to get used to it.On the Search panel, what's the difference between the button Search and Show All? Oh, I think I just figured it out. Show All is the default view. Gotcha. Any reason why a Show All click is slow to finish?Is this done using FR or Web Services?
# Posted By BL
| 8/31/06 3:45 PM
Line returns don't seem to work on the flex add comment.
# Posted By BL
| 8/31/06 3:46 PM
Not t
# Posted By Tom Cornilliac
| 8/31/06 3:52 PM
Pretty slick interface. I'm always surprised at how responsive flex interfaces are compared to their ajax equivalents.
# Posted By Adam Fortuna
| 8/31/06 4:16 PM
Not bad at all Ray! Of the few attempts I've seen at a Flex front-end on a blog this is by far the best. A few observations...
* The search doesn't seem to be listening for the RETURN key. Why make a user reach for the mouse when their hands are already on the keyboard? For that matter why even have the button?
* There's something about the "Canvas 1.5 Released" entry that causes the Entry tab to render bullets on every entry. Both Windows and Mac.
* The "Show All" buttons on Categories and Search are awkward and not very intuitive IMO. Two suggestion below to replace them.
* On the Categories pod why not replace the button with an "ALL" category?
* Having the search results appear in the Entries datagrid feels too much like a page refresh and IMO defeats the Rich Interface. Would it be better to leave the datagrid as is and expand the Search pod vertically with the results? You really don't need the calendar at this point so you could hide that and expand the Search pod down in its place. Give the user an option to collapse/hide the search and the Calendar would reappear.
* At first blush I couldn't figure this out (if it's even possible) but it would be helpful if you could select a date range on the calendar.
* The search doesn't seem to be listening for the RETURN key. Why make a user reach for the mouse when their hands are already on the keyboard? For that matter why even have the button?
* There's something about the "Canvas 1.5 Released" entry that causes the Entry tab to render bullets on every entry. Both Windows and Mac.
* The "Show All" buttons on Categories and Search are awkward and not very intuitive IMO. Two suggestion below to replace them.
* On the Categories pod why not replace the button with an "ALL" category?
* Having the search results appear in the Entries datagrid feels too much like a page refresh and IMO defeats the Rich Interface. Would it be better to leave the datagrid as is and expand the Search pod vertically with the results? You really don't need the calendar at this point so you could hide that and expand the Search pod down in its place. Give the user an option to collapse/hide the search and the Calendar would reappear.
* At first blush I couldn't figure this out (if it's even possible) but it would be helpful if you could select a date range on the calendar.
# Posted By Tom Cornilliac
| 8/31/06 4:18 PM
Yeah the paragraphFormat() doesn't work with stuff returned from a flash form... I had to do a replace on like chr(13) or something like that to get it to go it correctly.
# Posted By J.J. M
| 8/31/06 4:28 PM
Is it possible to display HTML in the entry section?? or if it is already done . . why the code blocks do not look the same? I like it better in the HTMl version.
# Posted By Cheve
| 8/31/06 4:51 PM
Tom, thanks for the suggestions. I'm going to try them out tomorrow. As for the broken page (Canbas 1.5), I have no idea. Do you see anything in the code that would make it break like that?
# Posted By Raymond Camden
| 8/31/06 4:53 PM
Wow, man really cool sample,
# Posted By Igor
| 8/31/06 5:20 PM
This question is slightly out of context, do all Flex interfaces have a hard coded size? It seems that most that I've seen are either full screen, or set to a specific non-adjustable size.
Your interface looks pretty handy.
Your interface looks pretty handy.
# Posted By Dan Sorensen
| 8/31/06 6:34 PM
Wow, there is very impressive, nice job!
# Posted By Bill
| 8/31/06 7:53 PM
it will probably help if i posted this comment to the correct post....seems like the vPosition of the Entry text box does not always return to '0' when selecting a new entry.also, would be cool to save name and email of commenters in a sharedObject.
# Posted By todd
| 8/31/06 8:24 PM
Looks good, adding this comment from it, don't see how I subscribe to the thread, but a good start. As a BlogCFC customer, when do I get it :)
# Posted By Dale Fraser
| 8/31/06 9:34 PM
@Dale: Right click, view source. Take it.
@Dan: No, you can do relative sizes.
@Dan: No, you can do relative sizes.
# Posted By Raymond Camden
| 8/31/06 9:52 PM
wer
# Posted By wer
| 9/1/06 1:19 AM
Is it a Flash or Flex thing (or me)? But my mouses scroll wheel doesn't work with the panes.
# Posted By Andy J
| 9/1/06 2:26 AM
Nice enough, still a bit rough though, just little things like the categories box should flow to max height, as should this comments box.I must try writing a Flex frontend for Drupal.
# Posted By Tom Chiverton
| 9/1/06 3:23 AM
It there anew way to lay our hands on source code for "org.camden.blog.blogproxy" POJO file?
Currenlt, I am particulary interested to display the full text from external blog RSS entry at my Flex application, but I am stumpled upon the limitation of RSS 2.0 specification:
"RSS 2.* core specification does not support providing full-text in addition to a synopsis"
Looks like, you had made some workarounds in your Flex 2 based UI, because the text of ANY RSS entry is displayed in full.
Currenlt, I am particulary interested to display the full text from external blog RSS entry at my Flex application, but I am stumpled upon the limitation of RSS 2.0 specification:
"RSS 2.* core specification does not support providing full-text in addition to a synopsis"
Looks like, you had made some workarounds in your Flex 2 based UI, because the text of ANY RSS entry is displayed in full.
# Posted By JabbyPanda
| 9/1/06 4:21 AM
Jabby, if you read the blog entry, you will note that the file is in there, but renamed. By "in there", I mean do the right click view source thing and you will see the cfc in the list, but renamed to a .txt file.
# Posted By Raymond Camden
| 9/1/06 5:59 AM
Looks really cool. One comment though. You probably shoud make the images open up in a new window when clicked. Now they open in the same window, and when I hit the back-button the flex ui relaods with the top post open, and not the one I clicked from.
# Posted By Trond Ulseth
| 9/1/06 7:57 AM
[Posting from Flex UI ]Wow Ray this is good. When are you gonna using the FDS . Posted earlier under the wrong entry
# Posted By Rahul Narula
| 9/1/06 9:52 AM
This really slick . . .
# Posted By Lola Lee Beno
| 9/1/06 10:32 AM
Excellent job Ray! I do miss the Google ads. :)
# Posted By Mike K
| 9/1/06 11:53 AM
It's nice and all but it fails in a single manner which is kind of important. SEOYou don't have the page content mirrored to the base page source which means the page is not ranked for what it contains. Having a non-Flex version of the page becomes manditory in a lot of cases then, which defeats much of the purpose of the Flex page. Bottom line (for me) is that until solid papers on SEO and Flex are put out (some exist, but mostly for Flash and SEO), Flex will be of limited use as a page replacement for front end sites that depend on Search Engines. On the other hand, backend and non-search engine using sites will have no problems.
# Posted By Michael Dinowitz
| 9/1/06 11:57 AM
Very cool! Love the interface...
# Posted By Sam Clement
| 9/1/06 3:08 PM
ok, now this is just my two cents... the color scheme... first, I think you should control the themeColor so it doesn't clash so much with the rest...
you know which color scheme of yours I like? Galleon's color scheme... it's great! especially when you combine firefox "Modern Modoki" theme... I told you it was only two cents worth!
you know which color scheme of yours I like? Galleon's color scheme... it's great! especially when you combine firefox "Modern Modoki" theme... I told you it was only two cents worth!
# Posted By Michael White
| 9/3/06 6:33 PM
oh, and a little white space (margins) on the bottom pane will go a long way
# Posted By Michael White
| 9/3/06 6:36 PM
I think a Flex front-end for the blogCFC ADMIN would be really useful and makes total sense. However, I just don't think that Flex should be the front end for blogs. Blogs follow a content publishing model, not something (in my opinion) that lends itelf to a full-blown RIA. I know this is a proof of concept, but I also know that if you put something like this out there, we'll end up seeing a lot of blogs front-ended with Flex that have serious usability, and as Michael D. points out, SEO issues.
# Posted By Rob Brooks-Bilson
| 9/5/06 4:19 PM
Please note that I have no plans on replacing my blog with a flex version. It truly is an example. I agree that SEO concerns would need to be met.
# Posted By Raymond Camden
| 9/5/06 4:28 PM
Hi Raymond,
Thanks for an answer regarding open-sourcing server side code ;).
Although the "View source" package contains "blogproxycfc.txt" file I would name the supplied server-side code incomplete.
For example, in function "getBlog":
-----------------------------------
<cffunction name="getBlog" access="private" output="false">
<cfreturn application.blog>
</cffunction
-------------------------------
what "application.blog" stands for?
Thanks for an answer regarding open-sourcing server side code ;).
Although the "View source" package contains "blogproxycfc.txt" file I would name the supplied server-side code incomplete.
For example, in function "getBlog":
-----------------------------------
<cffunction name="getBlog" access="private" output="false">
<cfreturn application.blog>
</cffunction
-------------------------------
what "application.blog" stands for?
# Posted By JabbyPanda
| 9/8/06 6:23 AM
Oh, I figured it out already, application.blog relates to BlogCFC itself :)
Please, disregard my previous comment.
Please, disregard my previous comment.
# Posted By JabbyPanda
| 9/8/06 6:25 AM
Cool. I know I've said, "Never use outside scopes in a CFC", but obviously that is a Never* (ie, 99%). Although to be honest, this is the only time I've done this outside of Controller CFCs in Model-Glue.
# Posted By Raymond Camden
| 9/8/06 6:39 AM
Hi, i want to index the cell value of a grid. how do i do that... something like myGrid[0][1].
I want to iterate the grid and get all the values.
I want to iterate the grid and get all the values.
# Posted By MrD
| 10/5/06 5:30 PM
The link is wroung in the Adobe article.
http://www.coldfusionjedi.com/BlogCFC/bin/blogcfc.... is the correct link.
http://www.coldfusionjedi.com/BlogCFC/bin/blogcfc.... is the correct link.
# Posted By Mike Collins
| 10/11/07 12:53 PM
Thanks Mike.
# Posted By Raymond Camden
| 10/11/07 1:03 PM
I'm getting a The page cannot be found error, is there a link I can see the finish product?
Thanks
Sophek
Thanks
Sophek
# Posted By sophek
| 10/15/07 10:39 PM
Never mind, spoke too soon.
# Posted By Sophek
| 10/15/07 10:40 PM
This has been moved to the new site, try http://www.coldfusionjedi.com/BlogCFC/bin/blogcfc.... instead of the link in the article above.
# Posted By Howard Fore
| 3/5/08 12:00 PM
Hello Ray - I love your Flex version of the blogCFC and I'd like to try it for myself. I'm having some difficulty with the provided CFC (I think). Currently, I have the CF-version of blogCFC running on my local machine and it works fine. @http://localhost:8500/blogcfc. It hooks up to the database, I can log in as admin and add blog entries.
I've downloaded the source code for the Flex blogCFC. There weren't any instructions with it like there was with the CF blogcfc, so I'm taking a wild stab in the dark and sticking it all inside my blogcfc directory (which I referenced above). The blogrproxy.cfc that came with the source I stuck in \org\camden\blog. Is this the correct setup for the Flex blogcfc?
In any case, when I run blogcfc.mxml, the Flex UI displays and i get a busy-cursor for about 3 seconds and then it goes back to the normal pointer. However, the application doesn't populate with the data stored in my database. Nothing happens.
Can you get me started here and point out what I'm missing? I am not sure if it's the location of these files or if I need to edit the blogproxy.cfc?? Any help is appreciated.
I've downloaded the source code for the Flex blogCFC. There weren't any instructions with it like there was with the CF blogcfc, so I'm taking a wild stab in the dark and sticking it all inside my blogcfc directory (which I referenced above). The blogrproxy.cfc that came with the source I stuck in \org\camden\blog. Is this the correct setup for the Flex blogcfc?
In any case, when I run blogcfc.mxml, the Flex UI displays and i get a busy-cursor for about 3 seconds and then it goes back to the normal pointer. However, the application doesn't populate with the data stored in my database. Nothing happens.
Can you get me started here and point out what I'm missing? I am not sure if it's the location of these files or if I need to edit the blogproxy.cfc?? Any help is appreciated.
# Posted By Tony E
| 3/26/08 10:01 AM
I don't actually have a copy of my Flex3/BlogCFC code right now in front of me - but you need to look at the RemoteObject code and see how it 'address' blogproxy. If it just "blogproxy", that means the CFC needs to be in the same directory as the flex code.
To be honest, the Flex code is so old now it may not work with recent BlogCFC instances.
To be honest, the Flex code is so old now it may not work with recent BlogCFC instances.
# Posted By Raymond Camden
| 3/26/08 10:41 AM
I had considered that the blogcfc code at the time this was developed is probably not how it is today, which bums me out. I am *sigh* just starting to work with CFC's in Flex, and I've mostly been learning by looking at examples like yours and reverse engineering the code to see how it all works.
Anyway, I simplified the remote object source to the site root and drop blogproxy.cfc in there as well. ServiceCapture says "Unable to invoke CFC" for the methods getCategories, getDisabledDays, and getEntries. Is this because it cannot locate blogproxy.cfc, or because the CFC is broken due to outdated code?
Anyway, I simplified the remote object source to the site root and drop blogproxy.cfc in there as well. ServiceCapture says "Unable to invoke CFC" for the methods getCategories, getDisabledDays, and getEntries. Is this because it cannot locate blogproxy.cfc, or because the CFC is broken due to outdated code?
# Posted By Tony E
| 3/26/08 12:10 PM
I'm guessing it can't find the cfc. What is the RemoteObject line? I mean paste it in.
# Posted By Raymond Camden
| 3/26/08 1:38 PM
<mx:RemoteObject id="blogService" destination="ColdFusion" source="blogproxy" showBusyCursor="true">
<mx:method name="getEntries" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="searchEntries" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getEntriesByDate" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getComments" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getEntriesForCategory" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
</mx:RemoteObject>
<mx:method name="getEntries" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="searchEntries" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getEntriesByDate" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getComments" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
<mx:method name="getEntriesForCategory" fault="showFault(event.fault)" result="getEntriesResult(event)"/>
</mx:RemoteObject>
# Posted By Tony E
| 3/26/08 1:44 PM
the blog app is in the /blogcfc/ directory in the wwwroot of CF. I've tried source="blogcfc.blogproxy" as well, and the default source value was "org.camden.blog.blogproxy" which I tried with blogproxy.cfc in the /blogcfc/org.camden/blog/ directory. Also tried blogcfc.org.camden.blog.blogproxy
# Posted By Tony E
| 3/26/08 1:47 PM
I'm adding a little piece to the BlogCFC for only making the input screens in Flex, and writing about the process on my blog, if you are interested check it out.
Need 10 Adobe Flex engineers:
1. You should have this skill set: "Adobe Flex + C#/Java + SQL Database".
2. You have to be living in United States, United Kingdom, Australia or Canada.
3. Work part time (through the Internet) OR full time with us (on site at our client's office).
4. Please send us your resume, expected salary, full time or part time, etc.
Busycode Inc. is a top Adobe Flex outsourcing service provider who develops Flex/AIR applications for clients.
Visit http://www.busycode.com , you will see we are all about Flex engineer, Flex programmer, Flex coder, Flex speciallist and Flex expert. If you are Mr. Flex or Miss Flex, join us now!
1. You should have this skill set: "Adobe Flex + C#/Java + SQL Database".
2. You have to be living in United States, United Kingdom, Australia or Canada.
3. Work part time (through the Internet) OR full time with us (on site at our client's office).
4. Please send us your resume, expected salary, full time or part time, etc.
Busycode Inc. is a top Adobe Flex outsourcing service provider who develops Flex/AIR applications for clients.
Visit http://www.busycode.com , you will see we are all about Flex engineer, Flex programmer, Flex coder, Flex speciallist and Flex expert. If you are Mr. Flex or Miss Flex, join us now!
Andy - this is the second time you have spammed my blog. When you did it last time - I asked you not to. You have ignored me. Do you honestly think you will get your hires by spamming people's blogs? Would anyone want to work for someone who spams? I would hope not. I'm keeping your two comments up for 'proof' of the spamming, but if you continue to do this I will delete your spam and add 'busycode.com' to my automatic block.
You are either incredibly persistent - or incredibly dumb.
You are either incredibly persistent - or incredibly dumb.
# Posted By Raymond Camden
| 4/20/08 11:01 PM
very thanks. harika bir çal??ma sa?olun
http://www.Aylak.com
http://www.Aylak.com

