IRC log of #schooltool for Thursday, 2011-06-09

* th1a and aelkner just finished talking on the phone.00:11
aelknerreplaceafill, we need to talk about two things that i can hopefully take over by the end of the week00:12
replaceafillaelkner yes?00:12
th1athe end of tomorrow ;-)00:12
aelkner1) making edit views modal (the ajaz for errors issue)00:12
aelkner2) making relationship views modal00:13
aelknerok, the end of tomorrow00:13
aelknerwiat, tomorrow is thursday00:13
aelknersorry, losing track of the week a second there00:13
th1aThe week ends on Friday.00:13
replaceafillaelkner i'm making calendar_selection.html modal00:14
replaceafilland i hope that's a good example for you to follow00:14
th1aSo that's a relationship one.00:14
aelknerso can i help?00:14
replaceafillaelkner you should take a look at the inline view for courses in my jquery-ui branch00:14
replaceafilli'm doing the same with calendar_selection00:14
aelknerwill there be something for me to merge later tonight?00:16
aelkneri'd like to look at it and grok it together with the courses one00:16
Lumierehi guys00:17
replaceafillaelkner i think so00:17
replaceafillaelkner no, you will have something00:17
* Lumiere just realized his account on opn/fn turns 10 this week!00:17
aelknerLumiere, the guy who's always there, but hardly ever speaks00:17
aelknerwho's it going?00:17
* Lumiere is now in San Antonio, TX00:18
LumiereWorking for RAX00:18
aelknerah, that's right, jelkner told me00:18
Lumiereso I am only 2 hours into my shift00:18
aelknersounds like a good place00:18
Lumierehotter than **** here00:20
aelknerthat's what AC is for :)00:21
aelkneryou texans know how to contribute to global worming!00:22
aelknerreplaceafill, can we talk about CourseInlineAddView?00:24
aelkneryou could save me time by explaining the reason for the various methids00:25
replaceafillaelkner hold on00:25
replaceafilli'm on something00:25
replaceafillgive me 10 mins00:25
replaceafillth1a you there?00:34
replaceafillaelkner ok, ready00:36
* replaceafill goes get some coffee00:46
aelknerreplaceafill, ready00:53
replaceafilli just pushed a change to my modal_test branch in case you want to see it00:54
replaceafillto make calendar_selection modal00:54
aelknerok, looking...00:54
replaceafillboth examples still suck, but they're providing the pattern we're looking for00:55
replaceafillthe thing with calendar_selection is the same as with preferences, they don't do validation00:55
replaceafillso, no ajaxy stuff happens00:56
aelknerlaunchpad is going down in 5 minutes, so i merged00:56
replaceafillaelkner you could see that change in:
replaceafilllog in as teacher001/teacher00100:57
replaceafillgo to Calendar00:57
replaceafillhit Manage00:57
replaceafilland you will see the dialog00:57
replaceafillit's the same thing we did with preferences00:59
aelkneryeah, no erros possible01:00
replaceafillwe can talk inline course if you want01:00
replaceafillyou do need ajax there01:00
aelknerfinally :)01:00
replaceafillok, you wanted me to explain the methods, right_01:00
aelknerlook at all those methods that deliver html01:00
aelkneror i should say, js01:01
replaceafillyes, js01:01
replaceafillthe thing is01:01
replaceafillinside the dialog, you need js01:01
replaceafillor at much submit buttons01:01
replaceafillbecause the dialog cannot submit to itself01:02
replaceafillthere's no way to refresh dialogs01:02
replaceafill(at least i havent found any)01:02
replaceafillso the buttons in the dialog have to be very smart01:02
aelknerif that's the task you need done, how about a bit of out of the box thinking01:03
* replaceafill listens01:03
aelknercould we have a way to let the dialog disappear, but with a redirect back to it with the errors in the request01:04
aelkneryou know what, forget it01:04
aelknerit would be better if we used ajax01:04
replaceafillcourse inline view has two buttons01:05
replaceafilland all those methods just do that, create two smart js buttons01:05
replaceafillcancel is not that smart01:05
replaceafillit just looks for the dialog and closes it01:05
replaceafilllook at the cancel button i just did for modal_test01:05
replaceafilli used the id directly01:06
replaceafillcourse inline view looks for the right dialog01:06
replaceafillone is more "dynamic" than the other01:06
replaceafillwanna talk about the Add button?01:07
replaceafillthe one doing ajaxy stuff01:07
replaceafillit uses jquery.post01:07
replaceafillpassing the url to handle the request01:08
replaceafillthe form data01:08
replaceafilland a js function to handle the response01:08
replaceafillso, when you click 'Add' only is called01:08
replaceafilland it's the js callback the one that checks you got no errors01:09
replaceafillthat js callback is rendered by "def handlerScript"01:09
replaceafillall clear aelkner?01:11 takes scripts as parms01:12
replaceafilljs functions01:12
replaceafill(url, data, function)01:13
replaceafillyou call url using post request passing data01:13
replaceafillthen you get the response back as html01:13
replaceafilland you do whatever you want with it in "function"01:13
aelknerwhen are wanting to do something?01:14
aelknerin order to post?01:15
aelknerduring the post?01:15
replaceafillafter the post01:15
replaceafillyou send "data" to "url" using a html post, right?01:15
aelknerwhat to do with the resonse01:15
replaceafillthen you get a "result" back (the response)01:15
aelkneri got it01:16
aelkneryou often will put the result into the DOM01:16
replaceafillin this case (course inline view)01:16
aelknerin our case errors into the errors div01:16
replaceafilli check for errors in the form (response)01:16
replaceafillif there are errrors, i insert them back into the form01:17
replaceafillif there are no errors, i redirect using window.location01:17
aelknerdoes that close the dialog?01:17
replaceafillthe "insert errors back in the form" part is important01:17
replaceafillyou just go to a new schooltool view01:18
aelknerand by doing so, the dialog disappears01:19
aelkneryou know, that's really convenient, i mean that the modal dialog is not01:19
replaceafilla more cleaner scenario would involve centralizing all these "onclicks"01:19
aelknerreally anywhere different than the page it's on top of01:19
aelknerso moving from it is the same as moving from the page that's below01:20
aelknerand then the redirect takes you back to whereyou want to go01:20
replaceafilla true ajaxy aproach would popup the dialog01:21
replaceafillaccept input, proccess01:21
replaceafilland refresh the page where the dialog was popped up01:21
replaceafillwithout full reload01:21
aelkneryes, we can do that, too eventually01:21
replaceafillsuppose you're in the course container with only two existing Courses01:21
replaceafillChemistry and Physics01:21
replaceafillyou get the dialog, fill with Math, hit Add01:22
replaceafillthe new course is inserted in the courses view using ajax01:22
replaceafillno full reload01:22
replaceafillbut yes01:22
replaceafilllet's first do this ;)01:22
replaceafillcan i do a last comment on this?01:23
replaceafilli always get confused by do vs make ;)01:23
replaceafillas i was saying, having functions with meaningful names would be better01:23
replaceafilllike processNewCourse01:24
replaceafillor something01:24
aelknerinstead of handlerScript?01:24
replaceafillwith handlerScript logic01:24
aelkneryeah, but the clearer name01:24
replaceafillsure, but a function01:24
aelknerit would be nice, if a method is to return js (esentually an ajax method)01:25
aelknerthat it would have a prefix01:25
replaceafillthat function would only need the handler url for post01:25
aelknerlike ajaxProcessNewCours01:25
replaceafillwhatever, but outside of z3c.form01:25
*** alga has quit IRC01:25
replaceafilljust putting it back in js files01:26
replaceafillall this js logic is in a z3c.form01:26
aelknerthe library, you mean01:26
aelknerthere is a call that you can pass the url and form to?01:27
replaceafillwhat do you mean?01:32
aelknerall this logic, what logic01:32
replaceafillthe string returned by handlerScript01:33
aelknergo on01:34
replaceafilllook for references to self.context or self.request in all those methods01:34
replaceafillyou need four of them01:34
replaceafillthe id of the form01:35
replaceafillthe id of the 'Add' button01:35
replaceafilland self.context and self.request to calculate the url to send the data01:35
replaceafillwe could get rid of the first two with conventions01:35
replaceafillnaming all the buttons with this behaviour (add things through javascript) the same01:36
replaceafilland naming all forms with this behaviour the same01:36
replaceafillthen you could move most of this code to a static js01:36
replaceafillit's the same solution i did with the gradebook01:36
replaceafillmoving static things out of the view01:36
replaceafillby things i mean code :)01:37
replaceafilljs code01:37
replaceafillyou'll get all these answers after you've coded like 10 cases ;)01:37
replaceafillany other question/comment aelkner?01:38
aelknerso the course inline that we've been discussing works01:38
aelknerso it's model for creating dialogs that retain active status when errors come back01:39
aelkneryes, i can figure out how to do another one now01:40
replaceafillmy advice, do: Add Groups01:40
aelknerwe don't need to worry about whether there is something in z3c.form that we could use01:40
aelknerwe can just generate the js ourselves for now01:40
replaceafillsure, it's not pretty but i works01:40
aelknerand we can put stuff in the pt file01:40
aelknerlinstead of the view class some times01:41
aelkneralso, i definitely agree to the convention for ids for add forms01:41
aelkneralthough, could we also use classes01:41
aelknerwell, id has the advantage of being unique01:42
aelknertat's your call, of course01:42
replaceafilla class would be right when we have several dialogs in the same page01:44
aelknerand we will01:44
replaceafillagain, i suggest you to port "Add Group"01:44
replaceafillgroup need titles01:44
replaceafillso you need a little validation01:45
aelknerah, add group, the simple one01:46
aelkneri was thinking a relationship01:46
aelknerlike adding a group to a person01:46
aelkneradd group is perfect01:46
replaceafillgive it a shot :)01:46
replaceafillAdd Group is the same as Add Course01:46
replaceafillbut will help you do the whole process01:46
aelkneri agree01:47
aelknersounds like a plan01:47
replaceafilllet me know if i can help01:47
aelknerthanks for the walk-though01:48
replaceafilli'll go out for a while but i plan to work tonigh01:48
replaceafillso i'll be around01:48
aelkneri learned a lot01:48
* replaceafill goes out01:51
aelknercool, catch you later01:51
*** replaceafill has quit IRC01:51
*** ignas has quit IRC01:52
*** menesis has quit IRC02:04
*** replaceafill has joined #schooltool02:42
*** th1a_ has joined #schooltool04:24
*** aks has joined #schooltool06:08
*** aks has joined #schooltool06:08
*** replaceafill has quit IRC06:28
*** replaceafill has joined #schooltool06:37
*** th1a has quit IRC06:45
*** replaceafill has quit IRC08:45
*** yvl has joined #schooltool09:06
*** dadeng has joined #schooltool09:30
*** th1a_ has quit IRC10:02
*** menesis has joined #schooltool10:17
*** alga has joined #schooltool10:40
*** menesis has quit IRC13:01
*** dadeng has quit IRC13:55
*** aks has quit IRC14:21
*** menesis has joined #schooltool14:22
*** dadeng has joined #schooltool14:44
*** replaceafill has joined #schooltool15:26
*** dadeng has quit IRC15:49
*** dadeng has joined #schooltool15:56
yvlOMG, it's meeting time!16:30
aelknerhey yvl16:30
* yvl runs of to quickly make coffee16:30
yvlhi aelkner :)16:30
yvlour new sprint branch ;)16:35
*** th1a has joined #schooltool16:35
th1aHey guys.16:35
yvlcheck it out, and, well check it out :)16:35
yvlhi th1a16:35
yvlhey replaceafill ;)16:35
replaceafillhey everybody :)16:36
th1aWe had a violent thunderstorm last night.16:36
th1aLots of trees down.16:36
th1aTook me a while to get back from dropping Vivian off.16:36
th1aAh, ok, I didn't miss much.16:37
th1aSo... today... yvl update on flourish.16:37
th1aTalking CSS with replaceafill.16:38
aelknerbetween trees and the potholes, it's a wonder you can get anywhere :)16:38
th1aUpdate on jus.16:38
aelknerau jus16:38
*** dadeng has quit IRC16:39
th1aThe meeting with schwa design went well yesterday.16:39
* yvl is eager to hear more16:39
th1aNothing in particular to report... the tech guy on the team actually works with several local schools.16:39
th1aAnd they did some design work last year for the local charter school, which I'd noticed was pretty good.16:40
th1aSo we should have an estimate next week.16:40
yvlif you mange to remember the url to that charter school, it would be nice16:40
th1aThey're interested in an ongoing relationship, which I would want as well.16:41
th1ayvl:  Where are we?16:42
yvlto reiterate -
yvlour new sprint branch16:42
yvlI finally moved content providers to flourish namespace16:42
yvland re-arranged some of the other stuff16:43
yvlran into few fun potholes in Zope, worked around them16:43
aelknerlike what?16:43
yvllike trusted locating adapter factories wrapping None into security proxies16:43
yvlthen into location proxies16:44
yvlthat resuling into bogus getAdapter results16:44
yvlalso, there I didn't do something right with certain permission declarations for viewlets16:44
yvlI think zope.viewlet may also have the same drawbacks16:45
yvlwill need to fix it... later16:45
yvlalso, ported person index.html and edit.html16:45
th1aWhat are the implications of this problem?16:45
yvlat some rare points security mechanism will fail16:46
th1aFail and expose sensitive data?16:46
yvlother way around16:46
th1aThat's better.16:47
yvlbut that will always be obvious16:47
yvlit's just that we have "some" limitations on writing viewlets16:47
yvland breadcrumbs16:47
yvlI don't know what exactly those are16:47
yvljust stumbled into one scenario16:47
yvlwe'll fix it - later16:48
yvlso, currently flourish is actually somewhat operational16:48
yvlyou can even add person16:48
yvl(you'll get a traceback or not found after that, but the person is there)16:48
yvland you can consider person add and edit views as simple examples of porting16:49
yvlpersons also have an "Edit" action button16:49
yvlwhich is an example of adding action buttons to content16:49
th1aIs that the same branch location I already have?16:49
yvlno, I think you have my personal branch16:50
yvlplease run bzr info and check if its justas-pov or schooltool-owners16:50
yvlif replaceafill writes his own LinkViewlet16:50
yvlhe can add JS and link IDs he needs16:50
yvlfor modal forms16:50
yvlhopefully it is self-explanatory16:51
th1aOK, so we can all pile in then?16:51
yvlaelkner, in
yvlit's a class I currently use for links16:52
yvl  <flourish:viewlet16:52
yvl      name="site-preferences.html"16:52
yvl      title="Site Preferences"16:52
yvl      class=""16:52
yvl      manager=""16:52
yvl      permission="schooltool.edit"16:52
yvl      />16:52
yvl  <flourish:viewlet16:53
yvl      name="edit_person"16:53
yvl      link="edit.html"16:53
yvl      title="Edit"16:53
yvl      for="schooltool.basicperson.interfaces.IBasicPerson"16:53
yvl      view="schooltool.basicperson.browser.person.FlourishPersonView"16:53
yvl      manager=""16:53
yvl      class=""16:53
yvl      permission="schooltool.edit"16:53
yvl      html_class="modify"16:53
yvl      />16:53
*** dadeng has joined #schooltool16:53
yvlfirst one adds link to a Manage Site box on the left of a certain page16:53
yvllatter one adds action button to main content of person index.html16:53
yvldeclarations are overkill at the moment, but they *will* be minimised16:54
yvlwith helpers like flourish:action_button, once I write them16:54
th1aOK, what's an action button?16:54
yvlif you remember test.html ...16:55
th1aYeah... I don't think I want those.16:55
yvlI'm not saying they should be there16:55
yvlbut we do need them16:55
yvlthe concept16:55
th1aWhat, why?16:55
yvlsay, we're looking at... a course16:56
yvlwe want to change the title16:56
yvlwe need to clikc something16:56
yvlor, say, we're looking at the user16:56
yvlwe need to click something to change his password16:57
th1aOK, let's not call anything an action button in flourish.16:57
th1aWe have secondary navigation.16:57
yvlcan I call them actions?16:57
th1aWhich is tabbish.16:57
yvland what about "change password" pop-ups?16:57
yvlthey're not navigation16:57
th1aWe have several things...16:58
th1aWe have links in the sidebar.16:58
yvlfrankly, I don't care that much where and how the concept ends up16:58
th1aWell, I do, so I'm trying to make it clear.16:58
yvlbut navigation needs to be separate from actions16:58
th1aI'm saying:16:58
th1a- secondary navigation (tabbish)16:58
th1a- sidebar ("actions," more or less, including ones added externally)16:59
th1a- plain old links coded into the content of the page.16:59
th1aThose are the bags.16:59
th1aAnd the third isn't really a bag.17:00
th1aAnd the second is a bag of bags.17:00
th1aAre we on the same page here?17:00
yvlI see your point17:00
yvlmore Launchpad style17:01
yvla good point, actually17:01
th1aI've learned my job is to be design enforcer.17:02
yvlI have a "by authority" counter-argument17:02
yvlbut I won't push my point17:03
yvlI mean - the action buttons on top of content aren't bad17:03
yvlthey are good17:03
yvljust one style of doing this17:03
yvlwe can put them hard-wired inside content17:04
yvlthat's also good17:04
th1aIt gives us control of the presentation.17:04
th1aAnd links in the sidebar is more fault-tolerant.17:05
yvloh, yes17:05
yvlbasically I'm adovcating action buttons17:05
yvlbecause they work pretty well like pop-ups17:05
yvlall links in side-bar are not modal17:05
yvllinks as action buttons can be modal or in-place17:06
yvlyou suggest to hard-wire the (previously action button) links to a page17:06
yvllike this:17:06
yvlJohn Peterson17:06
yvlsomething something17:06
yvl(change password)17:07
yvlwhich is also nice17:07
yvlthere is no plugabillity in this case17:07
yvlbut it is probably fine17:07
th1aThe plugability mostly goes in the sidebar.17:07
th1aWe may make persons a special pluggable accordion eventually.17:08
yvlwell ok17:08
th1aThat's down the road.17:08
th1aBut it is an obvious route.17:08
yvlI really have trouble seeing benefits of accordeon *there*17:08
th1aBasically it is relatively fault-tolerant design wise if you start adding a bunch of crap.17:09
th1aAnd you don't have to come up with a fancy way of laying out a dynamic page, etc.17:09
th1aI'm not saying it is perfect.  We need to play with the accordion thing more anyhow.17:09
yvlI see your point, but I don't really agree to it :)17:10
yvlwe do need to play with it!17:10
th1aLet me put it this way:17:10
th1aWhat I am trying to avoid is ever being forced into a situation where the page looks like absolute dogshit, could be fixed by just writing a few lines of html, but somehow we can't do that because everything is pluggable magic.17:11
th1aOr everyone acts as if everything needs to be pluggable magic, when it really doesn't.17:12
*** dadeng has quit IRC17:12
yvlwell this I really agree with17:12
th1aAnd one implication of that is that the plug points have to be put in places where they'll do little damage if they get weedy.17:12
*** dadeng has joined #schooltool17:13
yvlby the way17:13
yvldon't get me wrong17:13
yvlI'm not trying to object17:14
th1aI don't want to be stuck with buttons floating in the middle of the content area that can't be moved because they're some kind of viewlet or whatever.17:14
th1aI'm just trying to make sure everyone understands where this is going.17:14
yvlobviously we're trying to achieve the same thing17:15
yvljust from different perspectives17:15
yvlI mean - mine is quite close to the actual code17:15
th1aWhich can be a perilous situation.  ;-)17:15
yvlending up in some "in violent agreement" situations17:16
yvlthis is actually a very good point to experiment17:16
yvlit's UI sprint and whatnot17:17
yvlif you guys are in no hurry17:17
th1areplaceafill & aelkner: You following this?17:17
aelknerit's all theoretical at this point17:17
replaceafillth1a yes17:17
aelknerfirst, we need to discuss process17:18
aelknerwe now have a central branch17:18
yvlok, if you can give me 5 minutes to formulate what I want to put on the table... :)17:18
th1aWell, we need to discuss what the defined viewlet managers are, right?17:18
aelknerthat wouldn't hurt17:19
* yvl takes a 3 min break to think about ActionLink s17:19
*** asharma has joined #schooltool17:20
* yvl back17:22
yvlth1a, you gave good food for thought17:23
yvllet me talk a little about my approach on plugability in this implementation17:23
yvlI am trying to split things into small renderable things17:24
yvlwe have similar concepts all over schooltool, just not consistent17:24
yvlfor example, the person view17:24
yvlgroups, sections and other stuff is added via ...person.Info manager17:25
yvlthe main part is rendered as a simple z3c display form17:25
yvlactions and most of navigation is cramped into one humongous bar at the top17:26
aelknerso far, so good17:26
yvlmy take is to add what you called "bags"17:26
yvland one central point - because you simply need one17:26
yvlthe central part is the display form17:27
yvlit may be generic form17:27
yvlit may be custom form - I don't want to care17:27
yvlthe rest of the person view central part is to be assembled via manager17:27
yvlif you want, you can make that manager an accordeon17:27
yvlin it's essence the code should work like this:17:28
yvlth1a says - there's a lot of additional crap in person view, put that into accordeon17:28
yvldevelopers specify that central viewlets should be rendered with "accordeon viewlet manager" instead of plain viewlet manager17:29
*** dadeng has quit IRC17:29
yvlcurrently I put a (non-mandatory) bag for actions on top of each of these components17:29
th1aLiterally on top of?17:30
yvlat the moment yes17:30
yvlbut the point is it is a bag related to each component17:30
yvl(it's not that hard to move ;) )17:30
yvlsay, we want an "edit" button for groups17:31
yvlwe have17:31
yvlperson name and the rest of display form17:31
yvladvisors and stuff17:31
yvlthen you have two options17:31
yvlput the edit button in a bag of group actions17:32
yvl(now it will get rendered on top of groups)17:32
yvlwe can move it at the bottom of groups17:32
yvlanother option is not to put it in the bag17:32
yvlgroups have their template, obviously17:32
th1aWe have to completely stop using the word action right now.17:33
th1aBecause I don't know what it means.17:33
aelknerwhich word?17:33
th1aAnd up to this point in SchoolTool it has meant "everything."17:33
aelknerdef: a link that takes the user somewhere :)17:33
yvlaction - "a link that calls a modal dialog or follows to a new page to modify content"17:33
*** dadeng has joined #schooltool17:33
aelkneryvl, nice17:34
yvlnavigation - "a link that follows to a new page to view or modify any content"17:34
th1aWhat is not a action?17:34
yvlmain difference - navigation is never modal dialog17:34
yvlaction is never "view" of information, always edit17:34
yvldoes this sound reasonable?17:34
th1aHow do I get back to view?17:34
yvlfrom action:17:35
th1aI action to edit and navigate to view?17:35
yvl - via submit, cancel or other button17:35
yvl- via breadcrumbs17:35
replaceafillcancel navigation button :)17:35
yvl- via other navigation link17:35
yvl- by closing the modal dialog17:35
yvlfrom navigation:17:35
yvl- via other navigation17:35
yvl- via breadcrumbs17:36
th1aSo one thing here is that I don't want to push to far into how the page content is created right now.17:36
th1aI'm much, much, much, much, much more afraid that we'll do damage there than help.17:36
th1aThe content area of the page.17:36
yvlok, let me finish first17:37
th1aI consider that a later iteration.17:37
yvlit won't be long17:37
yvlso, another option instead of putting action to a bag17:37
yvlyou can modify the groups template17:37
yvlto contain something like :17:37
yvl<tal:block content="context/groups/schooltool:content/edit_action">17:38
yvland register it via zcml17:38
yvlI'm done17:38
yvlth1a, one of the things is17:38
yvlthat unless we want to write static html now17:39
yvlwe have to have at least something to put our code in17:39
yvlsay, replaceafill writes JS that takes a link and opens a dialog with a form17:39
yvlJS should not depend on where that link is17:40
yvlwhat I'm trying to say:17:40
yvldon't worry that much if I put a link as "action" on top of content17:40
yvlmy goal is that you could say - "remove it from there, and put it in the center of a page"17:41
aelknerand we need the code to make that easy to do17:41
yvlor at least end up with code to make that easy to do :)17:42
aelknersoon, i hope17:42
* yvl too17:42
th1aI'm not against hand-coding a lot more html than we do now.17:42
yvlI'd like to put it this way17:42
yvlhand-code in other places than where we do now17:42
aelknerth1a, you mean redundant html/python code all over the app17:42
th1aAnd if six weeks from now I want to move some buttons around in the content body and hear that it is impossible I'm going to fucking lose it.17:42
yvldo I hear a definition for my next bonus? :D17:43
aelknerbut seriously, that's what i am shooting for, ease of changes17:43
aelknerbut there's no reason for redundant code and html all over the place17:43
aelknerwe need design of bag17:43
aelknerwe need viewlets17:44
aelknermanagers, etc.17:44
aelknerso that when it comes time to make a page17:44
th1aLet's talk about what will be, in terms of layout the "secondary navigation bar."17:44
aelknerit's ust a matter of, put the link in this bag, put the html in this viewlet manager17:44
th1aTo me, that should be:17:44
th1asomething like...17:44
th1aView | Edit | Reports | Preferences17:45
th1aThe same where ever it appears.17:45
th1a(as relevant)17:45
th1aI'm pretty sure we discussed this in Portugal.17:45
yvlI'm with you17:45
th1aThose are the rules we need to be nailing down now.17:47
yvlsecondary navigation is tabbed, right?17:47
th1aThey don't literally look like tabs at this point.17:47
yvlyou mean test.html?17:47
aelknerand they are not navigation17:47
aelknerthey are actions17:48
th1aIn the guidelines.17:48
th1aI'm thinking Ubuntu Web Guidelines.17:48
th1aI'm not living in the past.17:48
th1aWe gotta MOVE ON.17:48
yvlyes yes17:48
yvlcan you please point me where they don't look like tabs?17:48
yvlpage 19, tabs...17:49
th1aThey don't have rounded corners.17:49
yvlah :D17:49
th1aShadows, etc...17:49
yvla small note17:49
yvlin my vocabulary "tabbed" mean "have functionality of tabs"17:49
aelknersome of the tabs could be menus, right?17:50
th1aI'm not saying yes to aelkner at this point.17:50
aelkneri mean Edit is not navigation, it's call up modal17:50
aelknerthe main page stays where it is17:51
aelknerno navigation away17:51
th1aFrom the user's perspective, yes, that's what would go in secondary navigation.17:51
* yvl is looking at:17:51
yvlView Edit Advisors Advisees Export Groups View Calendar Edit Preferences New Person Change Password Contacts Reports17:51
aelknerwell, that's important17:51
th1aMaybe I should just call it "secondary"17:51
aelknersecondary links17:51
yvlView+Edit is one tab - the person itself17:52
yvlCalendar may be another ?17:52
yvland that's it I guess17:52
th1aView and edit are two tabs.17:52
aelkneradn these tabs are viewlet managers, easy to customize, right17:52
aelknersorry, can't resist talking code there17:53
th1aThe "secondary" bar should be very limited and standardized.17:53
th1aIt might ONLY be View | Edit.17:53
th1a(probably not)17:53
* yvl is actually thinking if we need it at all17:53
aelknerth1a, think about meus17:53
th1aI'm not sure that we do need it at all.17:53
yvlLaunchpad has a nice sidebar with a box of:17:53
aelknerour problem has partly been17:53
yvl    * Change branch details17:54
yvl    * Set branch reviewer17:54
yvl    * Delete branch17:54
aelknerthat our action links bag gets too big17:54
aelknerthat adding and action that has at least three words is forboten17:54
aelkneryou run out of screen real-estate17:54
aelknerand menus solves that17:54
th1aThat's why we're moving things to a sidebar.17:54
th1aAnd maybe we can use menus over there.17:54
aelknerthink launchpad bug view17:54
th1aOr just in the body of the page.17:54
* yvl votes no second level nav at this point :)17:55
aelknereach cell has a menu button next to it17:55
th1aI'm fine with no second level nav.17:55
aelknerthe user is used to clicking on button to find things out17:55
aelknerso it's easy to change a bug in launchpad17:55
th1aI'm not anti-menu in general.17:55
aelkneryou just click on something near the something you want to change17:55
yvlgive me stuff like small calendar and reports as boxes in right column, and I'm good ;)17:55
aelknerand viola, the app teaches you what it can do17:56
th1aaelkner:  Your original question was menus in secondary navigation, right?17:56
aelknerjust saying, we can put it in the sidebar is not enough in my opinion17:56
aelkneri mentioned them, yes17:56
th1aThat's what I was responding to.17:56
yvlhow about this:17:56
yvlwe put all links to the left sidebar17:57
yvland some popup links wired in the center of the page17:57
yvluntill we figure out that is not good enough in three weeks - or not!17:57
yvland then re-arrange the whole damn thing17:57
th1aHere's one specific question that has cropped up.17:58
th1aRight now we've started embedding edit links in the individual (accordion) sections of the person view.17:58
th1aSo you open up "Advisors" and if you have permission, you get an edit link under the list of advisors.17:58
th1aDo we want that approach, or more of a View everything only / Edit everything mode.17:59
yvlI like that with-links approach17:59
yvlit's closer to in-place-edit feel17:59
th1aIf we're doing that we don't need View/Edit at the top at all.18:00
replaceafilli don't like having to protect the links :(18:00
aelknerthat is a good point18:00
yvlreplaceafill - if links are viewlets, they have permissions18:00
aelknerbut an issue we can resolve, i think18:00
yvlif links are content, they have permissions18:00
replaceafillyvl correct18:00
yvlsame as views18:00
yvlnot perfect, but still something18:00
th1aOK.  Now, backing up to the beginning...18:01
yvlone moment18:01
th1aWhere are we now, yvl?18:01
yvlwith this approach I'd like to settle on one thing18:01
yvlare we manually adding the links now, or putting them into a bag18:02
yvlbefore you answer18:02
yvlit is in any case temporary18:02
yvlI'm just wondering how that would be faster for us18:02
yvlput them nicely now18:02
yvlor put them "belong there", and fit them nicely later18:02
aelkneryvl, no need to chose between them18:02
* yvl needs to18:02
aelknerwe can design our main page/sidebars to be easy to insert/remove links18:03
aelknerbut the main page can also add any links it wants to18:03
yvlaelkner, which implementation you need tomorrow?18:03
yvlcurrently you have a bag18:03
aelknerlook, if we work together, we don't need anything tomorow18:03
yvlI can think about the other one18:03
yvland maybe do it today18:04
*** dadeng has quit IRC18:04
yvlallright then18:04
yvllet's make it this way18:04
yvlregister the links as damn action buttons for next few days18:04
yvlthose "edit advisors"18:05
yvlso you can start doing modal dialogs there ;)18:05
yvlI would suggest you guys trying to port any random view18:06
yvlfor basic person18:06
yvlpreferably - z3c form view18:06
yvlbasically look over basicperson/browser/flourish.zcml18:07
yvland see how obvious/unobvious stuff is18:07
yvland then I could discuss code with you tomorrow18:07
yvlyou are on the same timezone, so that should be easier than working completely separately18:07
yvlhow does that sound?18:08
th1aaelkner & replaceafill's first priority is grokking the js dialog stuff they've started.18:08
aelknerso we are going to all push/pull from the same branch, starting now?18:08
th1aFinishing that today.18:08
yvlaelkner, please make your own branches18:08
th1aSo aelkner can solo on js next week.18:08
aelknerth1a, that's already finished18:08
th1aWe'll get to that report then.18:08
th1aaelkner should branch and make merge requests, right?18:09
aelknerwhat report?18:09
replaceafillth1a i'd like some time to finish Chandara instructions too18:09
th1aThe report where aelkner tells me how the js work is coming.18:09
yvlyour daily meeting report, aelkner ;)18:09
th1aLet's get right to that.18:09
yvlth1a, JS will need a lot of tweaking - but that's what we have the sprint for18:10
yvl(if we're not careful we'll end up with maintenance nightmare, but we will be)18:10
aelknerso last night, replaceafill gave me the last walk-though of the jquery stuff18:11
aelknerand in particular, the ajax stuff for updating the modal dialog with errors in place18:11
aelknerthat pretty much was it for doing modal dialogs18:12
aelkneri started on the group add view which will need the ajax stuff for missing title18:12
aelknerthing is there, the code uses base classes from schooltool skin,8 lines of code for add/edit views combined18:13
aelknerbut we never made such base classes for z3c forms and it's high time we did18:13
aelkneri was thinking of creating a file schooltool/skin/forms.py18:14
aelkneror maybe schooltool/app/browser/forms.py18:14
yvlwith their JS counterparts18:14
aelknersounds like a plan18:15
yvlwe'll fiddle with them until they are right18:15
aelknerwe'll need a AddForm and EditForm class there18:15
yvlone does not walk into Mordor, sadly18:15
th1aPlease remember that add and editing objects will not mostly be done in modal forma.18:16
aelknerso we need support for both18:16
aelknerreplaceafill used AddInlineForm or View, i can't remember18:16
aelknercan we have AddForm, EditForm, AddModalForm, EditModalForm?18:17
yvlwe'll see18:17
yvlbut something like that, yes18:17
aelknerwell, why must we wait?18:17
aelknersometing that simple can be decided right here18:17
yvlit's a headache, actually18:17
yvlwe'll see aelkner18:18
yvlI don't see this that simple18:18
yvlmaybe it is18:18
aelknerlook, i don't want to 'see' anything, i want to do18:18
yvlI think you'll need to do few views18:19
yvlthen we'll need to make decent bases18:19
aelknerwe already did a couple forms18:19
aelknerwe can talk bases now18:19
yvlnot in flourish18:19
yvlnow is a good time to pick some forms and do them from flourish branch18:20
yvlthen come the bases18:20
aelkneryou spoke of person index.html view earlier18:20
aelknerthat's where i did most of my work this week18:20
aelknerchanging the view itself and the various viewlets registered against the manager you mentioned18:21
aelknerlet's talk about me getting that work into the flourish branch18:21
yvlI'll be honest, I didn't follow your code changes18:21
aelknernp, i havene't groked yours yet either :)18:22
aelknerthe point is, you mentioned changes you made to person index.html18:22
th1aI think aelkner should charge ahead and check in some changes to flourish today.18:22
th1aRequest a merge, that is.18:22
th1aAnd then have a code-based conversation tomorrow.18:23
yvlI wonder if that would work18:23
yvlit might18:23
th1aIt might be the only thing that will work.  ;-)18:23
aelkneri need to discuss specifics to get the code added to flourish18:23
aelknerwell, i need to read what yvl did, then change it i guess18:24
yvlfirst, look at FlourishPersonView18:24
aelkneror yvl could explain it here real quick18:24
yvlalso search for it in basicperson/browser/flourish.zcml18:24
th1aYou guys speak better in code.18:24
yvlmodified templates are begin with f_*18:25
yvlthe base template was split into two:18:25
yvland FlourishPersinInfo view18:26
*** alga has quit IRC18:26
yvlwith basicperson/browser/templates/f_person_view_details.pt18:26
yvlthey are exceptionally small18:27
yvlbut contain the main things you will need18:27
yvlone of the important drawbacks, is that you can't add anything dynamic to html head18:27
yvlno <sytle>, no <script>18:27
yvlbut those things you needed to add to head18:28
yvlshould be made static resources18:28
aelknerwhy not have a viewlet manager in head?18:28
replaceafillyvl what if they depend on info in the view?18:28
aelknerand just let us add viewlets to that18:28
yvlreplaceafill, they should not need to18:28
yvlJS has variables18:28
yvleverything else is library18:28
yvllike the rest of the world does18:29
yvlfor now you can chuck it anywhere instead of head18:29
yvllike in f_person_view_details.pt18:29
replaceafillby library you mean a centralized set of JS functions we code18:30
yvlJS is object-oriented language, so there you go18:30
replaceafilland do our buttons do onclick="callFoo(var1, var2)"18:30
yvlthey can18:31
replaceafillyou scared me with the non html head anymore18:31
yvland it is reasonable to render <script> in html18:31
aelknerwhat do you mean in html18:31
* replaceafill doesnt like that, but ok18:31
aelknerthat goes in head18:31
yvlbut it should be "configuration" as opposed to "definition of functions or objects"18:31
aelknerwhat are we talking about here?18:32
yvlinstead of onclikc="" you can bind functions with jquery in a <script> part18:32
replaceafilli like not having custom <styles> though :)18:33
yvlreplaceafill, it's a same approach18:33
replaceafillyvl right18:33
yvldiscipline through forbidden head :D18:33
aelkneryvl, where is this <script> part?18:33
aelknerand <styles>?18:34
aelkneri thought they had to go in head18:34
aelknerisn't that html spec18:34
aelknerhelp me out here, gjuys18:34
yvl<styles> have to go in head18:34
yvlbut you could18:34
yvlwrite a .css file18:34
yvland include it in head18:35
yvland we do have a mechanism for that18:35
replaceafillcan we restrict that ;)18:35
replaceafillno css inclusion at all :P18:35
replaceafilljust the authorized css files ;)18:35
yvlnaughty naughty, making fun of lead developer and all18:35
replaceafillsorry go on18:35
aelknerso we're saying all css and js in resources files?18:35
th1aWhere they belong.18:36
replaceafillyvl see!! th1a likes the idea! let's do it!18:36
replaceafillaelkner correct18:36
aelknerso css local to a view wold be in a file with same name as template, for instance, but with .css18:36
aelknerand same for js?18:36
replaceafillaelkner we talked about this yesterday, i said "a more cleaner scenario would involve centralizing all these "onclicks"18:36
yvlof course, you will need to put some dynamic JS in html - that is inevitable - the very least in <a onclick="..."> form18:36
replaceafillwhen we were making fun of the one line js18:36
yvlbut dynamic JS should be really small18:37
yvlsometimes - none at all18:37
replaceafillthe smaller the better18:37
aelknerand always in the body18:37
aelknerin the onclick of an element?18:37
yvlor in body as <script>18:38
replaceafillaelkner remember we talke onclick in z3c.form is TextLine18:38
replaceafillaelkner that's the reason18:38
aelkneryou can put <script> in the body?18:38
replaceafillaelkner kind of to force you to use one liners18:38
replaceafillaelkner yes you can18:38
replaceafilllook at zc.datetimewidget for instance18:38
aelknerand <styles>?18:39
aelknernot right ow, please18:39
th1aThey should always be in separate files.18:39
replaceafillwell, you have the style="" attribute18:39
th1aDon't use it.18:39
replaceafillbut DONT use it!18:39
yvlaelkner, just for the sake of IRC logs (so you can find it later):18:40
th1aaelkner:  We want to make 95% of the CSS wrangling you do unnecessary.18:40
yvlschooltool/skin/flourish/configure.zcml has zope:resourceLibrary directive18:40
yvlan example how to define static resources18:40
aelknerright, and that is handy18:40
replaceafillth1a and the other 5% go in custom css files instead of style="..." attributes18:40
yvltemplates/ has the example how to include those18:41
yvlsearch for resource_library:  in .pt18:41
yvlso if you try to port18:41
yvlyour work to flourish18:41
yvlput *everything* in page template first18:41
yvlboth <script> and <styles> part18:42
yvlthen move the <styles> part to custom .css file18:42
yvland include it as resource18:42
yvland then it will definitely be tomorrow and I will help you more18:42
th1aCan we move toward wrapping this up?18:42
aelknerand <script> part?18:42
yvlin template18:42
aelknerok18:42 probably18:43
th1aSo if replaceafill is available and flourish is ready for the rest of the crew,18:43
th1aI'd suggest a brutal insertion of the CSS included in the web guidelines.18:43
*** dadeng has joined #schooltool18:43
aelknerin a new file18:43
yvlth1a, that is almost done18:43
yvland quite carefully18:44
th1aOh, ok.18:44
yvlwith some unnecessary sugar that can be removed any time18:44
yvlhence - Ubuntu fonts and stuff like that18:44
yvlare already in flourish18:44
yvlby the book, so to say18:44
th1aWell, what I'd add to that is that, given yesterdays discussion about h2 margins, we might want to add some diagnostic outlines to various elements to help us see the spacing issues that crop up.18:44
th1aOf course, firebug does that too.18:44
yvlI am open to talk about this18:45
th1aAh, I have it running but haven't looke at it.18:45
yvljust not today, please18:45
yvlmargins, padding and line heights are a bitch18:45
yvlto put it gently18:45
yvlthere are some landmines in browser css support18:45
th1aWell, that's why we aren't making them up from scratch.18:45
yvllike magic 4 pixels out-of-nowhere18:46
th1aOK.  replaceafill, basically, take a look at that, start working on a plan.18:46
yvlsome of them you just need to know18:46
yvlreplaceafill: a note on form CSS if you ever do it18:46
replaceafillth1a understood18:46
yvlthere are z3c_form_* templates in flourish18:46
yvlif you make a resource library called18:46
th1aIn particular you might want to rip out all the calendaring css (there's a ton of it) and segregate it.18:46
yvlschooltool.flourish.z3cform or whatever18:46
th1aI think it is all mixed up now.18:46
yvland add z3c form specific css, that would be nice18:47
yvlsadly, it may mean another library for formlib probably18:47
yvlth1a, also done18:47
yvlthe ripping out part, that is18:47
th1aWell, take a look at it replaceafill.18:47
yvlI think that should be put back18:47
yvlby whoever ports calendar views18:47
th1aApparently part of the reason yvl is so slow is he's doing things I figured someone else would do.18:47
yvland of course reviewed by the Czar18:48
* yvl is greedy18:48
replaceafillso, yvl a better question18:48
replaceafillwhat needs to be done in the css part? :)18:48
th1atbh, we're not going to be focusing on the calendar CSS much at all first time through.18:48
replaceafilloh ok18:48
yvlsome basic elements are done18:48
replaceafillyvl i should focus on those then?18:49
yvlyou could18:49
yvlalso, when views are remade18:49
yvlthere will be problems with spacing18:49
yvlthat needs to be solved with as little extra css classes as possible18:49
yvlplease keep the vertical rythm18:49
yvlbase is 8 pixels, FYI18:50
yvlsum of all elements should be dividable by 818:50
yvlI'm not sure if I made everything (that is specified now) pixel perfect18:50
th1aFocus on getting rid of CSS.18:50
yvlit's done, th1a18:50
yvlwe're starting from scratch18:50
th1aFocus on selecting the right basic elements.18:51
replaceafillyvl we only have the person form working right now, correct?18:51
yvladd form18:51
yvland edit form18:51
yvland login :D18:51
yvlthey all look extremely crappy18:51
yvlfriggin fieldsets and all18:51
* th1a notes that this might be the moment that we switch from "Persons" to "People"18:52
yvlPeople or Users18:52
th1aStudents aren't really users.18:52
yvlexcellent point18:52
yvlPeople it is18:52
th1aLet's be done now.18:52
th1aAre we done now?18:52
aelkneri will be working on person index.html today18:53
aelknerand that involves the viewlets for personInfo manager18:53
*** jelkner has joined #schooltool18:53
aelkneryvl, did you already create new versions of the viewlets that i can change18:54
th1areplaceafill, I guess you may need to give Chandara some love today, too.18:54
replaceafillth1a great18:54
aelkneri mean, in my brnahc this week (which was R&D branch)18:54
replaceafilli want to get over with that too18:54
aelkneri changed the viewlet templates in the course package, created a new one for advisory18:55
jelknerth1a, do you have a minute, boss?18:55
th1ajelkner, yes.18:55
aelkneryvl, can i do the same in flourish?18:55
aelknerjust go ahead and change existing viewlet templates?18:55
yvlaelkner, they are still bundled in old person.Info manager18:56
yvlso it will most likely be the same18:56
aelkneri don't understand18:56
aelknerbundled in?18:56
yvlthey are same18:56
jelknerasharma has been working diligently, but she has some concerns about the way the screenshots are turning out18:56
yvlshort answer - yes you can18:56
replaceafillaelkner you can take your changes and put it directly into flourish i think18:56
aelknerok, thanks18:57
replaceafill(the viewlet ones)18:57
aelknerok, i'm done18:57
yvl95% that it will work effortlessly ;)18:57
yvlok guys18:57
jelknerth1a, i can have her use gimp to shrink them18:57
yvlgood luck to you18:57
jelknerbut i don't want to waste her time18:57
yvland have fun! ;)18:57
aelkneryvl, thanks!18:57
jelknerso i wanted to check with you first18:57
replaceafillthanks mr lead developer! :P18:57
th1aShe can shrink them.18:58
aelknerjelkner, way to interrupt and meeting!18:58
th1aOr do it programaticly with PIL.18:58
th1aOr something else.18:58
aelknerbut anyway, i think th1a is tired of meeting18:58
jelknersorry aelkner, but i asked nicely 1st ;-)18:58
th1aEither way, yes, shrinking is fine.18:59
th1aCropping, shrinking.19:00
th1aThat is jelkner?19:00
th1aThat it, jelkner?19:00
* th1a goes to lunch.19:01
jelknerth1a, yes sir19:02
* jelkner was showing asharma how to shrink images in gimp19:02
replaceafilljelkner have you seen phatch?19:03
replaceafillin case you're doing batch resizing19:03
jelknermogrify works too19:03
jelkneris it like that?19:03
replaceafilldont know never saw mogrify :)19:03
replaceafillbut probably19:03
jelknerthe problem is, each of these images will need to be sized differently19:04
replaceafillah ok19:04
jelknerso she really needs to look at them and use judgement19:04
jelknernot a process that lends itself to automation19:04
*** dadeng has quit IRC19:42
*** menesis has quit IRC20:06
th1ajelkner:  You can see why I've been writing progressively more complicated automation scripts.20:15
th1areplaceafill:  ayt?21:27
replaceafillth1a yes21:27
replaceafillplaying flourish21:28
th1aI don't think I need to chime in with an email to Chandara at this point as long as you respond today.21:28
th1aOr unless there is something in particular I need to say.21:28
replaceafillah, no, i'll work on that now21:29
replaceafilli was just preparing for the meeting tomorrow21:29
th1aI'm dividing your attention.21:30
th1aBut we need to keep Cambodia going.21:30
replaceafillhonestly, i'd like to focus on flourish today and tomorrow21:30
replaceafillsince i have yvl around21:31
replaceafillbut i'll go back to cambodia, no problem21:31
th1aWell... you need to send an email and tell them what we're going to do.21:32
th1aIf you just want to say you'll work on it tomorrow or Monday, that's fine.21:32
th1aJust don't leave them hanging.21:32
replaceafilli'll better tell him i'll work on that on monday if that's ok then21:33
th1aThat's fine.  Make sure you specify what you're going to do so we know you're both on the same page.21:33
*** jelkner has quit IRC21:37
*** dadeng has joined #schooltool22:02
*** alga has joined #schooltool22:18
*** asharma has quit IRC22:39
*** ignas has joined #schooltool23:13
*** menesis has joined #schooltool23:39
*** dadeng has quit IRC23:42

Generated by 2.15.1 by Marius Gedminas - find it at!