Although the most Germans don't get from their seats I will have a beer on the 5th birthday of Umbraco.
So if you are in the area just join me to take a beer or two for the 5th Umbraco Birthday Meetup in Bad Homburg
Location Address is:
Hofgut Kronenhof, Zeppelinstraße 10, 61352 Bad Homburg, http://www.hofgut-kronenhof.de,
Goggle Maps
Start time is: 9:00 pm
End time is: open end
let's have a nice birthday evening...
Please let me know if you will join: http://our.umbraco.org/events/umbraco-5th-birthday-meetup-in-bad-homburg
As mentioned on Twitter I have published the new version (v2.0) of my ClientTools as Release Candidate 1 today.
If you don't know the ClientTools here just a short summary: the ClientTools is a windows form application which connects to one or more umbraco installations via webservices to maintain these. It adds some usefull and easy to use features like the log viewer and the version cleaner. I started the ClientTools back in 2007 and didn't touched it for more than a year. Now I did a redesign concentrating on v4.x of Umbraco.
In the settings windows you define the Umbraco installations you want to maintain with the ClientTools. Add a new profile, edit the username, password and the url of the ClientToolsWebservices.asmx file on your umbraco installation. Remember: if you check the save password option the password is saved as clear text on the hard drive.
The LogViewer is the most used feature by myself. It gives you the option to check the log table of umbraco. You can filter by various options (by log text, by date, by log header, the user id or node id). You can also set the number of the rows to return. Also you can easily delete selected logs:
The version cleaner is new due to the fact that umbraco does not have a build in mechanism to delete old or messy versions (I will add an event handler to this project for that soon). Atm there is only the tree view for the version cleaner, but it shows you how much versions every node has and how much versions the nodes below are using. You can select unwanted versions and delete them. Versions which are the newest or the published cannot be deleted.
The next weeks I will publish RC2 including the grid view version cleaner and the option to delete versions by number of versions to leave or by date.
Suggestions and comments are welcome.
Cheers, Thomas
After a long pause I will continue blogging about Umbraco. The first post will cover a the solution for a question Sebastiaan asked via Twitter. He mentioned that his editors are used to search nodes via the build in search from Umbraco. Umbraco 4.0.x and lower uses Lucene for indexing and searching the nodes. You can implement the frontend search also with Lucene using the same index. But as I had Sebastiaan also had many problems with Lucene, let's say it is unstable. These problems had been one reason for me to create the Simple Search for Umbraco (SS4U [project page on our and Codeplex]).
Let's recap: the SS4U is a search engine which iterates through the nodes in the umbraco.presentation.nodefactory namespace and compares the nodes values.
To get SS4U working you have to configure it like I described in the project documentation. I added the following xml to my config file:
<?xml version="1.0"?>
<SimpleSearch4Umbraco xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SearchDefinition name="Umbraco Backend Search" iterationType="IterateAll" isDefault="true">
<DocumentType alias="Person" category="Employee" includeChildNodes="true" testNodeName="true">
<Property alias="Name" comparisonType="String" comparison="Contains" />
<Property alias="Prename" comparisonType="String" comparison="Contains" />
</DocumentType>
</SearchDefinition>
</SimpleSearch4Umbraco>
Now to replace the Umbraco UI Search I added a new project to my SS4U with two Web Forms in different folders, both named Search.aspx and derived from umbraco.BasePages.UmbracoEnsuredPage. The first one will replace the auto complete search from the search box in the upper left. I also added the following code to the Page_Load event:
if (helper.Request("q").Trim() != "" && getUser() != null)
{
var query = helper.Request("q").Trim();
var searcher = new Searcher();
var results = searcher.Search(query, null, "Umbraco Backend Search");
var items = new List<SearchItem>();
items.AddRange((from x in results
select
new SearchItem
{
Author = "",
ChangeDate = DateTime.Now,
Description = x.Text,
Icon = "",
NodeId = x.Id,
ObjectType = Guid.Empty,
Tags = null,
Title = x.Text
}).Take(20));
var rh = new ResultHelper(items);
var js = new JavaScriptSerializer();
Response.Write(js.Serialize(rh));
}
As you can see it does nearly the same as the original Search.aspx from Umbraco. This code replaces only the search engine but uses the returning helpers like the original code does. In this way you don't have to fuddle in the Java Scripts to get the auto complete to work, just replace the search.aspx located in the umbraco/dashboard folder with the new created. And it works:
To replace the search dialog I took the search.aspx located in the umbraco/dialogs folder and replaced the code in the DoSearch method:
private void DoSearch()
{
string query = keyword.Text.Trim();
var searcher = new Searcher();
var results = searcher.Search(query, null, "Umbraco Backend Search");
var result = new XmlDocument();
result.LoadXml("<results/>");
foreach (var si in results)
{
var x = xmlHelper.addTextNode(result, "result", si.Text);
x.Attributes.Append(xmlHelper.addAttribute(result, "id", si.Id.ToString()));
x.Attributes.Append(xmlHelper.addAttribute(result, "icon", ""));
x.Attributes.Append(xmlHelper.addAttribute(result, "title", si.Text));
x.Attributes.Append(xmlHelper.addAttribute(result, "author", ""));
x.Attributes.Append(xmlHelper.addAttribute(result, "changeDate", ""));
result.DocumentElement.AppendChild(x);
}
searchResult.XPathNavigator = result.CreateNavigator();
}
As well as for the auto complete I replaced only the search engine and used the return helpers the original code uses:
If you need another UI Search than Lucene you only have to replace two Web Forms just outputting the same formats as the original ones do.
To use SS4U to do the UI Search you have to be aware that SS4U searches only the published nodes and the search for a node id will not work (atm). The performance shouldn't be that a problem for sites with <= 10k nodes.
v4.1 of Umbraco comes with Umbraco Examine which uses the new Lucene versions. Hopefully this version will be stable enough to use it in production.
The code of SS4U is checked in on codeplex. I will update our and the download from codeplex the next days.
Ralf Schoch will present Umbraco on the DNUG Meeting in Karlsruhe on next Thursday (09/17/08). As I talked to Ralf I will join the meeting to support him if needed.
If you are interested just view his blog post or check in.
I have published the version 0.3 of my Simple Search for Umbraco.
This includes only two additional functions which gives you the possibillity to add your own Search definition on runtime.
e.g.:
var sd = new SearchDefinition { IsDefault = true, IterationType = IterationType.IterateAll, Name = "MySearchDefinition" };
var dt = new DocumentType { Alias = "blog.com.Post", Category = "Blog Post", TestNodeName = true, IncludeChildNodes = false };
sd.DocumentTypes.Add(dt);
dt.Properties.Add(new Property { Alias = "bodyText", ComparisonType = ComparisonType.String, Comparison = Comparison.Contains });
dt.Properties.Add(new Property { Alias = "umbracoTags", ComparisonType = ComparisonType.String, Comparison = Comparison.Contains });
var searcher = new Searcher();
searcher.Search(sd, "PHRASE TO SEARCH", null);
Download it from Codeplex or from our.umbraco.org
Feedback is welcome,
Thomas
05.19.12 16:58: @Cayas_Software Wird erst August, die Räder müssen noch gegossen werden ;-)
05.19.12 16:14: Hoffe nur ich schaffe es rechtzeitig zum Freund zum gucken, hier ist nachher die Bude voll mit Mädels
05.19.12 16:12: Noch 2 1/2 h bis zum Spiel, sollte mal so langsam den Fußballmodus anschalten
05.19.12 16:08: @fpf_baden @AlexZeitler lol... Nee, die Spülmaschine ist leider komplett hin, jetzt bin ich die Spülmaschine ;-)
05.19.12 15:40: Jetzt zum ersten mal für 10 min heute hingesetzt. Frau hat Geburtstag und wir ne kaputte Spülmaschine #fb
![]()
This blog is written by Thomas Höhler. Living next to Frankfurt, Germany,
I am trying to share my experiences about
Umbraco [the most flexible CMS I know],
my ClientTools for Umbraco,
and some other more or less usefull stuff