Scripting Helma |
Controlling the form behaviour
matthias
19:50h
Last time our application was able to create forums, but in a VERY uncontrolled way. .hac Helma Actions .hac files are functions(), which can be called via an URL. That means our "add a new forum" function will be a .hac file, which we can call via a link on the start page. So lets create a new .hac file, which we will call "addforum.hac" in the root directory. apps/forum/root/addforum.hac and clean up the code in main.hac and add there a link: apps/forum/root/main.hac the only line which is new is This means the user is send to the page "main" in root. This is the same, as the user would click a link in hers browser.
... Link
Adding Forums to our application
matthias
10:43h
Today you will learn, how to create new forums, and how to render a list of them on our start page. The first thing we need is a new prototype, for the forums. A prototype in Helma is represented by a new folder in our application folder. In our case this is: apps/forum In OOP language, this folder is the class which describes the properties and holds the methods. To declare new properties we will use the type.properties file and to create new methods, we will just add .hac files or functions() in .js files. So what does this mean for the non-programming-pro? In our forum application we want to be able to create new forums. But Helma, doesn't know what a forum is like, what it can do and what it can store. So we need to describe a prototype of this forum. You can imagine this as the production line, or form, that will produce our forums. (with the exception, that when we change something in our production line, it will also affect the already produced objects). To create a new prototype in Helma, we just add a folder to our application directory. We will call this folder "forum". The complete path is: apps/forum/forum . It has no meaning or relevance, that the application folder, and the folder for our first own prototype are named the same. create a main.hac file in the newly created folder. Open it in a text editor and type in: res.write("I'm a forum"); Now if open the URL http://localhost:8080/forum/forum/main in your browser: Nothing will happen!? That' because we just created the prototype of a forum, and not an actual forum (-object) itself. Adding and storing properties and objects The only object we have so far is the root object. The root object, is created as soon as we create our new application. We can use the root folder in our application directory to describe and script it, like we did this with our start page. And the root object is persistent! That means, when we add or change a property than it will be still there after we stop and restart Helma. To make another object, than root persistent we need to "add" it to an already persistent object. And at the beginning of an application this is the root object. Before we add new forums, we test how to add and change properties of root. So open the main.hac in root again, script the lines, and call it with the browser via http://localhost:8080/forum. This is just for testing! To add a new property, or change it we can say: this.propertyName="test"; this.header="My first Helma application";this is the keyword, which represents the object, we are using the dot is the sperator propertyName is same name for our property. This name can be any leagal JavaScript variable name. the equal sign says that the left part should become equal to the right part "test" is a string (that's why it is quoted), but can be also a Number, or any other JavaScript datatype or object. And it can be a HopObject, what we will see next. To call a property of an object we say: Creating forums and rendering the list The new code for root/main.hac is: var aNewForum = new forum(); this.add(aNewForum); for (var i=0; i<this.count(); i++) { res.write('<a href="'+this.get(i).href("main")+'"> Forum No.'+i+'</a><br>'); } // this.renderSkin("main"); Open the URL http://localhost:8080/forum in your browser and hit the reload button for a few times. If it doesn't work right from the start you maybe have to restart Helma. What you can see is a growing list of links to Forums. When you click on one of the links you will see: I'm a forum and when you take a look at the URL in your brwoser you will see something like: http://localhost:8080/forum/4/main Basically the few lines of code we wrote create a new forum each time we call root/main.hac, with a browser. After we created and added a new forum, we loop through all the existing forums and render a link to this forums. Here is a very detailed description of what is going on: Line1: Line2: Line4: Line5: Line6: Line8: Helma is scripted with JavsScript! To fully understand the code we will use in the rest of this tutorial you need to learn JavaScript or consider a book or online Tutorial about this. But even, if you are just familiar with an other programming language, like PHP, ASP, C++ or Java you should be able to read the code and follow the examples. The fact, that we are using JavaScript doesn't mean it's the same JavaScript like you are maybe used to from scripting in a HTML page. The main difference is, that there are no special ClientSide objects, like the window object, or document.all or stuff like this. But at least the syntax is the same. But there are a lot of other objects in exchange we will need on the server side. For example the res (response) or the req (request) object, and so on. Next time Next time we will learn how to control this behavior a little bit more :)
... Link
Scripting a simple Forum
matthias
21:25h
In this chapter we will script our first real Helma web application. - a small forum. You will learn how to create HopObject classes and connect them to a database (mySQL). Even if you never scripted a web application before, and have no idea about SQL, HTTP-headers and so on you should be able to understand this example. If not: kick me. Create a new application Making the start screen With our existing knowledge we create a main.hac in root. Instead of res.write("Hello World!");we would start with something like:
But all this res.write's are getting boring. So we need a solution for this. If you know PHP or ASP, you would propably start using a syntax like this:
<% some code %>
<% some more code %> But Helma won't allow this in .hac files. So what can we do to solve this? What you need are "Skins". A Skin is a template, which can be called by a function. But before we learn more about skins and hac's in detail, lets solve our start page: First create a file called "main.skin" in root. (The name "main" has no special meaning with .skin files) Open it in a text editor and script the following simple HTML page: Then open root/main.hac and script: root.renderSkin("main"); When you open http://localhost:8080/forum you should see the HTML page. So why do I need "Skins"? Helma has a very strict, but clean way to sepperate logic from presentation. It doesn't allow you to have logic in .skin files and makes it very hard to have presentation (HTML in our case) in functions or .hac files. (just see our res.write, res.write example). This may seem complicated in the beginning. But it is just a disadvantage, as long as your apps don't have mor than 10 lines of code. For bigger applications it reduces the risk of bugs and makes it possible to let the HTML guys take care about the HTML, without doing too big damage. It is possible to store skins in a database and make them editable by others than the programmers, like Antville demonstrates. Note: This should go somewhere else Lets have look at our root/main.hac: root.renderSkin("main");root is a global identifier for the root HopObject. renderSkin is a HopObject method (function) which renders the specified skin for that object "main" is a string, which is an argument for the function. It specifies the name of the skin (file). The "dot"-syntax mainly says: next time we will learn how to write macros. (what's that?!?!) ... Link |
Online for 8546 days
Last modified: 08.08.02, 10:22 Status
Youre not logged in ... Login
Menu
Suche
Calendar
Recent updates
Controlling the form behaviour Last
time our application was able to create forums, but in...
by matthias (15.11.02, 20:04)
Scripting a simple Forum In
this chapter we will script our first real Helma web...
by matthias (15.11.02, 18:37)
Adding Forums to our application
Today you will learn, how to create new forums, and...
by matthias (15.08.02, 12:27)
Hello World After we succesfully
installed Helma, we will write our first application: The traditional...
by matthias (11.08.02, 13:32)
Installing Helma Helma is 100%
Java, that means, that you can run it on a...
by matthias (08.08.02, 20:32)
How to script Helma ....
That's what you would love to know. .... RIGHT! Antville...
by matthias (06.08.02, 12:00)
How can you get involved?
Helma.org is providing a lot of gates which you can...
by matthias (06.08.02, 11:48)
first try funny, an hour
ago i first saw this tool, because i was testing...
by matthias (28.06.01, 17:20)
|