*** lawrence has joined #schooltool | 05:33 | |
lawrence | Hi all | 05:33 |
---|---|---|
lawrence | I installed schooltool yesterday and started configuring today. I managed to set up courses, teachers and students. I also attached a student and instructor to a course on my own. Unable to recall how I did it I referred to the instructions but following the manual does not get me the screen in the instruction manual. Can anyone help? Thanks | 05:35 |
lawrence | Ok, think I figured it out/ | 06:01 |
*** lawrence has quit IRC | 06:02 | |
*** aks has joined #schooltool | 06:10 | |
*** menesis has quit IRC | 12:40 | |
*** aelkner has quit IRC | 12:40 | |
*** aelkner has joined #schooltool | 12:47 | |
*** menesis has joined #schooltool | 12:47 | |
*** menesis has quit IRC | 13:04 | |
*** aks has quit IRC | 13:14 | |
*** aks has joined #schooltool | 13:18 | |
*** menesis has joined #schooltool | 14:02 | |
*** aks has quit IRC | 14:24 | |
*** replaceafill has joined #schooltool | 16:26 | |
*** hoffman has joined #schooltool | 16:29 | |
hoffman | hi aelkner, replaceafill. | 16:31 |
replaceafill | good morning | 16:31 |
aelkner | morning | 16:31 |
hoffman | So... have you guys ruminated on moving management views out of the years? | 16:33 |
* hoffman includes a good vocabulary word for replaceafill. | 16:33 | |
* replaceafill goes to look it up... | 16:34 | |
aelkner | i haven't come up with any new ideas if that's what you mean | 16:34 |
aelkner | i thought we lad it out pretty good last week | 16:34 |
aelkner | we just have to decide on what we want | 16:35 |
hoffman | Just checking to see if anyone came up with a good argument against it. | 16:35 |
aelkner | not here | 16:36 |
replaceafill | me neither | 16:36 |
hoffman | OK. Cool. | 16:36 |
hoffman | All right, so where did you guys leave off Friday? | 16:37 |
aelkner | i told replaceafill that i wold look into the hint override solution | 16:38 |
aelkner | but i couldn't get the ComputerWidgetAttribute to get called | 16:39 |
aelkner | so i'd like to talk to replaceafill about that in a bit | 16:39 |
aelkner | but also, i added flourish.zcml to the schoolyears package | 16:39 |
hoffman | There are only the two of you, so you can do that right now if you'd like. | 16:39 |
aelkner | and crated the schoolyears view | 16:39 |
aelkner | http://69.164.203.135:36660/schoolyears | 16:40 |
aelkner | the links that are there don[t work, but the table renders and the linksets are defined | 16:40 |
aelkner | replaceafill, i have some unpushed code that i can commit if you're available to look at | 16:40 |
aelkner | the WidgetAttribute issue | 16:41 |
replaceafill | aelkner sure | 16:41 |
hoffman | I don't think we need a search there for years. | 16:41 |
hoffman | It will be a long time before there are too many of them. | 16:41 |
hoffman | Like... YEARS. | 16:42 |
aelkner | i thought so, but i wanted you to say for sure | 16:42 |
aelkner | replaceafill, i pushed to my branch, do you want me to push to trunk? | 16:43 |
hoffman | replaceafill: How do we want those checks aligned with their headers? | 16:43 |
replaceafill | aelkner, no, i can take a look at your branch | 16:43 |
hoffman | both centered? | 16:43 |
hoffman | Both left? | 16:43 |
hoffman | ? | 16:43 |
replaceafill | hoffman maybe we should make the column narrower | 16:44 |
hoffman | Or that. | 16:44 |
replaceafill | like the Remove/Add columns in relationships | 16:44 |
hoffman | aelkner just needs a rule of thumb. | 16:46 |
replaceafill | aelkner dont you want to replace the "label" for the widget? | 16:46 |
aelkner | i'm not sure, we may be able to think of a generic title which renders as the label | 16:48 |
aelkner | instead of Limit to group(s) | 16:48 |
aelkner | Limit to: | 16:48 |
aelkner | but the hint, i.e., the description of the field in the interface | 16:48 |
aelkner | which becomes the widget hint | 16:49 |
aelkner | that is a larger sentence that mentions groups which we want to be different for resource demo fields | 16:49 |
aelkner | hoffman, for the checkbox column, it aligns center right now | 16:51 |
aelkner | but all headings align left | 16:51 |
aelkner | we could override the table css for th to align center | 16:52 |
aelkner | or change the checkbox to align left | 16:52 |
hoffman | It looks like the other rows align left. | 16:52 |
hoffman | ? | 16:52 |
hoffman | Other columns I mean. | 16:53 |
aelkner | they all do in all our tables | 16:53 |
aelkner | so for that reason, i'd recommend aligning the checkbox itself left | 16:53 |
hoffman | OK then. | 16:53 |
aelkner | replaceafill, i render that cell as '<span class="ui-icon ui-icon-check ui-icon-center"></span>' | 16:55 |
aelkner | what's the best way to make it align left? | 16:55 |
aelkner | i can add a class, or is there a class i can reuse? | 16:55 |
replaceafill | just remove ui-icon-center | 16:55 |
aelkner | let me try | 16:56 |
aelkner | that was easy | 16:57 |
aelkner | http://69.164.203.135:36660/schoolyears | 16:57 |
aelkner | replaceafill, another thing | 16:58 |
aelkner | i tried removing the filter widget by creating the stub that you see i created | 16:59 |
aelkner | and adding: | 16:59 |
aelkner | def render(self): | 16:59 |
aelkner | return '' | 16:59 |
aelkner | but the table container template still renders the batch info | 16:59 |
aelkner | which then bcomes visable overlaying the header | 17:00 |
aelkner | i was hoping to fix that without having to clone the table container template | 17:00 |
replaceafill | why dont you override the template attribute of the widget? | 17:02 |
aelkner | how do you mean that? | 17:02 |
replaceafill | i mean: | 17:02 |
replaceafill | def render(self): | 17:02 |
replaceafill | return self.template() | 17:02 |
replaceafill | in the filter widget | 17:02 |
aelkner | that's what the the base does | 17:03 |
aelkner | oh, you mean change | 17:03 |
aelkner | template = ... | 17:03 |
replaceafill | yes | 17:03 |
aelkner | but there's noting to render, so how would creating an empty template be better than return ''? | 17:04 |
replaceafill | you dont want the widget at all? | 17:05 |
replaceafill | or just the batch info? | 17:05 |
aelkner | neither | 17:05 |
aelkner | hoffman confirmed my suspicion that we didn't want it | 17:05 |
aelkner | and played around with rendering nothing for the widget, but the batch still came out | 17:06 |
hoffman | Well... we need the batch info if it is batching. | 17:06 |
aelkner | hoffman, yeah, good point | 17:06 |
aelkner | in which case, we would need the filter | 17:06 |
hoffman | So just getting rid of the search but leaving the batch is probably the right thing. | 17:06 |
hoffman | Not really... | 17:07 |
hoffman | If you have 30 years, you have to be able to get to the next page. | 17:07 |
hoffman | I don't think you need to filter though. | 17:07 |
hoffman | Unless this is just all so tied together. | 17:07 |
aelkner | ok, i just need to create a template for the widget filter | 17:07 |
aelkner | that pushes the content down enough | 17:08 |
replaceafill | aelkner i'm not sure i understand the problem, but just one comment | 17:08 |
replaceafill | the filter widget and the batch info come from different places | 17:08 |
replaceafill | the batch info comes from the table formatter | 17:08 |
replaceafill | it's independent of the filter widget | 17:08 |
aelkner | right | 17:08 |
hoffman | hi menesis. | 17:08 |
aelkner | so you think i should create my own formatter and disable the batch there | 17:08 |
replaceafill | so, if you do render to spit '' | 17:08 |
menesis | hi hoffman, all | 17:09 |
replaceafill | aelkner check skin/flourish/templates/table_container.pt | 17:09 |
replaceafill | aelkner you're ussing a table container for the schoolyears view, correct? | 17:09 |
replaceafill | that's the template you want to customize i think | 17:09 |
replaceafill | not the widget one | 17:10 |
aelkner | replaceafill, so you think i do need to clone the table container template | 17:10 |
aelkner | and get rid of the widget and batch rendering there? | 17:10 |
replaceafill | i think it's the easiest solution | 17:11 |
aelkner | i actually had done that but was trying to avoid cloning, but i guess there isn't any cleaner solution | 17:11 |
aelkner | i wouldn't even need my custom widget in that case, so it's probably best | 17:11 |
aelkner | hoffman, ok i'll do that right now | 17:12 |
hoffman | We are overly concerned with cloning. | 17:13 |
hoffman | replaceafill: What's your status? | 17:13 |
replaceafill | ok | 17:13 |
replaceafill | on friday, i spent some time on the xmlrpc stuff for jelkner | 17:14 |
replaceafill | i also cleaned the resource forms | 17:14 |
replaceafill | using yvl's new base class | 17:14 |
replaceafill | and changed the relationship views to use the new ImageInputColumn | 17:14 |
replaceafill | hoffman today i was thinking about working on the evolution script | 17:15 |
replaceafill | for resources | 17:15 |
hoffman | Oh, yes, that. | 17:15 |
hoffman | Get that out of the way. | 17:15 |
replaceafill | ok, will do, and then http://69.164.203.135:6660/settings | 17:15 |
replaceafill | and maybe style Access Control, Access Rights and Site Preferences | 17:16 |
replaceafill | i guess only access control needs styling | 17:16 |
replaceafill | and access rights maybe... | 17:16 |
replaceafill | for site preferences, only the buttons i guess | 17:17 |
replaceafill | ah and the label | 17:17 |
replaceafill | so i was thinking of styling those next | 17:17 |
hoffman | Yes. | 17:17 |
hoffman | You could do those. | 17:17 |
replaceafill | k, will do | 17:17 |
replaceafill | hoffman question | 17:17 |
hoffman | Yes? | 17:17 |
replaceafill | i was checking the logs and saw a conversation between you and aelkner about our "yes" "no" radio buttons | 17:18 |
replaceafill | you wanted them to be "Yes" and "No", correct? | 17:18 |
aelkner | replaceafill, that's yet another WidgetAttribute situation | 17:18 |
replaceafill | aelkner not really | 17:19 |
aelkner | hoffman, http://69.164.203.135:36660/schoolyears | 17:19 |
replaceafill | we could use an adapter for all our combination of (bool + radio widgets) | 17:19 |
hoffman | Looks good. | 17:19 |
replaceafill | i did that for cambodia | 17:19 |
replaceafill | and make all the "yes" "no" -> "Yes" "No" across the whole app | 17:20 |
aelkner | it would probably be faster if you went ahead and did it | 17:20 |
aelkner | i could learn from seeing your solution | 17:20 |
replaceafill | aelkner will do | 17:20 |
aelkner | thanks | 17:20 |
replaceafill | aelkner so about the hints | 17:20 |
replaceafill | i think there's no way to override a "hints" adapter | 17:21 |
replaceafill | for widgets | 17:21 |
hoffman | replaceafill: In the access control view we need sub-sections or sub-headers of some kind separating each permission. | 17:21 |
replaceafill | hoffman ah | 17:22 |
replaceafill | one section for a pair of settings | 17:22 |
hoffman | Yes. | 17:22 |
hoffman | I'm not sure offhand whether this is a big form or a big table (or both), but you should be able to figure that out. | 17:23 |
aelkner | replaceafill, if there's not way to override the 'hints' adapter, what would one do? | 17:23 |
replaceafill | aelkner we'll have to figure out | 17:25 |
aelkner | replaceafill, ok, i'll be right back | 17:25 |
aelkner | i'm back | 17:30 |
aelkner | replaceafill, something just occured to me | 17:30 |
* replaceafill listens aelkner | 17:30 | |
aelkner | i think yvl was a bit overly complex in his proposed solution | 17:31 |
aelkner | could we just override the widget text in the __init__ method of the view class | 17:31 |
aelkner | to have the right hint based programatically on the parent container? | 17:32 |
aelkner | not using provideBy, god forbid, because I know yvl hates that | 17:32 |
replaceafill | :D | 17:32 |
aelkner | but perhaps creating an adapter that is implemented on each parent's interface | 17:32 |
aelkner | and just update the widget in __init__ based on the adapter's hint? | 17:33 |
aelkner | does that sound like the right way to do it to you? | 17:33 |
replaceafill | aelkner just to be clear, you need to override the p.hint, not the label, correct? | 17:33 |
aelkner | we only need to override the label if we can't come up with something generic in the interface | 17:34 |
aelkner | hoffman, is 'Limit to:' ok fo rthe label if the hint is more specific to person demos vrs resource demos? | 17:35 |
aelkner | right now it's 'Limit to groups(s)' | 17:35 |
replaceafill | aelkner the thing is, the p.hint comes from our template | 17:36 |
aelkner | but for resources it resource type, so that label is not right | 17:36 |
replaceafill | the label, we could override with an adapter | 17:36 |
aelkner | which template has the p.hint? | 17:37 |
hoffman | What is ok is if I can specify what each one says. | 17:37 |
replaceafill | aelkner any our our z3c form clones :) | 17:37 |
replaceafill | aelkner but precisely: | 17:37 |
aelkner | isn't it widget_macors | 17:37 |
replaceafill | skin/flourish/templates/z3c-schooltool-form.pt | 17:37 |
aelkner | and isn't this the line: | 17:38 |
aelkner | <p class="hint" tal:content="widget/hint" /> | 17:38 |
aelkner | oh | 17:39 |
replaceafill | aelkner i dont think we're using those macros | 17:39 |
replaceafill | for flourish | 17:39 |
aelkner | right | 17:39 |
aelkner | so i found the line | 17:39 |
aelkner | <p class="hint" tal:content="widget/field/description" | 17:39 |
aelkner | tal:condition="widget/field/description">Description of this field.</p> | 17:39 |
replaceafill | so, you see we render the field description | 17:39 |
replaceafill | yes | 17:39 |
aelkner | so couldn't we override the field's description? | 17:39 |
aelkner | in __init__ i mean? | 17:40 |
aelkner | or actually, bot even in __init__ | 17:40 |
aelkner | i think rght in the view class fields=... | 17:40 |
aelkner | no, nevermind, it need to be __init__ | 17:40 |
aelkner | because we need to know th context | 17:40 |
replaceafill | yes | 17:41 |
aelkner | i could try that out now | 17:41 |
aelkner | replaceafill, do you think updateActions would be a better place than __init__? | 17:44 |
aelkner | we don't have any cases of overriding __init__ in forms i don't think | 17:45 |
replaceafill | updateWidgets? | 17:45 |
aelkner | is there such a thing? | 17:45 |
replaceafill | you're changing the widget, right? | 17:45 |
replaceafill | yes | 17:45 |
aelkner | ah, good | 17:45 |
replaceafill | def updateWidgets(self): | 17:46 |
replaceafill | super(BaseResourceView, self).updateWidgets() | 17:46 |
replaceafill | for widget in self.widgets: | 17:46 |
replaceafill | if not self.widgets[widget].value: | 17:46 |
replaceafill | self.widgets[widget].mode = HIDDEN_MODE | 17:46 |
aelkner | replaceafill, all i need was this one line: | 17:49 |
aelkner | self.widgets['limit_keys'].field.description = u'Boo' | 17:49 |
aelkner | and it worked! | 17:49 |
replaceafill | :) | 17:49 |
aelkner | so i just need to create the adapter to get the text | 17:49 |
aelkner | hoffman, could you please indulge me so that i don't have to pour over logs | 17:50 |
aelkner | and type here what the text should be for the two cases? | 17:50 |
aelkner | and is 'Limit to:' good enogh for the label since the hint would explain? | 17:50 |
hoffman | "Limit to" is not as good. | 17:51 |
hoffman | I mean, it just depends on how much more of a problem it is. | 17:51 |
* hoffman shrugs. | 17:53 | |
aelkner | adding another adapter for the label is not much trouble | 17:56 |
aelkner | so, 'Limit to group(s)' and 'Limit to type(s)'? | 17:56 |
hoffman | Yes. | 17:57 |
hoffman | http://schooltool.pov.lt/irclogs/%23schooltool.2011-07-07.log.html#t2011-07-07T17:45:08 | 17:57 |
aelkner | ok | 17:58 |
hoffman | OK, so I'm going to be mostly around today and not tomorrow. | 17:58 |
hoffman | So I'll need to get you guys set up with things to do. | 17:59 |
hoffman | I think the basic plan will be for aelkner to do more of these index views related to management, and replaceafill more the oddballs. | 17:59 |
hoffman | Which he seemed to want. | 17:59 |
replaceafill | :) | 18:00 |
replaceafill | i think i have enough for today | 18:00 |
replaceafill | are we meeting until wednesday? | 18:00 |
hoffman | I won't be here tomorrow. | 18:01 |
hoffman | You guys don't have to get up. | 18:01 |
hoffman | I'll send an email with a few more specific instructions. | 18:02 |
* hoffman drops the bag of gravel. | 18:02 | |
replaceafill | k | 18:02 |
hoffman | See you Wednesday. | 18:02 |
aelkner | wait, what's going on | 18:06 |
aelkner | hoffman, you are not going to be around when? | 18:07 |
aelkner | sorry if you alreay told usd | 18:07 |
aelkner | us | 18:07 |
hoffman | more or less tomorrow. Mostly around today. | 18:07 |
aelkner | ok | 18:07 |
aelkner | +1 on me doing the managerment views and letting replaceafill do oddball stuff :) | 18:07 |
aelkner | whatever that means | 18:07 |
hoffman | You don't even have to know. ;-) | 18:09 |
replaceafill | aelkner http://69.164.203.135:6660/resource_demographics/addText.html | 18:11 |
replaceafill | Yes No | 18:11 |
aelkner | ah | 18:13 |
replaceafill | i'm going to push this change to trunk | 18:13 |
replaceafill | change pushed | 18:14 |
aelkner | replaceafill, i'll have to merge and resolve any conflicts | 18:17 |
replaceafill | aelkner because of my change? | 18:17 |
replaceafill | dont worry i dont think you're working on the same files i changed | 18:18 |
aelkner | ok | 18:19 |
aelkner | btw, a problem with changing the fields in updateWidgets | 18:19 |
aelkner | it only changes the text that comes out the second time you call up the view! | 18:20 |
aelkner | maybe i need to call the base class second | 18:20 |
aelkner | i'll try that | 18:20 |
aelkner | nope, it crashes then | 18:21 |
aelkner | bummer | 18:21 |
aelkner | replaceafill, i should probably do this in the view class attribute setting section | 18:22 |
aelkner | right after fields=... | 18:22 |
replaceafill | go ahead | 18:22 |
aelkner | i'm going to try that | 18:22 |
aelkner | replaceafill, damn, there isn't any context at that point | 18:25 |
replaceafill | aelkner why don't you use a custom template :) | 18:27 |
replaceafill | that instead of widget/field/description uses something else | 18:27 |
replaceafill | for the p.hint | 18:27 |
aelkner | you mean clone the whole z3c-schooltool-form.pt template? | 18:29 |
replaceafill | yes | 18:29 |
aelkner | ah, man, that's just not what i want to be doing, cloning 100 lines of pt to change one field | 18:30 |
replaceafill | :) | 18:31 |
aelkner | besides, what wold i put there anyway? | 18:31 |
aelkner | if i'm going to bother fixing the problem, i'd prefer not to have to hack | 18:31 |
replaceafill | forget it then | 18:32 |
aelkner | it's probably the same amount of effort | 18:32 |
aelkner | it's just weird how the change to the widget doesn't take the first time thourgh | 18:32 |
aelkner | i mean, what's updateWidgets for anyway! | 18:32 |
aelkner | i'm gond to troubleshoot some more in pdb | 18:34 |
replaceafill | hoffman are we going to remove the required field markers (*)? | 18:36 |
hoffman | Why would we? | 18:36 |
replaceafill | it's just that we don't have the hint for what * means | 18:37 |
hoffman | Why not? | 18:39 |
replaceafill | i just probably want something like page 21 in the guidelines :) | 18:39 |
replaceafill | * signifies a required field | 18:39 |
hoffman | Yes...? | 18:40 |
hoffman | So why can't we have that? | 18:40 |
replaceafill | and we could put it in the first fieldset | 18:40 |
replaceafill | only | 18:40 |
hoffman | We have it in the person forms. | 18:43 |
replaceafill | uh? | 18:43 |
hoffman | Don't we? | 18:44 |
hoffman | Or just the asterix with no explanation? | 18:44 |
replaceafill | yes | 18:44 |
replaceafill | just asterix with no explanation | 18:44 |
hoffman | We really can't just add it to the template? | 18:44 |
replaceafill | there's a space in the template for that but we don't use it | 18:45 |
replaceafill | <div class="required-info"> | 18:45 |
replaceafill | <!--<span class="required">*</span> | 18:45 |
replaceafill | – required --> | 18:45 |
replaceafill | </div> | 18:45 |
hoffman | I don't understand what I'm supposed to be saying in these conversations. | 18:45 |
hoffman | Why aren't we using it? | 18:45 |
replaceafill | :) | 18:45 |
replaceafill | no idea | 18:46 |
replaceafill | i'll "activate" and style the space | 18:46 |
hoffman | OK then. | 18:48 |
replaceafill | :D | 18:48 |
aelkner | yay! i got it to work! | 18:49 |
aelkner | weird how i have to change the widget label | 18:49 |
aelkner | and the widget field description | 18:50 |
aelkner | and not the widget field tile | 18:50 |
aelkner | and eidget hint | 18:50 |
aelkner | it's a little esoteric the way that works, but as long as the code works, i'm happy | 18:50 |
aelkner | i'll push so you can look | 18:50 |
replaceafill | hoffman http://69.164.203.135:6660/persons/add.html | 18:51 |
replaceafill | :) | 18:51 |
replaceafill | esoteric as in.... hack? | 18:51 |
replaceafill | ;) | 18:51 |
hoffman | replaceafill: It would be nice if it was above the group since it implies that it applies to the first group rather than the whole form, but I can live with it. | 18:52 |
hoffman | Or you could have it in each relevant group. | 18:53 |
replaceafill | +1 on above the first group | 18:53 |
aelkner | hoffman, http://69.164.203.135:36660/resource_demographics | 18:54 |
aelkner | compate that to the person demos | 18:54 |
aelkner | the add edit views now have the right label/hint for limit keys | 18:54 |
aelkner | if you think so, of course | 18:54 |
aelkner | oh, and replaceafill's change for Yes/No is reflected in the instance as well | 18:55 |
hoffman | Looks good, but I did notice that the UWG put the checkbox items in a vertical list rather than on one row. | 18:56 |
replaceafill | hoffman http://69.164.203.135:6660/persons/add.html | 18:59 |
replaceafill | above the fieldsets | 18:59 |
replaceafill | and red asterix :) | 19:02 |
hoffman | Oh... I guess the other way is good enough for the UWG, so move it back. | 19:03 |
hoffman | These things require a little experimentation... | 19:03 |
replaceafill | hoffman refresh | 19:05 |
replaceafill | what do you think of the red * | 19:05 |
hoffman | Good. Thanks. | 19:06 |
replaceafill | k, will change the rest of the templates to use it | 19:06 |
aelkner | replaceafill, see how nice it is to not jump to cloning 100 lines of pt when just one line of python fixes it | 19:09 |
replaceafill | aelkner where can i see your change? | 19:10 |
aelkner | oh, i can merge it into trunk if you like | 19:10 |
aelkner | let me do that | 19:10 |
aelkner | replaceafill, pushed to trunk | 19:14 |
aelkner | hoffman, when's your next break or are you already on it? | 19:15 |
hoffman | Oh... inbetween. | 19:16 |
hoffman | What's up? | 19:16 |
aelkner | i was just wondering if we cold discuss schooyears now | 19:16 |
hoffman | OK. | 19:17 |
hoffman | What's the question? | 19:17 |
aelkner | for Activate New Year, is it really necessary to have the user select what the new year is? | 19:17 |
aelkner | i mean, the new year is always the newest time-wise | 19:17 |
aelkner | so if the current year is set, then they add a new one | 19:17 |
hoffman | I'd rather have it be explicit. | 19:18 |
aelkner | you're saying we should make it possible for the user to activate a year that is five years ago? | 19:18 |
hoffman | Sure. | 19:18 |
aelkner | ok | 19:18 |
aelkner | for adding a school year, that doesn't need to be modal, right? | 19:19 |
hoffman | No. | 19:20 |
aelkner | ok | 19:20 |
aelkner | when the user clicks on a schoolyear title, index.html view or edit.html? | 19:20 |
hoffman | index. | 19:20 |
hoffman | with edit pencil | 19:20 |
aelkner | ah, yes | 19:20 |
aelkner | ok | 19:20 |
aelkner | that's all i need, thanks | 19:21 |
hoffman | Cool. | 19:21 |
aelkner | replaceafill, when hoffman says he'd prefer the lst of limit keys to be one per line as per UGL | 19:21 |
aelkner | we would need to register a custom widget for select fields, right? | 19:22 |
replaceafill | aelkner let me try to do it with css first | 19:22 |
aelkner | ah, that's an idea | 19:22 |
aelkner | do you have something in mind? | 19:22 |
replaceafill | yes | 19:22 |
replaceafill | set display:block on that span | 19:23 |
aelkner | ok, i'll let you handle that then, thanks | 19:23 |
replaceafill | but have to test it first | 19:23 |
replaceafill | cool | 19:23 |
*** ignas has joined #schooltool | 19:52 | |
*** menesis has quit IRC | 20:02 | |
*** ignas has quit IRC | 20:34 | |
replaceafill | aelkner you there/ | 20:42 |
aelkner | replaceafill, yes | 20:46 |
replaceafill | ah never mind :) | 20:47 |
aelkner | :) | 20:47 |
replaceafill | i just was going to ask you about the dialogs you've implemented | 20:47 |
replaceafill | it's only preferences, correct? | 20:47 |
aelkner | confirm delete of person | 20:47 |
replaceafill | ah! | 20:47 |
replaceafill | thanks | 20:47 |
aelkner | yeah, you needed another example, right? | 20:48 |
replaceafill | i'm just checking i didnt break them with my change to the z3c form template | 20:48 |
aelkner | oh | 20:48 |
aelkner | yeah, don't do that :) | 20:48 |
replaceafill | they don't break :) | 20:49 |
aelkner | so, you're adding css changes to it | 20:49 |
replaceafill | yes | 20:49 |
aelkner | right, and you want to look at the visual appearance of all the forms | 20:50 |
replaceafill | yes | 20:51 |
aelkner | are your changes only affecting modals | 20:51 |
replaceafill | no, only non-modals | 20:51 |
aelkner | ok, let me know when you push | 20:51 |
replaceafill | change pushed, "Added required info message to forms" | 20:53 |
replaceafill | you should get a message in the first fieldset of your forms | 20:54 |
aelkner | replaceafill, see the trouble cloning caused you there? | 20:57 |
replaceafill | :) | 20:58 |
replaceafill | 3 changes instead of 1 | 20:58 |
aelkner | and the fear of having missed one! | 20:58 |
replaceafill | i have grep ;) | 20:58 |
aelkner | that's even more wasteful of time | 20:58 |
aelkner | yeah, but | 20:58 |
replaceafill | but i get your point | 20:58 |
aelkner | the way i see it, it's always a balancing act, when to clone, when not to | 20:59 |
aelkner | i think we should periodically consider expanding the capability of our base templates | 20:59 |
replaceafill | base class + base template | 21:00 |
aelkner | to decrease, increasingly, the need for cloning | 21:00 |
aelkner | yvl laid some good groundwork, so we just need to take advantage | 21:00 |
aelkner | yes, the base classes hopefully are also helpful enough | 21:01 |
aelkner | that we could set everythoing up with zcml from time to time | 21:01 |
aelkner | but the templates are more important to avoid cloning that the view classes in my opinion | 21:01 |
replaceafill | hhmmm | 21:01 |
aelkner | than the view classes, i meant | 21:01 |
replaceafill | duplicate 100 lines of python code just to get fieldsets... | 21:02 |
aelkner | well, no | 21:02 |
aelkner | i don't think it's bad to have to create a viewclass that does nothing more than derive from base | 21:02 |
replaceafill | ah | 21:02 |
aelkner | and adding some @property or even a small method | 21:03 |
replaceafill | i agree | 21:03 |
replaceafill | i like that | 21:03 |
aelkner | but i think your point is when the methods get big enough | 21:03 |
aelkner | then they could also be put in base class | 21:03 |
aelkner | if we are thoughful enough | 21:03 |
replaceafill | i think we'll do it once we have tests in place | 21:04 |
replaceafill | it's easier to clean repetitiion with tests | 21:04 |
aelkner | that is the ideal time to address it | 21:04 |
aelkner | let's hope that's soon | 21:04 |
replaceafill | :) | 21:04 |
aelkner | replaceafill, anyway, i'm curious about the diff | 21:06 |
replaceafill | yes? | 21:06 |
aelkner | you moved extra-info and changed its css? | 21:06 |
replaceafill | yes | 21:06 |
replaceafill | here's the thing: | 21:07 |
aelkner | display: none | 21:07 |
replaceafill | ah, that's for dialogs | 21:07 |
aelkner | .ui-dialog .ui-dialog-content form .required-info | 21:07 |
aelkner | i see required-info in there | 21:07 |
replaceafill | so, required-info now it's displayed in forms | 21:07 |
replaceafill | just to the right of the first fieldset | 21:08 |
aelkner | now i'm confusing etra with required, sorry | 21:08 |
replaceafill | yes, it's required-info | 21:08 |
replaceafill | :) | 21:08 |
replaceafill | but if you wonder why did i move it | 21:09 |
replaceafill | it's because i can apply different css to it | 21:09 |
replaceafill | if it's preceded by a div.status | 21:09 |
replaceafill | .status ~ .required-info { | 21:09 |
replaceafill | top: 42px; | 21:09 |
replaceafill | } | 21:09 |
replaceafill | that's the meaning of that rule | 21:10 |
replaceafill | .status appears when you have an error in the form | 21:10 |
aelkner | so the '-' means what exactly? | 21:11 |
replaceafill | you mean '~' | 21:11 |
aelkner | yes | 21:11 |
replaceafill | sibling | 21:11 |
aelkner | next sibling? | 21:11 |
replaceafill | no, any sibling | 21:11 |
replaceafill | next is '+' | 21:11 |
replaceafill | .status + .required-info | 21:11 |
replaceafill | means <div.status><div.required-info> | 21:12 |
aelkner | and what is '~'? what keyboard char is that? | 21:12 |
replaceafill | left to your 1 | 21:12 |
replaceafill | below Esc :D | 21:12 |
replaceafill | tilde | 21:12 |
aelkner | ` | 21:12 |
aelkner | ~ | 21:12 |
replaceafill | (i think that's the name) | 21:12 |
replaceafill | yep | 21:12 |
aelkner | ah | 21:13 |
aelkner | my font is real small, so i didn't even see it curve | 21:13 |
replaceafill | :D | 21:14 |
aelkner | replaceafill, btw, those are some tricky selectors you're laying on us | 21:16 |
aelkner | i hope i'm the only one who thinks so :) | 21:16 |
replaceafill | tricky? they're css2 ;) | 21:16 |
replaceafill | i get worried when we use ccs3 :) | 21:17 |
aelkner | :) | 21:17 |
aelkner | replaceafill, i noticed something about z3c_form_display.pt | 21:52 |
aelkner | that is, nobody is really using it | 21:53 |
replaceafill | no | 21:53 |
aelkner | i registered basicperson views that use it, but they are not reachable yet | 21:53 |
aelkner | because clicking on the demo field brings up the edit view | 21:53 |
aelkner | anyway, what do you think about using that macro? | 21:54 |
aelkner | and did you discuss it at all with hoffman? | 21:54 |
hoffman | hm? | 21:54 |
aelkner | well, we have add/edit forms that you've worked on to get to look good | 21:55 |
aelkner | but you haven't had any views that use displayform | 21:55 |
aelkner | i guess i'm just saying we would need to look at that if we decide to use dialyform for schoolyear | 21:55 |
aelkner | and we should probably also put the pencil in that macro | 21:56 |
aelkner | any object whose view is displayed via diaplayform would have a title | 21:56 |
aelkner | and that title would have the pencil by it | 21:56 |
aelkner | or maybe not, maybe the pencil just goes next to the first field | 21:56 |
aelkner | which could be determined in the pt by using repleat/index | 21:57 |
aelkner | repeat.index | 21:57 |
aelkner | ah darn, one more time, repeat/index | 21:57 |
aelkner | replaceafill, are you looking at the macro now? | 21:58 |
replaceafill | yes | 21:58 |
aelkner | does it make sense that there are input fields in a display macro? | 21:59 |
aelkner | they should just be spans or whatever the css selectors expect | 21:59 |
replaceafill | input fields? | 22:00 |
aelkner | i'm using the macro, and i can change the title | 22:01 |
aelkner | displayform is a weird concept when you think about it | 22:02 |
aelkner | why would display only info need to go inside a <form> element | 22:02 |
aelkner | aren't you looking at that? | 22:02 |
replaceafill | i know that's what it does aelkner | 22:02 |
aelkner | ok, then waht was you question? | 22:02 |
aelkner | and what do you think? | 22:03 |
replaceafill | you said display forms have input fields | 22:03 |
aelkner | and you see them, right? | 22:03 |
aelkner | actually, i see, you only see the widgets | 22:03 |
aelkner | they render as input fields | 22:03 |
replaceafill | no they dont | 22:04 |
aelkner | that's what firebug shows | 22:04 |
replaceafill | look at the tal:replace and tal:content | 22:04 |
aelkner | and as i said, i can change the data | 22:04 |
aelkner | what line number? | 22:04 |
replaceafill | you sure you're using a z3c.form.DisplayForm? | 22:05 |
aelkner | i'm using flourish.form.Form | 22:05 |
replaceafill | which subclass....? | 22:05 |
replaceafill | z3c.form.Form | 22:05 |
aelkner | perhaps we need flourish.form.DisplayForm | 22:05 |
aelkner | look at that file | 22:06 |
* replaceafill shrughs | 22:06 | |
aelkner | that's the problem, it derives from z3c.form.Form | 22:06 |
aelkner | shruging is no help | 22:06 |
aelkner | i could use some mutual interest in the problem and its solution | 22:07 |
replaceafill | aelkner just change the mode of your subclass | 22:07 |
aelkner | so we don't need DisplayForm? | 22:07 |
replaceafill | sorry, i'm not interested in that problem, i'm not good at finding patterns and making generalizations | 22:07 |
aelkner | :) | 22:08 |
replaceafill | you and yvl are the good ones for that | 22:08 |
aelkner | ok, fair enough | 22:08 |
replaceafill | i usually apply a stinky hack, and once yvl comes with something better, i just change the implementation | 22:08 |
replaceafill | just happened with flourish.form.Form | 22:08 |
aelkner | clever :) | 22:09 |
replaceafill | and resource forms | 22:09 |
aelkner | actually, i've done the same kind of thing in the past | 22:09 |
replaceafill | my only comment about display forms | 22:09 |
aelkner | it's a good way to find out the right way | 22:09 |
aelkner | only problem is yvl is ot around | 22:09 |
replaceafill | is that hoffman seems to be leaning to tables instead of divs | 22:09 |
replaceafill | if you see the contact index view, you'll see the table macro of z3c.form | 22:10 |
aelkner | you see why i asked before? | 22:10 |
aelkner | i knew you and hoffman had worked on thi before | 22:10 |
aelkner | that's why i was wondering what you did, so i could keep doing it | 22:11 |
replaceafill | we haven't | 22:11 |
replaceafill | i decided to do it | 22:11 |
replaceafill | as you always say, hoffman is not interested in low-level stuff | 22:11 |
aelkner | index.html ftml for IContact? | 22:11 |
aelkner | index.html for IContact? | 22:12 |
replaceafill | contact/browser/templates/f_contact_view.pt | 22:12 |
aelkner | you're suggesting cloning 100 lines of pt again are you? | 22:13 |
replaceafill | if you can do the plumbing, go ahead ;) | 22:14 |
aelkner | you define a macro in an end of the line template | 22:14 |
aelkner | hack, hack, hack...... | 22:14 |
replaceafill | when did cloning a template became hack? | 22:14 |
replaceafill | we've been hacking z3c.form the last 3 years then :) | 22:15 |
aelkner | yes | 22:15 |
aelkner | and this time around we were going to avoid that | 22:15 |
replaceafill | do we have a solution for that? | 22:15 |
aelkner | yvl wanted the template structure to be easily overridden | 22:15 |
replaceafill | and it is | 22:16 |
aelkner | we need our macros to work | 22:16 |
aelkner | not clone them and change on line | 22:16 |
aelkner | i tell you what, i have a solution | 22:16 |
aelkner | rather than continue to pester you with this problem | 22:17 |
replaceafill | great :) | 22:17 |
replaceafill | you're the plumber now that yvl is gone ;) | 22:17 |
aelkner | i'll take it upon myself to change the dsiplayform macro to my pleasing | 22:17 |
aelkner | and you can help make it look better with css afterwardsz | 22:17 |
replaceafill | k | 22:17 |
aelkner | ok, i'll put on my plumber's hat | 22:19 |
replaceafill | we'll see how good of a plumber you are :D | 22:19 |
hoffman | In all seriousness, copying templates is not a big deal. Really. | 22:21 |
replaceafill | i agree | 22:22 |
hoffman | One thing I'd point out (which may or may not be relevant) is that having a lot of individual customized templates is not very costly. | 22:22 |
hoffman | However having, say, some kind of big crazy macro file which holds the customizations of many different pages is. | 22:23 |
aelkner | having a code base that does the same thing wth 100 times the amount of code is crazy indeed | 22:24 |
aelkner | that's what unbridled cloning leads to, every time, take my word for it | 22:24 |
aelkner | i've seen my share of codebases, and it's always the same thing | 22:24 |
aelkner | and when it comes time to change one field in all views | 22:25 |
hoffman | If each one equals a page, it is still manageable. | 22:25 |
hoffman | That is the way the vast majority of web applications you've used were coded. | 22:25 |
hoffman | I'm not saying re-write SchoolTool in PHP, but really, custom form templates are not the end of the world. | 22:26 |
aelkner | bad code is bad, and it's easy to write bad code | 22:26 |
aelkner | just throw it up on the screen and debug it as a colloegure once told me | 22:27 |
aelkner | and nobody else in the entire 200 person organization would ever go near his code | 22:27 |
aelkner | god forbid he should leave the company | 22:27 |
replaceafill | my motto: as long as it's tested | 22:27 |
replaceafill | :) | 22:27 |
aelkner | well, anyway, we already have a good macro system in place | 22:28 |
aelkner | we depend upon it to render our pages | 22:28 |
aelkner | we just need it to work the way we want | 22:28 |
aelkner | each field type has a widget that supports its display | 22:29 |
aelkner | the form macros organize the widgets in a way that is consistent accreoss the entire application | 22:30 |
aelkner | that is good for the user | 22:30 |
aelkner | they get used to seeing things a certain way | 22:30 |
aelkner | and if we need to change something important, like what replaceafill ust changed | 22:30 |
aelkner | we change it in the macro, and viola, automatically works everywhere | 22:31 |
aelkner | and of, course, the user stilll sees the consistency | 22:31 |
replaceafill | damn! all evolution tests are broken :( | 22:35 |
aelkner | all everything test are broken | 22:41 |
replaceafill | i hope unit test weren't | 22:41 |
replaceafill | hoped | 22:41 |
replaceafill | hoffman do you mind if i put radio buttons also one per line | 22:49 |
replaceafill | (like you want checkboxes) | 22:49 |
hoffman | I think it is preferable. | 22:49 |
replaceafill | ah ok, good then | 22:49 |
aelkner | hoffman, how should a index.html view look in general for any object | 22:52 |
aelkner | all pages have a title and subtitle | 22:52 |
aelkner | so far i chose 'School Year' for the title (the dark header | 22:52 |
aelkner | and the schooyear object's title for subtitle (the lighter header) | 22:53 |
aelkner | then there's the context space itself | 22:53 |
aelkner | each object has a list of attributes that are defined as fields in the view class | 22:53 |
aelkner | so for schoolyear, Title, First Day, Last Day | 22:53 |
aelkner | luckily, we have widgets that render dates a certain way and regular test fields a certain way | 22:54 |
aelkner | but as far as how the row should go, do we want the each attribute's title above its widget's rendering | 22:55 |
aelkner | i think that would probably be safer because some titles are long than others, so it would line up | 22:55 |
aelkner | another question is, where to put the pencil | 22:56 |
aelkner | the displayform macro has uses the view classes label if it defined, rendering it as an <h2> element | 22:57 |
aelkner | i could put the pencil next to the label | 22:57 |
aelkner | do you think index.html views of objects should have a label in addition to the fields? | 22:58 |
aelkner | for now, i'll push my changes to my instance | 22:58 |
aelkner | one sec | 22:58 |
aelkner | hoffman, http://69.164.203.135:36660/schoolyears/2010-2011 | 23:01 |
hoffman | Tables, aelkner. | 23:05 |
aelkner | ok | 23:06 |
hoffman | Like in the person accordions. | 23:06 |
hoffman | I would be ok with the pencil being by the subtitle, if possible. | 23:07 |
aelkner | well, title and subtitle render above in big fonts, dark and light | 23:08 |
aelkner | so we can't put the pencil there | 23:08 |
aelkner | however | 23:08 |
aelkner | looking at General Information, i see a partern | 23:08 |
aelkner | the objects' title is <h2> with a pencil nect to it | 23:09 |
aelkner | and then first name and last name are rendered in the table as you prefer | 23:09 |
aelkner | so i couls have the diaplyform work that way | 23:09 |
aelkner | i'll try it out and haev you look | 23:10 |
hoffman | Yes, you can do that. | 23:15 |
hoffman | Or try it at least. | 23:17 |
replaceafill | hoffman http://69.164.203.135:6660/demographics/addText.html | 23:17 |
replaceafill | vertical radios and checkboxes | 23:17 |
replaceafill | http://69.164.203.135:6660/access_control.html | 23:17 |
replaceafill | you were right, we need some kind of grouping for the access settings | 23:17 |
hoffman | Yes. | 23:18 |
hoffman | replaceafill, Did you get the evolution scripts done? | 23:21 |
replaceafill | hoffman not entirely, i cannot test it | 23:21 |
hoffman | OK. np for now. | 23:21 |
hoffman | aelkner is going to need tertiary navigation by year for groups, etc. | 23:22 |
hoffman | soonish | 23:22 |
replaceafill | ah | 23:22 |
replaceafill | ok, i'll start with that after the access control | 23:22 |
replaceafill | vie | 23:22 |
replaceafill | w | 23:22 |
replaceafill | http://69.164.203.135:6660/access_control.html | 23:22 |
replaceafill | look those nice <hr /> :D | 23:23 |
hoffman | I guess that's a new viewlet or something? | 23:23 |
replaceafill | yes | 23:23 |
replaceafill | we'll need a new viewlet for third-nav | 23:23 |
replaceafill | a viewlet manager | 23:23 |
hoffman | Can't you make each pair of permissions a fieldset? | 23:23 |
replaceafill | what do i use for legends? | 23:24 |
hoffman | Like "Section Information" | 23:24 |
hoffman | etc. | 23:24 |
hoffman | it is pretty obvious. | 23:24 |
hoffman | List of Accounts... | 23:25 |
hoffman | User Calendars | 23:25 |
hoffman | etc. | 23:25 |
hoffman | The object in question. | 23:25 |
replaceafill | those will be hard coded though | 23:25 |
hoffman | Compared to what? | 23:26 |
replaceafill | the settings dont provide info about that | 23:26 |
replaceafill | although, it has and indentifier... | 23:26 |
replaceafill | let me see something | 23:26 |
replaceafill | :)) | 23:27 |
replaceafill | http://69.164.203.135:6660/access_control.html | 23:27 |
replaceafill | those are the keys i need ;) | 23:27 |
replaceafill | ok, making them fieldsets | 23:27 |
replaceafill | hoffman http://69.164.203.135:6660/access_control.html | 23:40 |
hoffman | Nice! | 23:43 |
replaceafill | :) | 23:43 |
replaceafill | can you review the fieldset titles? | 23:43 |
replaceafill | they need to be improved | 23:43 |
hoffman | They seem ok other than not using "leaders" for resources anymore. | 23:46 |
replaceafill | that's from zcml, right? | 23:47 |
* replaceafill goes look | 23:47 | |
replaceafill | hoffman fixed | 23:50 |
replaceafill | 'responsible parties' | 23:50 |
hoffman | kk | 23:50 |
replaceafill | k, pushing to trunk | 23:50 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!