I use Pier in pharo0.1-10268web09.04. When I try to download a File I
added before, original file name is ignored and it is named as 'Pier'
always. The contents is correct.
--
Dennis Schetinin
Hi,
i need to manage one Magritte description for money data.
I think it's base on ScaledDecimal class.
Anyone development it ?
Any pointers would be greatly appreciated!
Thanks,
Dario
Hello,
I am just playing with pharo web and did an update of the latest pharo web
image. When I'm surfing to the pier installation and click on "News", I get
a DNU "WAHtmlRoot>>#rss".
What's the proper dependency for that?
Editing spooled news posting...: It's rsrss - www.squeaksource.com/rsrss and
then package RSRSS2.
Kind regards,
Markus
Ok, I'm not clear on how to setup a blog given the base pier
installation from MC. There is an
add blog cmd in the command, then a number of blog components in the
add component logic.
However I'm not quite sure what the steps are to put a blog into a new
wiki are? Plus any changes
to the environment that are needed.
Right now if I add a blog, then add a blog archive I just get "no blog
found" since
findBlog
^ self context structure parents reverse
detect: [ :each | each isKindOf: PBBlog ]
ifNone: [ nil ]
doesn't find the PBBlog
Obviously some structure/steps are required beyond the let's try this
and see what happens.
--
=
=
=
========================================================================
John M. McIntosh <johnmci(a)smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
=
=
=
========================================================================
Hi
I need to do something and I really don't know how to do it. I have a
PRMenuWidget and for each menu item I have a particular background image. In
those images I have also the text. For example, in the aboutUs.gif there is
also the text "About Us". I want to put another background image for mouse
hover (actually it only changes the text color). This works well. The
problem is that I want to use this image not only with hover but also when
that menu item is selected. When I click on that menu item, I want to put
that image.
In html + javascript it should be something like this:
<td colspan="9"><a onmouseout="window.status=''; changeImages('about_us',
'images/about-us.gif'); return true;" onmouseover="window.status='about us';
changeImages('about_us', 'images/about-us-over.gif'); return true;" href="
about.html">
<img width="171" height="40" border="0" alt="about us" src="
images/about-us.gif" name="about_us"/>
</a>
</td>
any ideas of how can I do this trough pier/seaside ?
Thanks in advance,
Mariano
Hi there,
is there anyway to visualize errors next the components that caused them?
One solution I can think of is actually validating every single one of these
components, however it doesn't feel nice.
I am currently using a bespoke sublcass of MAToOneRelationDescription to
structure my form into different sections. It is cascading the validation to
all these embedded objects.
Any ideas?
Cheers,
Felix
Hello,
I am using the latest Pharo based Pier one click image on debian
server, and I have set up Image persistency.
Problem is that backup images seem to be cumulating and eating my disk
space quite rapidly. As far as I have understood, there should be a
max of 3 backed images, while I have tens, and even hundreds of them.
I suspected that maybe it is the file rights issue, but everything
seems to be ok, (also if a process can create file, it usually can
also delete it).
Thanks in advance!
rush
http://www.cloud208.com/
You know I get a lot of feedback that says: "when i click
Environment, I always get 'Unable to fully display recursive
composition.'"
Er, maybe a different error message is needed? People seem really
confused about the current one, also it's hard for them to understand
what
Environment means...
Thoughts are welcome
--
=
=
=
========================================================================
John M. McIntosh <johnmci(a)smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
=
=
=
========================================================================
Hi, I been reading and using Magritte for a couple of days and it
is impressive how fast a web app can be written with it.
We are planing to use it in the development of a major app, but I have some
concerns/questions that I would like to ask. Most of them are related with
the coupling it generates between the model and the view using the
descriptions. These are the questions:
(I wanted this mail to be short, but it turned out sort of long... sorry for
that...)
1) Has anybody defined the descriptions in other class but the model class?
It seems to me that defining the descriptions as class methods in the model
class creates a coupling between the model and the view that I would like to
avoid. Part of that coupling is because of some view's "attributes" like
label, priority, beSorted, readOnly, etc. It also couples the model with
Magritte, which avoids me to use the model in an environment without
Magritte.
I was looking around and it seems possible, but the method #asComponent
sends the message #description which finally creates the description
container with all the collected descriptions. I could have my own
implementation of #asComponent or have another object to do it, but I wanted
to know if somebody already did it.
(btw, why #description and not #magritteDescription? it keeps my model
objects from using the message #description for a business porpoise)
2) The description "descriptionCanton" of the tutorial, is another example
of why I want to decouple descriptions from the model class. In the tutorial
the cantons are hard coded in the method, but that is not possible in a
"real" app. Cantons should be taken from another object, lets say the
"Cantons" object. But if I keep the "descriptionCanton" in Address and use
"Cantons" from there, I will be coupling Address with Cantons, which will
prevent me from using Address in another context or with provinces or states
instead of cantons. Does anybody has a suggestion for doing this?
3) To keep the objects that are created, the tutorial suggests to use a
class variable, but that is an option that does not scale. For instance,
what happens if I want to host the same app several times with different
data? (we are planning to use GLASS) Using the tutorial classes, I would
like to have an instance of MAPersonManager for one of our customers,
another instance of MAPersonManager for other customer, and so on. Also,
using a class variable keeps us from writing tests for that class because
that variable is shared among all the objects (tests, the real app, etc). I
think this is more a SeaSide question...
Anyway, I would like to have something like this:
MAPersonManager for: self customer1 <-- this is one instance of person
manager for one customer
MAPersonManager for: self customer2 <--- this is the other...
Is it possible? how?
3) I see that Magritte always needs an object to edit it. I mean, an
instance of Address to edit an address, an instance of Person to edit a
person, and so on. That means that the system could have invalid instances
for some period of time. For example, a person without a last name is an
invalid instance of Person, but to be able to edit a Person Magritte needs
an instance of Person without a last name. Maybe some people will say "so
what? what is the problem?". Well there are some problems with doing it this
way, for example a programmer could write a program that reads people from
an archive and forgets to check that the last name can not be empty. You
could say that for writing that program the programmer should use Magritte's
description also, but why? what is the meaning of label, priority, etc. in
that case? But let's say the programmer uses Magritte's description to read
from the file, what will prevent him to create a Person with out a last name
from the workspace?
So, to avoid invalid instances we use a technique were valid instances are
created from the beginning. For the Person example of the tutorial, I would
have something like this:
Person class>>named: aFirstName and: aLastName ....
self assertNotEmpty: aFirstName.
self assertNotEmpty: aLastName.
....
"Only if all the assertions are passed, the object is created"
^self new initilializeNamed: aFirstName and: aLastName ....
and if the object is not immutable, it will have a #syncronizeWith: message
that takes a valid instance and changes its instance variables. For the
person example:
Person>>syncronizeWith: aPerson
firstName := aPerson firstName.
lastName := aPerson lastName.
.... "the same with all inst. var".
Doing so, the system ensure me that the person after being modified is valid
because "aPerson" has to be valid to exist as an object.
There are many advantages of doing this:
a) There is no problem when an object is valid depending on the value of
different instance variables because all the validations are done together
before creating the object. (Dates are an example of this case, it is not
enough to know its day number to see if it is valid, the month has to be
known also)
b) Only valid instances exist in the image, no matter how I create them,
from the UI, reading a file, using the workspace, etc.
c) New programmers can not make mistakes using the current objects. If they
create an object it has to be valid, if not, they will get a debugger.
d) Validations of the object are kept with the object, the validations are
part of the object's definition and they are not spread in different places.
(This is also different from Magritte, that suggests to define validations
in the descriptions)
Of course we could agree or not that this is a good technique, but it proved
to be good for me and the people I work with and I would like to continue
using it.
Does anybody imagine how to do it with Magritte? or is it completely against
its philosophy?
Well, these are the questions I have by now... sorry for the long mail.
Bye,
Hernan.