replaceafill | th1a almost done: http://69.164.203.135:6660/resources/ | 01:59 |
---|---|---|
*** replaceafill has quit IRC | 02:16 | |
*** aelkner has quit IRC | 05:42 | |
*** aelkner has joined #schooltool | 05:50 | |
*** th1a has quit IRC | 05:58 | |
*** aks has joined #schooltool | 06:14 | |
*** menesis has joined #schooltool | 09:54 | |
*** aks has quit IRC | 13:28 | |
*** aks has joined #schooltool | 13:44 | |
*** aks has quit IRC | 14:23 | |
*** ignas has joined #schooltool | 15:26 | |
*** menesis has quit IRC | 15:47 | |
*** th1a has joined #schooltool | 16:16 | |
*** replaceafill has joined #schooltool | 16:24 | |
yvl | oh, right, coffee :) | 16:27 |
* th1a sighs. | 16:29 | |
yvl | sorry th1a | 16:32 |
th1a | No problem. | 16:33 |
th1a | OK, so I think we should start with question time. | 16:33 |
yvl | sure | 16:33 |
th1a | Or does yvl want to start with answers to the emailed questions? | 16:33 |
yvl | umm, ok | 16:34 |
yvl | so I fixed that problem with delete modal dialog | 16:34 |
yvl | I forgot that valid html IDs are not valid jquery selectors | 16:34 |
yvl | we need to escape . and : | 16:34 |
yvl | as luck would have it, I used a "preferences" viewlet, and you guys used "delete.html" and so on | 16:35 |
yvl | the sanitizer is called jq_selector in flourish.js | 16:36 |
yvl | just so you guys know | 16:36 |
replaceafill | ah | 16:36 |
replaceafill | so, a link name that is going to be a selector id cannot contain . or : | 16:37 |
yvl | yes | 16:37 |
aelkner | i had a feeling the difference had to do wth the '.' | 16:37 |
yvl | http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F | 16:37 |
yvl | so that covers that | 16:38 |
yvl | anything else? | 16:41 |
* yvl is a bit feeble minded today, apologies for that | 16:41 | |
replaceafill | yvl question about flourish and z3c.forms | 16:43 |
replaceafill | yesterday i created a few add/edit forms for resources | 16:43 |
replaceafill | and noticed that if you inherit the actions from other forms, you dont get redirected appropriately | 16:43 |
replaceafill | i guess that's the reason of comments like: | 16:44 |
replaceafill | # XXX: hacky sucessful submit check | 16:44 |
replaceafill | in code, correct? | 16:44 |
yvl | umm, that's weird | 16:44 |
replaceafill | basicperson.browser.person.FlourishPersonEditView | 16:44 |
replaceafill | the add/edit form worked but the add/apply buttons sent me back to the form after success | 16:45 |
yvl | ah, right that one | 16:45 |
replaceafill | and i check the status of one response and got like 599!!! | 16:45 |
yvl | this is Zope's response status not set status | 16:46 |
replaceafill | ah | 16:46 |
yvl | as for apply buttons - they don't redirect normally, AFAIR | 16:46 |
replaceafill | then i noticed that in that case, z3c.form render wasnt called | 16:46 |
replaceafill | i guess flourish.page.Page was taking charge | 16:47 |
replaceafill | after applying the hack, everything worked of course | 16:47 |
yvl | right! | 16:47 |
yvl | thanks for noticing | 16:47 |
replaceafill | but it meant 6 new hacks :( | 16:47 |
yvl | hmm | 16:48 |
replaceafill | well, it can be only 3, but still | 16:48 |
replaceafill | (if i create a base class) | 16:48 |
yvl | ok, I'll do the add form base today | 16:48 |
yvl | basically we just need to move the redirect from __call__ to update | 16:48 |
replaceafill | ah | 16:49 |
yvl | the if _finishedAdd condition | 16:49 |
yvl | but only for addforms | 16:49 |
yvl | I kind of wanted success status built-in in our forms | 16:49 |
yvl | simply not yet got to doing that | 16:49 |
replaceafill | understand | 16:50 |
aelkner | what are we saying here? | 16:50 |
aelkner | that if someone puts a redirect call in one of the action handlers | 16:50 |
aelkner | that it doesn't work? | 16:50 |
yvl | no | 16:50 |
yvl | just that: | 16:51 |
yvl | a) somebody forgot to write the base add form that redirects after successful add | 16:51 |
yvl | b) there's no nice way to check for form "success" status, and we tend to do redirects sometimes | 16:51 |
yvl | hence the XXX: | 16:52 |
yvl | and if self.status == self.successMessage | 16:52 |
yvl | or self.status == self.noChangesMessage | 16:53 |
yvl | then redirect | 16:53 |
*** ignas has quit IRC | 16:53 | |
aelkner | oh, ok, i haven't dealt with add/edit modals with the new plumbing yet | 16:54 |
aelkner | so is there a base class fix coming? | 16:55 |
yvl | yes, after the meeting | 16:55 |
aelkner | cool, well i have no more questions at this time | 16:55 |
yvl | there was also something about widget labels? | 16:55 |
yvl | "limit keys" text? | 16:56 |
yvl | or is that resolved? | 16:56 |
aelkner | oh, right, i almost forgot | 16:56 |
aelkner | so yvl, the interface has text that doesnt' work for all demos | 16:56 |
aelkner | th1a wants the form hint to say something different for person demos as resource demos | 16:57 |
yvl | that is not a problem as long as we're using z3c forms | 16:57 |
aelkner | we are | 16:57 |
yvl | cool | 16:57 |
yvl | so, we can use StaticWidgetAttribute | 16:57 |
aelkner | how? | 16:57 |
replaceafill | with name="hint"? | 16:58 |
yvl | adapter names: 'label', 'name', 'required', 'title' | 16:58 |
yvl | i.e. these are attributes we can override with adapters | 16:58 |
aelkner | can someone type a full command here rather than pieces of code | 16:58 |
yvl | ok | 16:58 |
yvl | one sec | 16:58 |
yvl | MyNewLabel = z3c.form.widget.StaticWidgetAttribute( | 16:59 |
yvl | _("This is the new label"), | 16:59 |
yvl | field=ISomethingForm['limit_keys'], | 16:59 |
yvl | ) | 17:00 |
yvl | then zcml | 17:00 |
aelkner | wait | 17:00 |
aelkner | where does the python go? | 17:00 |
yvl | sigh | 17:00 |
yvl | it's the same thing I was explaining the other day | 17:00 |
yvl | see person/browser/person.py for example | 17:01 |
yvl | CalendarPublicWidgetLabel | 17:01 |
aelkner | ah, got it | 17:01 |
aelkner | ok, zcml? | 17:01 |
yvl | the difference is, that it uses a ComputedWidgetAttribute, because it needs to change | 17:01 |
yvl | <zope:adapter factory=".something.MyNewLabel" name="label" /> | 17:02 |
yvl | and here you can use "label", "required", "title" or "name" as the adapter name | 17:02 |
aelkner | but yvl, that code lives outside of the view class | 17:02 |
yvl | yes, outside | 17:03 |
aelkner | and i need to know the context to decide whether to change the hint | 17:03 |
yvl | well | 17:03 |
replaceafill | use context=... in the StaticWidgetAttribute | 17:03 |
yvl | please refer to z3c/form/widget.txt | 17:04 |
yvl | Dynamically Changing Attribute Values | 17:04 |
aelkner | another problem: | 17:04 |
yvl | and yes - what replaceafill said :) | 17:04 |
aelkner | the context, IDemographicField is the base class for person demos | 17:04 |
aelkner | yvl, strike that, it is the only class for demo felds | 17:05 |
aelkner | it is the container that is different | 17:05 |
aelkner | IDemographicFields is the base class for the demo fields container | 17:05 |
aelkner | and is used without subclass for person demo fields | 17:05 |
aelkner | IResourceDemographicFields is for resource demo fields | 17:06 |
aelkner | and is derived from IDemographicFields | 17:06 |
aelkner | so, th hint on one context needs to change based on the parent's context | 17:07 |
yvl | eh? | 17:07 |
aelkner | the context is IDeographicField | 17:08 |
yvl | can you please point to the original view class please | 17:08 |
* yvl is dumb today | 17:08 | |
aelkner | which one? | 17:08 |
yvl | the one that renders something that you want to change | 17:08 |
aelkner | one sec | 17:09 |
aelkner | basicperson/browser/demographics.py (FieldDescriptionEditView) | 17:09 |
aelkner | or FieldDescriptionAddView, either one | 17:10 |
aelkner | the context for those views is not the different for person demos and resource demos | 17:10 |
aelkner | the container is what is different from one case to the next | 17:10 |
yvl | ok, I see now | 17:11 |
yvl | then probably there are two easiest solutions | 17:11 |
yvl | 1) change the label for a view | 17:11 |
yvl | well, views to be more precise | 17:11 |
yvl | or | 17:11 |
yvl | 2) use the ComputedWidgetAttribute | 17:12 |
yvl | you'll get to specify a function instead of a string | 17:12 |
yvl | for the label | 17:12 |
yvl | and in that function you'll get access to everything you need there | 17:13 |
yvl | look at persons/browser/persons.py calendar_public_widget_label | 17:13 |
aelkner | like context, right | 17:13 |
yvl | you can even write some adapters for the parent containers, and query them for context.__parent__ | 17:14 |
aelkner | i'll need to | 17:15 |
aelkner | ok, i'll look into it | 17:15 |
yvl | I guess the problem here is not that it can't be done or is difficult, but rather that we're not very used to fine-tuning :) | 17:15 |
aelkner | brb | 17:15 |
yvl | ok | 17:16 |
yvl | hope that helped | 17:16 |
* yvl also apologizes for a minute | 17:16 | |
th1a | It helped. We're all about fine-tuning right now, so we needed to know that. | 17:18 |
yvl | cool :) | 17:18 |
* aelkner is back | 17:18 | |
yvl | z3c.form gives way more control than formlib in such cases | 17:18 |
th1a | aelkner and I were at an impasse otherwise. | 17:19 |
yvl | :) | 17:19 |
yvl | so that's a good reason to port what we can (reasonably fast) to z3c.form | 17:19 |
aelkner | yes, thanks yvl | 17:19 |
th1a | OK, anything else before yvl goes on vacation? | 17:20 |
aelkner | yvl, when do you return again? | 17:21 |
yvl | let me check :) | 17:21 |
yvl | I plan to be here on 21st | 17:22 |
yvl | but there is a slight chance that people will decide to kayak all the way back to Vilnius | 17:22 |
yvl | then I'd be back on 25th | 17:22 |
yvl | so basically two weeks away | 17:23 |
replaceafill | :| | 17:23 |
replaceafill | :) | 17:23 |
replaceafill | enjoy yvl! | 17:23 |
yvl | thanks! | 17:23 |
aelkner | yeah, sounds like fun | 17:24 |
replaceafill | will be weird not having you around for silly questions ;) | 17:24 |
th1a | Just a reminder -- next Thursday will be 4 weeks until feature freeze. | 17:24 |
th1a | I think we'll make it. | 17:24 |
yvl | there's a good chance IMHO | 17:24 |
th1a | I don't see any sudden roadblocks coming up. | 17:25 |
yvl | and then we'll have some time for testing, cleanup, i18n and all other things, right? | 17:25 |
th1a | And it is easy enough to punt on hard parts. | 17:25 |
th1a | yvl: Yes. | 17:25 |
yvl | great | 17:25 |
yvl | I think well make it | 17:26 |
yvl | * we'll | 17:26 |
th1a | Well, at a certain point nobody is going to be allowed to work on plumbing, etc. | 17:26 |
yvl | it's going to be a moderately risky release, but - the payoff! :) | 17:26 |
yvl | sure, th1a | 17:26 |
th1a | I may be getting overconfident but I don't feel like there's much risk. | 17:27 |
th1a | Also, October is the right release for this. | 17:27 |
yvl | yes | 17:27 |
th1a | I haven't heard much from CL, which suggests they'll end up waiting and porting this as well. | 17:28 |
th1a | Which will be good for everyone. | 17:28 |
* yvl got the same vibe | 17:29 | |
th1a | OK, go away yvl! | 17:29 |
* th1a drops the bag of gravel. | 17:29 | |
yvl | :D | 17:29 |
yvl | thank you, th1a | 17:29 |
yvl | it's been a fun sprint | 17:29 |
yvl | so thanks guys! | 17:29 |
yvl | (and yes, I'll just do the add form before I go) | 17:30 |
aelkner | happy kayaking! | 17:30 |
replaceafill | th1a http://69.164.203.135:6660/resources | 17:31 |
th1a | I was just going to ask. | 17:31 |
th1a | Just remove the hints for title and description. | 17:31 |
replaceafill | ok | 17:32 |
th1a | Can you make the textarea bigger for description on the form? | 17:32 |
replaceafill | more height? | 17:32 |
th1a | And width. | 17:32 |
th1a | Make it as wide as the other text entries. | 17:33 |
replaceafill | hhmm, it is | 17:33 |
th1a | And.. twice as high. | 17:33 |
th1a | Four lines. | 17:33 |
th1a | Actually, | 17:33 |
th1a | oh, I needed to reload. | 17:33 |
th1a | It is fine as is. | 17:33 |
replaceafill | :) | 17:34 |
th1a | OK. | 17:34 |
th1a | Looks good. | 17:35 |
aelkner | replaceafill, are the attributes demos? | 17:35 |
th1a | So we're adding the "Book" action? | 17:35 |
replaceafill | aelkner yes | 17:35 |
replaceafill | th1a to the resource index view, correct? | 17:35 |
th1a | Yes. | 17:36 |
th1a | Hm... | 17:36 |
th1a | Calendar link. | 17:36 |
replaceafill | just removed the hints | 17:36 |
aelkner | replaceafill, is this in trunk? | 17:36 |
replaceafill | aelkner no, not yet | 17:36 |
replaceafill | i wanted th1a to see it first | 17:36 |
th1a | Actually, maybe we should do | 17:36 |
th1a | It just like person. | 17:37 |
th1a | $RESOURCE's | 17:37 |
th1a | - Calendar | 17:37 |
th1a | Actions | 17:37 |
th1a | - Delete | 17:37 |
th1a | - Book | 17:37 |
th1a | (book first) | 17:37 |
replaceafill | ah ok | 17:37 |
th1a | Let's make "Book" "Reserve This" | 17:38 |
th1a | Or "Reserve" I guess. | 17:38 |
th1a | For consistency. | 17:38 |
replaceafill | cool, i'll work on that | 17:39 |
th1a | So aelkner you added Delete to the person action. | 17:41 |
th1a | ? | 17:41 |
aelkner | yes, and i wanted to discuss the dialog with you | 17:41 |
aelkner | http://69.164.203.135:36660/persons/student1 | 17:41 |
th1a | Yes, we can make the text more emphatic. | 17:41 |
aelkner | so you already saw | 17:41 |
aelkner | i can make the text anything you want it to be | 17:42 |
aelkner | and call the buttons whatever you want | 17:42 |
th1a | Can we make settings always last? | 17:43 |
th1a | Or just on a per-view basis? | 17:43 |
aelkner | we can order the sidebar sections any way you want | 17:43 |
aelkner | i put actions after settings because i didn't know otherwise | 17:43 |
th1a | Sure. | 17:43 |
th1a | Let's make Settings last, in general. | 17:43 |
th1a | Basically: | 17:44 |
th1a | Object | 17:44 |
th1a | Actions | 17:44 |
th1a | Settings | 17:44 |
aelkner | ok, the delete dialog: | 17:44 |
aelkner | title, message text, message element (h3?), etc. | 17:45 |
th1a | Message element? | 17:45 |
aelkner | i used a <p> | 17:46 |
aelkner | but that renders the text kind of small | 17:46 |
th1a | Yeah... | 17:46 |
aelkner | anyway, whenever you have suggestions for those things, i will change them | 17:46 |
th1a | Try h3. | 17:47 |
* th1a checks the UWG. | 17:47 | |
th1a | Maybe just make that a separate class that we can fiddle with later. | 17:50 |
th1a | Does that make sense replaceafill? | 17:50 |
replaceafill | sure | 17:50 |
replaceafill | this is for the "Are you sure?" message, correct? | 17:51 |
th1a | Yes. | 17:51 |
th1a | Confirmation message. | 17:51 |
th1a | Something like that. | 17:51 |
replaceafill | you don't like h3 for that? | 17:52 |
replaceafill | too much margin? | 17:52 |
th1a | I guess I should see it. | 17:52 |
replaceafill | ah | 17:52 |
th1a | That might do the trick. | 17:52 |
replaceafill | i just saw it in firebug :P | 17:52 |
replaceafill | h3 looks good to me | 17:52 |
replaceafill | maybe just the margin | 17:52 |
replaceafill | but the font size seems ok | 17:53 |
replaceafill | at least in Debian ;) | 17:53 |
aelkner | making it h3... | 17:53 |
aelkner | th1a, it is h3 now | 17:54 |
aelkner | looks good to me | 17:55 |
th1a | Actually, why does it have less of a left margin than the buttons? | 17:55 |
replaceafill | th1a it's the style of the button | 17:56 |
replaceafill | they have the same alignment | 17:56 |
replaceafill | but the left border of the button is white | 17:56 |
th1a | Why? | 17:57 |
* replaceafill goes look the guidelines | 18:00 | |
th1a | OK. | 18:00 |
th1a | OK... text. | 18:01 |
aelkner | drumroll, please | 18:02 |
aelkner | btw, you realize that we are talking about deleting the person object permanently here,.right? | 18:03 |
aelkner | this is important so that the admin can reuse the username | 18:03 |
aelkner | but it also means that all grades, for instance, will be lost | 18:03 |
aelkner | and not retrievable | 18:03 |
replaceafill | th1a page 23, GRAPHIC SECTION, Base styling, Background-color | 18:04 |
th1a | "Deleting a person is permanent, irreversible, and destroys all data associated with the person, including relationships with other people. It is strongly recommended that you only delete people who have been created in error or have no data associated with them." | 18:04 |
aelkner | well, i guess you did :) | 18:04 |
th1a | (this is in lieu of making it impossible) | 18:04 |
aelkner | that's a good message | 18:04 |
th1a | Is there a reason the button has a border at all? | 18:04 |
aelkner | what do you think about double-confirmation steps | 18:05 |
th1a | Nah. | 18:05 |
aelkner | sometimes on-line forms will ask you one more time | 18:05 |
replaceafill | th1a sorry, it's not a border, it's the background that does that effect | 18:05 |
th1a | It doesn't work, aelkner. | 18:05 |
aelkner | like first the confirmation step with long text | 18:05 |
replaceafill | th1a and it looks ok on regular forms | 18:05 |
replaceafill | th1a because of the gray background they have | 18:05 |
replaceafill | we could assign a different background to buttons on dialogs | 18:05 |
replaceafill | since dialogs have white backgrounds | 18:06 |
th1a | I guess try that? | 18:06 |
aelkner | then the user hits ok, and the website, says one more time, please click conform again to finalize this action | 18:06 |
aelkner | or something like that | 18:06 |
aelkner | you probably will say no, but i thought it was worth throwing it out there | 18:06 |
replaceafill | th1a cool, will do when i finish the resources | 18:06 |
th1a | aelkner: Yeah, it is ineffective. Regular confirmations are ineffective too, but more of a cya thing. | 18:06 |
th1a | replaceafill: The problem with making them gray is that it might blend into the background more. | 18:07 |
aelkner | when you say ineffective, you mean because people ignore them? | 18:07 |
th1a | Yes. | 18:07 |
replaceafill | th1a agree | 18:07 |
th1a | Don't read them. | 18:07 |
aelkner | well, people are people, what are you going to do | 18:08 |
th1a | A world where people read confirmation dialogs would be a very different world. | 18:08 |
aelkner | :) | 18:08 |
aelkner | what about the button, Apply, change that to Confirm? | 18:09 |
aelkner | or Delete? | 18:10 |
th1a | Oooh... Delete actually. | 18:11 |
th1a | Make it as explicit as possible. | 18:11 |
aelkner | Delete it is | 18:12 |
aelkner | now that yvl got the dialog to come up for us, i need to work on getting it to actually delete the person | 18:12 |
th1a | lol | 18:12 |
aelkner | why is that funny? | 18:12 |
replaceafill | th1a are we keeping the "Leaders" link for resources? | 18:13 |
th1a | Oh, yes. | 18:14 |
aelkner | replaceafill, to get the person to delete, i'll need to redirect to a person container delete view | 18:14 |
th1a | Well, no. | 18:14 |
th1a | :-D | 18:14 |
aelkner | that doesn't have confirm step\ | 18:14 |
replaceafill | :/ | 18:14 |
th1a | Leaders should be a table on the resource index page. | 18:14 |
replaceafill | like advisors? | 18:15 |
th1a | With a pencil. | 18:15 |
th1a | Yes. | 18:15 |
aelkner | just does it, but i need to do that because person context can't delete itself | 18:15 |
*** ignas has joined #schooltool | 18:15 | |
aelkner | replaceafill, make sense? | 18:15 |
yvl | [pushed the add base form] | 18:15 |
replaceafill | aelkner yes | 18:15 |
aelkner | thought so | 18:15 |
aelkner | thanks for confirming that | 18:15 |
replaceafill | you just pass the person_id, right? | 18:15 |
aelkner | right | 18:15 |
aelkner | no template, just a __call__ method | 18:16 |
replaceafill | aelkner i think containers already have a generic delete view | 18:16 |
* replaceafill goes to see the new add form | 18:16 | |
th1a | replaceafill: In english let's change "Leaders" to "Responsible parties." | 18:20 |
replaceafill | yvl if you do: | 18:20 |
replaceafill | template = InheritTemplate(flourish.page.Page.template) | 18:20 |
th1a | I don't know how easy it will be to translate that. | 18:20 |
replaceafill | you dont have to call update on the base class? | 18:20 |
yvl | umm no | 18:21 |
yvl | two things there: | 18:21 |
yvl | flrouish.form.* views call super() and invoke base class updates | 18:21 |
yvl | and template was being set to person_add.pt, so I changed to default page template | 18:22 |
yvl | flourish.page.Page.update does not call base class update, and I think that is OK | 18:22 |
replaceafill | ah ok | 18:23 |
aelkner | you have to do that explicitly in the derived class, right? | 18:23 |
replaceafill | i'll try to remove some hacks by using it | 18:23 |
yvl | if you inherit NewClass(flourish.page.Page, SomeClassWithUpdate) | 18:24 |
yvl | then NewClass needs to call SomeClassWithUpdate.update explicitly | 18:24 |
yvl | well guys... good luck! | 18:26 |
yvl | and keep up the amazing work :) | 18:26 |
replaceafill | thanks yvl, take care | 18:26 |
aelkner | thanks yvl | 18:26 |
yvl | if something breaks when I'm away, feel free to hack as much as you need to to keep the show rolling ;) | 18:27 |
*** yvl has quit IRC | 18:27 | |
aelkner | replaceafill, here that, we have complete reign :) | 18:27 |
replaceafill | yeah i was thinking the same :)) | 18:28 |
replaceafill | let's break the code!! | 18:28 |
replaceafill | :D | 18:28 |
aelkner | and listen to me, 'here that', that comes from needing to type faster than thinking | 18:29 |
replaceafill | :D | 18:29 |
aelkner | replaceafill, you were saying something about an existing container view | 18:32 |
aelkner | where would that be? | 18:32 |
replaceafill | ah yes, i remember containers already have a delete view | 18:32 |
replaceafill | let me check | 18:32 |
aelkner | i remember seeing that somewhere, too, but i can't find it now | 18:33 |
replaceafill | src/schooltool/app/browser/configure.zcml | 18:33 |
replaceafill | class="schooltool.skin.containers.ContainerDeleteView" | 18:34 |
aelkner | ok, thanks, so i can redirect to that view and add &CONFIRM to the querystring, right? | 18:35 |
replaceafill | yes | 18:35 |
aelkner | handy | 18:35 |
replaceafill | but your keys need to be in form: delete.person_id | 18:36 |
aelkner | right, and i need to create a flourish version of that view, too | 18:36 |
aelkner | btw, this app pointing into skin and person pointing into basicperson stuff is a mess | 18:38 |
aelkner | i mean we have many classes that are created in one package and registered in another | 18:39 |
aelkner | replaceafill, how do you like that, container delete already has flourish version! | 18:40 |
replaceafill | nice! thanks yvl ;) | 18:41 |
aelkner | yeah, that was in the beginning | 18:41 |
* th1a goes to take a shower. | 18:45 | |
* th1a gets back. | 19:06 | |
aelkner | th1a, http://69.164.203.135:36660/persons/student1 | 19:14 |
aelkner | try the delete button now | 19:14 |
th1a | We need some line breaks there. | 19:15 |
th1a | Can you force the size of the dialog? | 19:15 |
th1a | Width? | 19:15 |
aelkner | replaceafill, do we have css for dialog widths? | 19:15 |
th1a | OH SHIT. | 19:15 |
aelkner | nice language! | 19:16 |
th1a | I didn't want to delete that person. HELP! | 19:16 |
replaceafill | :)) | 19:16 |
replaceafill | UNDO!!! | 19:16 |
aelkner | th1a :) | 19:16 |
aelkner | you know, we had talked about arckiving students | 19:17 |
th1a | aelkner: http://jqueryui.com/demos/dialog/ | 19:17 |
th1a | Yes, it has to be done. | 19:17 |
replaceafill | aelkner i guess you can assign the width using ajax_settings | 19:17 |
th1a | maxWidth | 19:17 |
replaceafill | according to what yvl explained yesterday | 19:17 |
aelkner | ah, ok | 19:17 |
replaceafill | def updateDialog(self): | 19:18 |
replaceafill | # XXX: hacked-in default width | 19:18 |
replaceafill | self.ajax_settings['dialog']['width'] = 944 | 19:18 |
replaceafill | ttwizard.py | 19:18 |
aelkner | cool, thanks | 19:18 |
aelkner | th1a, what width do you want? | 19:20 |
aelkner | 944 was necessary for the timetable wizard | 19:21 |
th1a | How about the width of the main content area. | 19:21 |
th1a | This is for all dialogs or just this one? | 19:21 |
aelkner | just this one | 19:21 |
th1a | The width of the main content area is fine. | 19:22 |
aelkner | we need to hack this dialog to dialog until we have a general solution in base class | 19:22 |
aelkner | replaceafill, that's 544, right? | 19:22 |
aelkner | that's what i see in page.css | 19:23 |
replaceafill | aelkner if you just insert your h3 inside the form you'll get the default width | 19:24 |
replaceafill | forms inside dialogs have a default width | 19:24 |
replaceafill | maybe we should set that default width to the dialog content instead | 19:25 |
replaceafill | but yes aelkner it's 544px | 19:25 |
replaceafill | for the form | 19:25 |
aelkner | yeah, but it's not set to that by default, we need the hack, right? | 19:26 |
replaceafill | set the width using ajax_settings and please put an XXX: fix the width of dialog content in css | 19:27 |
aelkner | so that's a css TODO | 19:27 |
replaceafill | yes | 19:28 |
aelkner | ah, ok | 19:28 |
aelkner | replaceafill, do i need to use <br /> elements inside my <h3> to get it to break lines | 19:28 |
aelkner | otherwise, it creates a scroll bar as a result of wrapping | 19:29 |
aelkner | which doesn't look good | 19:29 |
replaceafill | let me check | 19:29 |
replaceafill | aelkner can you update your instance? | 19:30 |
aelkner | ok, one sec | 19:30 |
aelkner | replaceafill, loaded | 19:31 |
replaceafill | aelkner it's the right and left padding | 19:32 |
aelkner | so more css to fix? | 19:33 |
replaceafill | try 544+16 | 19:33 |
aelkner | ah | 19:33 |
replaceafill | you see, the buttons are inside the form | 19:33 |
replaceafill | so the buttons row only has 544px | 19:33 |
replaceafill | and they're contained | 19:33 |
aelkner | much better | 19:33 |
replaceafill | but yes, i need to fix that | 19:34 |
replaceafill | :) | 19:34 |
aelkner | instance loaded | 19:34 |
replaceafill | hhhmm | 19:35 |
replaceafill | is it me or the default action is Delete | 19:35 |
replaceafill | i mean, if you see the form and hit Enter... | 19:36 |
aelkner | define hhhmm please :) | 19:36 |
replaceafill | can you try that? | 19:36 |
replaceafill | i see the focus on the Delete button | 19:36 |
aelkner | i believe you :) | 19:36 |
aelkner | do you know how to control the default button in z3c? | 19:37 |
replaceafill | actually, it's an html thing | 19:37 |
aelkner | anyway, maybe it's ok | 19:37 |
replaceafill | ok | 19:37 |
aelkner | yeah, it's the order | 19:37 |
aelkner | html makes the zero button the default | 19:38 |
aelkner | anyway, enter for yes, escape for no, pretty much the convention | 19:38 |
replaceafill | i just remember Vitor saying "make the default action non destructible" ;) | 19:38 |
replaceafill | but i'll leave that to th1a | 19:38 |
aelkner | good point | 19:38 |
* replaceafill goes back to fight leaders | 19:39 | |
aelkner | but how would we change the default anyway in z3c? | 19:39 |
aelkner | we would need to tell it to render the button differently | 19:39 |
aelkner | but god know how one would do that | 19:39 |
replaceafill | eeehhh!! leaders is working! | 19:41 |
aelkner | th1a, have you looked at the delete view in my instance lately | 19:41 |
aelkner | and also, what do you want me to do nect? | 19:41 |
aelkner | next | 19:41 |
replaceafill | th1a http://69.164.203.135:6660/resources/my-resource | 19:41 |
replaceafill | th1a for Delete i suppose you want a dialog like the one aelkner just did, correct? | 19:42 |
th1a | Eh... | 19:48 |
th1a | Well, a simple confirmation I guess. | 19:49 |
th1a | Not a paranoid one. | 19:49 |
replaceafill | th1a check the resource functionality | 19:49 |
replaceafill | except for the calendar/booking it's complete | 19:49 |
th1a | aelkner, flip Settings/Actions | 19:50 |
th1a | replaceafill: Can we change "leaders" on the relationship form? | 19:51 |
replaceafill | yes | 19:51 |
replaceafill | Current/Available ...? | 19:52 |
replaceafill | responsible parties? | 19:52 |
th1a | Yes. | 19:52 |
replaceafill | refresh | 19:52 |
th1a | replaceafill: Make Delete last | 19:53 |
replaceafill | oops, forgot the title | 19:53 |
replaceafill | ok | 19:53 |
replaceafill | fixed | 19:54 |
th1a | OK. | 19:54 |
aelkner | th1a, what would be a good thing to do next? | 20:02 |
th1a | years | 20:02 |
aelkner | ah, yes, a good one | 20:02 |
replaceafill | th1a http://69.164.203.135:6660/resources | 20:19 |
replaceafill | delete works now | 20:19 |
replaceafill | can you check the dialog? | 20:19 |
th1a | That's fine. | 20:19 |
replaceafill | cool, pushing these changes | 20:20 |
aelkner | replaceafill, i pushed my changes to trunk, could you do the same sometime today? | 20:35 |
aelkner | th1a, i flipped Settings/Actions in person view | 20:36 |
th1a | Looks good. | 20:36 |
th1a | replaceafill: Has enrollment statuses never made it into trunk? | 21:07 |
th1a | What did we do that for? | 21:07 |
th1a | Did you work on that? | 21:07 |
replaceafill | yes, but it was never finished | 21:07 |
replaceafill | i remember i jumped into something else | 21:07 |
replaceafill | before a sprint | 21:07 |
replaceafill | 2010 i think | 21:07 |
th1a | Well, I don't remember. | 21:07 |
replaceafill | or after... | 21:08 |
th1a | We'll have to finish that! | 21:08 |
replaceafill | i could retake that :) | 21:08 |
replaceafill | ah! good | 21:08 |
th1a | Not right now. | 21:08 |
replaceafill | ah :( | 21:08 |
replaceafill | :) | 21:08 |
th1a | We're kinda busy. | 21:08 |
th1a | I'd rather we didn't finish it than finished it and never merged it! | 21:09 |
replaceafill | no, it was never finished | 21:10 |
replaceafill | aelkner i pushed my changes | 21:10 |
replaceafill | to trunk | 21:10 |
th1a | replaceafill: We should pick it up after this release is ready. | 21:10 |
replaceafill | th1a could i work this afternoon in jelkner's pyquiz request? | 21:12 |
replaceafill | or do you want me to start with something on flourish? | 21:12 |
th1a | This would be a reasonable time to squeeze in some PyQuiz. | 21:13 |
replaceafill | great | 21:14 |
replaceafill | btw, one thing still missing for resources is the evolution script, but i'll work on that next week (if that's ok) | 21:16 |
th1a | Oh... I was hoping you were done with that! | 21:21 |
replaceafill | i just wonder if the evolution tests work | 21:22 |
* replaceafill tries | 21:22 | |
replaceafill | ConfigurationError: ('Unknown directive', u'http://schooltool.org/flourish', u'content') | 21:22 |
replaceafill | :( | 21:22 |
th1a | aelkner and replaceafill: What do we know about years at this point? | 21:31 |
th1a | That is, we know one is active the others aren't. | 21:31 |
th1a | Do they have a sequence? | 21:31 |
th1a | Do we know if one has been active already and deactivated -- that it is effectively archived? | 21:31 |
replaceafill | the schoolyear container has a sorted_schoolyears property | 21:32 |
replaceafill | that orders them based on their last attribute | 21:33 |
th1a | last attribute? | 21:33 |
replaceafill | when you create one schoolyear, you set title, first and last | 21:33 |
replaceafill | dates | 21:33 |
th1a | OK. | 21:33 |
th1a | aelkner: ayt? | 21:34 |
replaceafill | and the schoolyear container only knows about the current school year setting a property | 21:34 |
th1a | I figured. | 21:34 |
replaceafill | _active_id, the schoolyear object knows nothing about it | 21:34 |
replaceafill | aelkner are you going to fix the limit keys labels? | 21:36 |
aelkner | th1a, catching up to log... | 21:36 |
aelkner | replaceafill, i can do that, yes | 21:37 |
aelkner | th1a, i see replaceafill answered you questions | 21:38 |
th1a | Yes, so let's talk years index for a minute. | 21:42 |
th1a | Years should be in a table. | 21:43 |
th1a | Title | First Day | Last Day | Active | 21:44 |
th1a | With the active one checked. | 21:44 |
th1a | Sidebar: | 21:44 |
th1a | Add | 21:44 |
th1a | - New School Year | 21:44 |
th1a | I mean | 21:44 |
th1a | - School Year | 21:44 |
th1a | Actions | 21:44 |
th1a | - Activate New Year | 21:45 |
th1a | Which gives you a modal, with radio button form to select the active year. | 21:45 |
aelkner | i think the activate view works off the schoolyear in question | 21:45 |
aelkner | but i might be mistaken | 21:45 |
aelkner | we could create a new modal as you suggest | 21:45 |
th1a | you do it from the /schoolyears form. | 21:45 |
aelkner | oh, you already checked th old skin? | 21:46 |
th1a | Yes. | 21:46 |
aelkner | ok | 21:46 |
replaceafill | aelkner active id is a property on the container | 21:46 |
th1a | Oh, also, we'll move delete to the year index. | 21:46 |
aelkner | yes, following the pattern we have been using | 21:47 |
replaceafill | if the delete person message was scary, delete schoolyear should be scarier (or whatever you say that) :) | 21:47 |
th1a | "Noooooooo........... DON'T DO IT." | 21:48 |
aelkner | :) | 21:49 |
th1a | Sort in descending order of time (most recent first). | 21:52 |
th1a | Active year gets a check. | 21:52 |
th1a | replaceafill, aelkner: How do you guys feel about an accordion for the year view. | 21:58 |
th1a | Terms / Groups / Levels / Timetables | 21:59 |
th1a | ? | 21:59 |
th1a | Are more accordions much work at this point? | 21:59 |
aelkner | those are all container views | 22:00 |
aelkner | putting them all as subfroms of the schoolyear view might be tricky | 22:01 |
th1a | Well... more of that info should be on the page itself anyhow. | 22:01 |
replaceafill | subforms? | 22:01 |
th1a | viewlets? | 22:01 |
aelkner | the current viewlet manager is just for the links | 22:02 |
aelkner | if we create a new on to contain the container views | 22:02 |
aelkner | each view having a filter widget | 22:03 |
aelkner | meaning each one will have a form | 22:03 |
aelkner | that's what i meant by subforns | 22:03 |
th1a | But the accordion itself? | 22:08 |
aelkner | that's the manager | 22:08 |
th1a | The question is... | 22:08 |
aelkner | it's the viewlets that contain forms that is the question | 22:08 |
th1a | Are more accordions much work at this point? | 22:08 |
th1a | I mean, the alternative is a multi-column layout, which is probably more work all around. | 22:09 |
th1a | And not as good. | 22:09 |
aelkner | take person, for instance | 22:09 |
aelkner | there are no accordion viewlets that have a form | 22:09 |
aelkner | just links to call up other forms | 22:09 |
th1a | Yes. | 22:10 |
replaceafill | aelkner why do you want a form in the accordions? | 22:10 |
th1a | aelkner is jumping the gun. | 22:10 |
replaceafill | dont you just need links? | 22:10 |
aelkner | say the year has 200 courses | 22:10 |
aelkner | do we show the whole list? | 22:11 |
aelkner | do we allow filtering? | 22:11 |
aelkner | if so, how? | 22:11 |
replaceafill | good point | 22:12 |
aelkner | now you see why i mentioned subforms :) | 22:12 |
replaceafill | well, you can make a table scrollable | 22:13 |
replaceafill | with the right css | 22:13 |
replaceafill | http://www.imaputz.com/cssStuff/bigFourVersion.html | 22:13 |
replaceafill | for example | 22:13 |
aelkner | interesting | 22:15 |
aelkner | is it display: table? | 22:15 |
aelkner | that's what firebug shows | 22:15 |
th1a | Courses is the only one that could be big. | 22:16 |
replaceafill | aelkner no, overflow i think | 22:16 |
aelkner | i don't see overflow in firebug | 22:17 |
aelkner | th1a, what do you think about that table? | 22:17 |
th1a | That would be reasonable in this case. | 22:18 |
th1a | Inside an accordion. | 22:18 |
aelkner | if no filtering is necessary, and it's ok for the tables to be as big as the data | 22:19 |
th1a | Actually, consider this: | 22:19 |
th1a | We have the year page which includes an accordion section for groups. | 22:19 |
th1a | But now we also have a global groups index with an accordion for each year. | 22:19 |
th1a | What would you think about that? | 22:19 |
aelkner | that would follow as a good design, yes | 22:20 |
replaceafill | th1a you mean a /groups view | 22:21 |
th1a | Yes. | 22:21 |
replaceafill | got it | 22:21 |
th1a | Or... | 22:21 |
th1a | Yes, that. | 22:21 |
replaceafill | and /courses, /levels, etc views too? | 22:21 |
th1a | Yes. | 22:21 |
replaceafill | :| | 22:22 |
replaceafill | lots of new views :) | 22:22 |
th1a | And they'd both point you to the same manage views. | 22:22 |
replaceafill | the index of the containers | 22:22 |
aelkner | th1a, yeah, we don't have groups, courses, levels outside of years in old skin | 22:22 |
th1a | The particular year/groups | 22:22 |
aelkner | but if you want them, that would possible | 22:23 |
th1a | That might have to wait for th next release. | 22:23 |
aelkner | yeah, it's not urgent anyway, just interesting | 22:24 |
aelkner | and perhaps convenient | 22:24 |
aelkner | and a useful tool for educating the user as to the scope of their data | 22:25 |
th1a | Well, I want to get out of the navigating through years paradigm. | 22:26 |
th1a | It isn't really intuitive to the user. | 22:26 |
th1a | It is just us mapping the UI to the database. | 22:26 |
th1a | There definitely isn't going to be a year tab. | 22:26 |
th1a | OTOH, we could just make the year view simple and do the /groups, etc views INSTEAD. | 22:27 |
aelkner | interesting | 22:27 |
aelkner | if we did that, say groups for instance | 22:28 |
aelkner | it could be an accordion, one for each year, with the active schoolyear expanded? | 22:28 |
th1a | I guess we have to assume that 99% of the time the user is only interested in the active year's group, so an accordion per year is probably wrong. | 22:28 |
th1a | Well, perhaps that's wrong. | 22:29 |
th1a | Because basically, you shouldn't need to go to that view very much at all. | 22:29 |
replaceafill | why dont /groups -> active year groups and so on | 22:29 |
th1a | So yeah, an accordion per year might be fine. | 22:29 |
aelkner | i don't think replaceafill meant that | 22:31 |
aelkner | we could only show the activie year groups in /groups | 22:31 |
* th1a was responding to himself. | 22:31 | |
aelkner | with a link to other years, and that cold be an accordion | 22:31 |
th1a | Can we populate an accordion section on open using ajax? | 22:35 |
th1a | Hrm... | 22:35 |
th1a | LIke http://jqueryui.com/demos/tabs/#ajax | 22:36 |
replaceafill | accordions don't have that natively | 22:37 |
replaceafill | but neither dialogs, and yvl made it possible ;) | 22:37 |
th1a | tbh, probably just tertiary navigation would be best, with a "tab" per year. | 22:38 |
th1a | You know, let's bite the bullet a bit here. | 22:39 |
th1a | I think we can and should just chuck navigating through years. | 22:40 |
th1a | Any objections? | 22:41 |
th1a | yvl is on vacation... | 22:41 |
th1a | We're in charge... | 22:41 |
aelkner | :) | 22:41 |
th1a | Dad left the car keys. | 22:41 |
replaceafill | :)) | 22:41 |
aelkner | what do you mean 'navigating through years'? | 22:41 |
th1a | Alan has a fake ID so he can buy a keg. | 22:41 |
th1a | I mean, there definitely will be no year tab in the top bar. | 22:42 |
th1a | When you go to schoolyears, you'll be able to create a school year, but go no "deeper." | 22:42 |
th1a | To make a term you'll go to /terms. | 22:42 |
th1a | etc. | 22:42 |
th1a | I guess this is the point where you should say "Oh... that is one of those things that's WAY more painful than you'd think." | 22:43 |
th1a | If it is. | 22:43 |
th1a | (we can also mull this over the weekend...) | 22:44 |
aelkner | think about this: | 22:44 |
aelkner | if we force the user to go to year to find terms, courses, etc. | 22:44 |
aelkner | or if we let the user go to /terms and then they have to find a year | 22:45 |
aelkner | it seems like they have to deal with the year either way | 22:45 |
aelkner | i think we need to stick to the schoolyear approach | 22:45 |
th1a | But that's not the problem. | 22:45 |
replaceafill | i think we should hide non-active schoolyears | 22:45 |
aelkner | the user definitely will find it easy to go to the active schooyear and do stuff from there | 22:45 |
th1a | The problem is the user has to remember if this is a global thing he's dealing with, or a year-based one. | 22:45 |
th1a | That's the problem. | 22:46 |
aelkner | we offer year-based data, so they have to think about it | 22:46 |
aelkner | just because persons and demo fields are not, doesn't change that | 22:46 |
th1a | The problem is not that people have to remember what year it is. | 22:47 |
th1a | The problem is that the management is split apart in an unintuitive way. | 22:47 |
aelkner | we should talk about a manage home view | 22:48 |
aelkner | and perhaps we could combine stuff there | 22:48 |
aelkner | both active year and global | 22:48 |
aelkner | then the user would find everything there and only have to think about years when they are different than current | 22:49 |
th1a | That's the part I've only got in my head. | 22:49 |
th1a | If there is one manage view, it isn't going to send you through the year hierarchy. | 22:49 |
th1a | The problem now is we have multiple manage views. | 22:50 |
aelkner | what if the manage view had a link for persons | 22:50 |
aelkner | and a link for active schooyear | 22:50 |
aelkner | and a link for active schoolyear groups | 22:50 |
aelkner | and courses, etc. | 22:51 |
th1a | What does the "link for active schoolyear" get for you then? | 22:51 |
aelkner | title, descrption, edit links | 22:51 |
aelkner | heck, it could be a odal edit view | 22:51 |
aelkner | think about this: | 22:51 |
aelkner | it's true that schoolyear now has links for its data, but we don;t have to put the lnks there | 22:52 |
th1a | That's what I'm saying. | 22:52 |
aelkner | they are just there because it made sense to ignas when he created schooyears way back when | 22:52 |
th1a | precisely. | 22:53 |
aelkner | so i vote for having the links that are in schooyear just be in the manage view | 22:53 |
th1a | OK, here's one executive decision. | 22:54 |
th1a | I want new years to have their titles limited to 12 characters. | 22:54 |
th1a | So add that. | 22:54 |
th1a | We don't need to evolve the old ones. | 22:55 |
aelkner | ok | 22:55 |
th1a | So then we can fit plenty of years in tertiary navigation. | 22:55 |
th1a | e.g. p. 19. | 22:56 |
th1a | This may actually be kind of simple. | 22:58 |
th1a | If you click on Groups in the manage view. | 22:58 |
th1a | And it takes you to $ACTIVE_YEAR/groups | 22:59 |
th1a | and the tertiary navigation is just a link for each school year/groups | 22:59 |
th1a | That's... pretty much it, right? | 22:59 |
replaceafill | when are we showing the third-level nav? just for /groups, /courses, etc? | 23:00 |
th1a | Yeah. | 23:02 |
aelkner | what do we have for second-level navigation? | 23:03 |
th1a | Breadcrumbs. | 23:04 |
th1a | So basically, in the short term, do schoolyears, but keep the year index pages simple. | 23:09 |
th1a | Without the contained objects. | 23:09 |
aelkner | got it | 23:13 |
th1a | OK, that should carry us through to Monday. | 23:30 |
th1a | replaceafill can do the CSS for tertiary navigation if he feels motivated. | 23:31 |
th1a | I'll be traveling to Maine. | 23:31 |
replaceafill | th1a ah ok, will also work on the evolution script for resources | 23:31 |
th1a | That should be fun. | 23:31 |
replaceafill | are we meeting next monday? | 23:31 |
* replaceafill doesnt remember th1a's vacation schedule :) | 23:32 | |
th1a | Yes. | 23:33 |
th1a | Next week I'll be around for morning meetings most of the time. | 23:33 |
th1a | I'll let you know if not. | 23:33 |
replaceafill | cool | 23:33 |
th1a | I just won't be lurking all day. | 23:33 |
replaceafill | th1a what's coming for me next week? | 23:34 |
replaceafill | no calendar/timetable please :) | 23:34 |
th1a | No. | 23:34 |
* replaceafill is scared of those parts | 23:34 | |
replaceafill | :D | 23:34 |
th1a | We're going to finish the management views. | 23:34 |
replaceafill | ah, i can style access control | 23:35 |
replaceafill | it looks funny | 23:35 |
th1a | Yes. | 23:35 |
th1a | OK, have a good weekend guys. | 23:37 |
* th1a goes to the grocery store. | 23:37 | |
replaceafill | see you th1a | 23:37 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!