Sunday, December 22, 2002
There are certainly more questions than answers here. Most are answered on the tips pages. I'd hoped to summarize them here but I don't have the time or brains. I'm expecting future versions of CityDesk to have more documentation that some of the problems will just go away. Check out Darren's FAQ too. He has more answers than I do.
1. Can you use an external editor with articles?
No, you can't use the "Open with" command for article. Folks would like to because CityDesk's article editor is not as strong as other products. One alternative is to paste the HTML between CityDesk and your favorite editor.
2. How to manage tables in an article?
The article editor doesn't have table commands. Folks who can deal with HTML can manage tables that way. Otherwise you can paste in tables from another editor (Most folks know MS Word) or refer to question 1.
3. How to manage bookmarks with scripts?
Here is the unbulleted script:
{$ foreach 3 x in (and(folder "Minutes")(not(keyword_contains "archive"))) $}{$ x.headline$}
{$next$}You'll have to do this in HTML view:
<UL>
{$ foreach 3 x in (and(folder "Minutes")(not(keyword_contains "archive"))) $}<LI>{$x.headline$}</LI>
{$next$}
</UL>The reason that you have to do it in HTML view is that in HTML it's not really allowed to put anything between the <UL> and the first <LI>, so the For Each will actually get moved somewhere else by the dang WYSIWYG editor.
Joel
4. How to build tables with scripts?
Here is a nice script to build a table of your articles
<TABLE width="100%" border=1>
<TBODY>
<TR>
<TD><STRONG><FONT size=1>Headline</FONT></STRONG></TD>
<TD><STRONG><FONT size=1>File Name</FONT></STRONG></TD>
<TD><STRONG><FONT size=1>Author</FONT></STRONG></TD>
<TD><STRONG><FONT size=1>Date Filed</FONT></STRONG></TD>
<TD><STRONG><FONT size=1>Keywords</FONT></STRONG></TD>
<TD><STRONG><FONT size=1>Link</FONT></STRONG></TD></TR>
<TR>
<TD><FONT size=1>{$ foreach x in (all) SortAscendBy .link$}</FONT> </FONT>
<TR>
<TD><B><FONT size=1>{$x.headline$}</FONT></B></TD>
<TD><FONT size=1>{$x.filename$}</FONT></TD>
<TD><FONT size=1>{$x.author$}</FONT></TD>
<TD><FONT size=1>{$x.fileddate$}</FONT></TD>
<TD><FONT size=1>{$x.keywords$}</FONT></TD>
<TD><A href="{$x.link$}"><FONT size=1>{$x.link$}</FONT></A></TD></TR>
<TR>
<TD><FONT size=1>{$next$}</FONT> </FONT></TD></TR></TBODY></TABLE>
5. How to get at the .cty data with Access, with Excel?
6. How to manage HTML in extra fields?
7. What are the secrets to multilingual sites?
8. Hot to use keywords to manage audiences?
Guide to formatting "and's" and "or's" in CityScript.
Trick for using keywords to list folder names.
Build a table of articles, urls, authors, keyword's, etc.
How to manage scripting languages in CityDesk?
Managing scripting languages with {$ and $}
What the story on non-breaking spaces?
When undo doesn't work.
Tip's for managing "printable versions"
How to manage single paragraph articles?
Where can I find more CityDesk templates and script examples?
How to recover when you delete your .cty file?
How to put keywords in the your page title and meta tags?
Things folks really would like to do but you just can't do yet.
What are some bugs or "features" that we need to know about?
How to generate SHTML, XML, Word documents, PDF files, etc.?
How does CityDesk count pages?
When we go to publish, we count all files and articles. (Files include anything you see in the main window that's not a folder or article, including pictures, CSS files, whatever you stick in there). If the number exceeds the limit for your version we warn you and refuse to publish.
What the problem with folder and files having the same name?
How to save time with Ctrl-A and Ctrl-S?
Use Ctrl-A to select "all" in articles an extra fields. Doesn't work for variables though.
Use Ctl-S to save without closing.
Tips on converting existing sites to CityDesk.
How to work with external editors?
The best tricks for getting, editing, and managing images.
How to make an image link to an external URL.
How to submit a feature request.
To help us out, when you suggest things that you would like CityDesk to do that it doesn't currently do, try to phrase your request in terms of the objective you're after and not in terms of UI design.
It helps us a lot more if you say "I need my gizakozoid to be able to accept input from the Garzoman!" instead of "you need to add a window on the right with 3 buttons and a dropdown that says 'gigakozoid' but only show it if I select the option 'Garzoman input from gigakozoid' in the options dialog".
The reason for this is because we spend a lot of time trying to make our product usable and at the same time robust enough to handle all the new features that you want. A lot of time we spend days and days thinking about how to implement something so that it makes the least disruption possible and keeps the flow of the program going. It's all too easy to envision your ideal user interface and describe it in detail, but fail to realize all of the other competing interface problems and the constant battle to keep things simple.
Have you ever seen a program with an options dialog that makes you dizzy? It has 1000 tabs with little checkboxes that say "Enable x100 compatibility mode in the SYS.VXD driver" or little Advanced buttons which bring up another layer of options. Programmers sometimes think that because they CAN program something, they SHOULD. So if user A asks for a mode where pressing I switches to insert mode and user B asks for a mode where pressing I switches to italics mode, they'll make it possible with a little checkbox in the options dialog. Eventually they get enough of these requests that their program looks like a big mess and no one ventures into the sticky dark mess that used to be an options dialog but now looks like a development environment. But choosing not to implement a feature a certain way and maybe solving the user's problem in a different way they hadn't thought about is actually more powerful and keeps your program understandable. Plus sometimes you can solve different seemingly unrelated requests with one well thought out design.
Although I'm sure many of you are more than qualified to design the user interface for CityDesk, its easier for us to do since we have the database full of bugz and user comments which we somehow have to filter down to constructive changes to the software. We also spend all day (and night) thinking about it and have the general future goals in mind. I have to correct Joel's recent essay where he said "Customers don't know what they want" - as a lot of people in the discussion forum noted, customers DO know what they want! They just don't always ask for it in a way that means something constructive to a software designer.
Thanks for all the great comments and questions and keep the bug reports (and feature requests) coming! SP1 is right around the corner.
What are some real-life things I might want to do with If statements?
I've got an IF statement example.
I use this script in an article on my main page, to create a archive page
that is a list of links to Articles in a folder named "News". The link
text includes the headline - fileddate, if there is a headline and the
fileddate alone if the headline is empty.<UL>
{$ foreach x in (folder"News") SortDescendBy .fileddate $}
<LI>
<A href="{$ x.link$}">
{$ if nonblank x.headline $} {$ x.headline $} - {$ endif $} {$x.fileddate $}
</A>
</LI>
{$ next $}</UL>
Rod
Things to look for in script errors and how formatting codes can muck up your script.