[09:21:54 CST(-0600)] <rickard> "The following error was reported: Problem trying to rename tab"
[09:22:05 CST(-0600)] <rickard> Is there a max length for tab names?
[09:23:00 CST(-0600)] <rickard> I'm asking because "Nationellt intyg (Nationellt LADOK2)" fails, but if I remove one character, it works.
[09:33:32 CST(-0600)] <athena> not to my knowledge
[09:33:38 CST(-0600)] <athena> is there a stack trace?
[09:34:05 CST(-0600)] <EricDalquist> there is a max length, I'd have to check the DB to see what it is
[09:34:32 CST(-0600)] <EricDalquist> it appears to be 35 characters
[09:34:47 CST(-0600)] <rickard> Ok. Any particular reason for that limit?
[09:34:56 CST(-0600)] <EricDalquist> you could easily modify that by increasing the column length for the NAME column of the UP_USER_LAYOUT table
[09:34:59 CST(-0600)] <EricDalquist> not that I know of
[09:35:09 CST(-0600)] <EricDalquist> I'm sure all of those column lengths could be increased
[09:35:47 CST(-0600)] <rickard> UP_USER_LAYOUT doesn't appear to have a NAME column.
[09:36:11 CST(-0600)] <EricDalquist> sorry UP_LAYOUT_STRUCT
[09:36:31 CST(-0600)] <rickard> Got it.
[09:38:23 CST(-0600)] <rickard> Fixed it. Thanks.
[09:38:30 CST(-0600)] <EricDalquist> yup
[09:39:03 CST(-0600)] <rickard> Another quick question. When I use the user locales selector, I have to logout and login again before the change takes effect. Some kind of caching getting in the way perhaps?
[09:39:59 CST(-0600)] <EricDalquist> yeah, that would be my guess
[09:40:07 CST(-0600)] <rickard> It should be noted that the change takes effect on some pages. It appears as if these are pages that I haven't visited for some time.
[09:51:42 CST(-0600)] <rickard> EricDalquist: Should I post a bug about it?
[09:51:52 CST(-0600)] <EricDalquist> yeah that would be great
[09:52:02 CST(-0600)] <EricDalquist> we can't really change it for 3.2 since people already have deployed DBs
[09:52:07 CST(-0600)] <EricDalquist> but we can change it in trunk
[09:52:29 CST(-0600)] <rickard> Ok.
[09:52:39 CST(-0600)] <rickard> But what does that have to do with the DB?
[09:53:04 CST(-0600)] <rickard> Ah, you mean the tab name thing. I'm talking about the cache issue with the user locales selector.
[09:53:16 CST(-0600)] <EricDalquist> oh yeah sorry
[09:53:25 CST(-0600)] <EricDalquist> yeah you can file a bug for that too
[09:53:44 CST(-0600)] <rickard> I'll do some more testing to try to figure out in more detail what the issue is.
[09:55:47 CST(-0600)] <rickard> I have more problems though For some reason, my admin user doesn't get any portlets in the header. Looking at the XML coming out of the theme transformation, header is empty (e.g. <header/>). What could cause that to happen?
[09:56:25 CST(-0600)] <EricDalquist> I'm guessing the results of the theme transformed are cached and the locale must not be part of the cache key
[09:58:20 CST(-0600)] <rickard> I'm not sure this is related to the locale problem. I haven't changed the locale for the admin user. Also, there are no folder with type="header" in the structure transformation.
[09:58:40 CST(-0600)] <rickard> are=is
[10:01:28 CST(-0600)] <EricDalquist> oh sorry I was still on just the locale issue
[10:10:15 CST(-0600)] <EricDalquist> athena: I think I found another bug with applying the gallery patch
[10:10:25 CST(-0600)] <athena> ah what's up?
[10:10:43 CST(-0600)] <EricDalquist> so my post about permissioning people to channels in portlet manager
[10:11:08 CST(-0600)] <athena> you think that's related?
[10:11:17 CST(-0600)] <EricDalquist> the groups-selector uses the entity-search js
[10:11:19 CST(-0600)] <EricDalquist> and jquery
[10:11:40 CST(-0600)] <EricDalquist> the search entities controller in 3.2 looks for a multi-valued parameter named "entityType"
[10:11:49 CST(-0600)] <EricDalquist> but what is being submitted is named "entityType[]"
[10:11:52 CST(-0600)] <athena> ugh
[10:12:00 CST(-0600)] <athena> yes, you're absolutely right
[10:12:07 CST(-0600)] <athena> that's something we fixed in trunk that must have been missed
[10:12:21 CST(-0600)] <EricDalquist> so what is the best way to fix that ... in the controller or in the JS>
[10:13:06 CST(-0600)] <athena> controller
[10:13:18 CST(-0600)] <athena> not sure if there's a good way to fix it in the js or not
[10:13:34 CST(-0600)] <EricDalquist> ok
[10:16:59 CST(-0600)] <EricDalquist> also ... is href="javascript:void();" the best way to have a link do nothing?
[10:17:30 CST(-0600)] <athena> that's certainly one way, and i think it's ok
[10:17:38 CST(-0600)] <athena> we should probably ask someone who's not uis
[12:59:32 CST(-0600)] <rickard> athena: You wrote the SimpeContentPortlet, right? Any plans to add locale support? We'd love to use it, but we need to provide content in both English and Swedish.
[12:59:41 CST(-0600)] <rickard> Simple even
[12:59:57 CST(-0600)] <athena> yes, i've been thinking about that lately
[13:00:10 CST(-0600)] <athena> what kind of support are you envisioning? maybe get to edit the content on a per-locale basis?
[13:00:24 CST(-0600)] <athena> then the content would be rendered according to the user's reported locale?
[13:00:47 CST(-0600)] <athena> we've also been talking about adding some spring el capabilities - insert the user's name in the content, or some other dynamic token
[13:00:54 CST(-0600)] <athena> dunno if that's something that would interest you
[13:03:13 CST(-0600)] <EricDalquist> speaking of simple-cms I just fixed https://issues.jasig.org/browse/CMSPLT-8
[13:03:13 CST(-0600)] <EricDalquist> any objections to me cutting a 0.2 release so we can use the fix locally?
[13:04:45 CST(-0600)] <rickard> athena: As far as localization goes, yes, that's exactly what we would like. When you go to edit the rich configuration, you would be able to edit in any of the enabled locales. And then during rendering, it would pick up on the current users locale and display that.
[13:06:41 CST(-0600)] <rickard> athena: Being able to insert the user's name or something similar would be nice, but I can't say it's a feature we've missed. Localization is much more important for us.
[13:12:42 CST(-0600)] <athena> hi rickard: i'm sorry, i'm on a really epic phone call
[13:13:02 CST(-0600)] <athena> i really appreciate the localization info though - it's good to know what features would be useful
[13:13:08 CST(-0600)] <athena> glad it sounds like we're on the same page
[13:13:52 CST(-0600)] <athena> i'll get that at least on the road map and in JIRA
[13:16:18 CST(-0600)] <rickard> Ok, cool. Any suggestions for a workaround/hack in the meantime?
[13:16:58 CST(-0600)] <athena> creating two different portlets and having DLM fragments that are pushed based on user locale?
[13:17:05 CST(-0600)] <athena> sorry, i know that may not be a great option
[13:17:30 CST(-0600)] <rickard> I didn't know it was possible to push different content depending on locale
[13:17:40 CST(-0600)] <athena> well
[13:17:44 CST(-0600)] <EricDalquist> If you're feeling ambitious I don't imagine it would be that hard to implement.
[13:17:48 CST(-0600)] <athena> you can push different content based on user attributes
[13:17:57 CST(-0600)] <EricDalquist> the PortletRequest object gives you getLocale and getLocales methods
[13:17:59 CST(-0600)] <athena> there aren't any examples of selecting content based on locale, but it shoudl be doable
[13:18:15 CST(-0600)] <athena> EricDalquist: DLM evaluators don't have access to the portlet request, i don't think
[13:18:25 CST(-0600)] <EricDalquist> sorry I'm talking about modifying the simple CMS portlet
[13:18:39 CST(-0600)] <athena> ah gotcha
[13:18:49 CST(-0600)] <EricDalquist> and you would need to modify the portlet to give you the ability to pick locales from a drop-down or somesuch and store the content with the locale
[13:18:52 CST(-0600)] <athena> i think that yeah, we do eventually want to add a feature to send different content in that portlet depending on locale
[13:19:04 CST(-0600)] <athena> i think he was asking for a way to send different content until that change is made
[13:19:18 CST(-0600)] <EricDalquist> ah
[13:19:38 CST(-0600)] <rickard> I was, but modifying the portlet myself is an option
[13:20:07 CST(-0600)] <rickard> Even for a .NET dev like myself
[13:20:27 CST(-0600)] <EricDalquist> looking at the code the DAO currently does "preferences.setValue(CONTENT_KEY, content);"
[13:20:39 CST(-0600)] <EricDalquist> you could modify that to perhaps include the locale as part of the key
[13:20:40 CST(-0600)] <athena> if you do try it out, definitely send us a patch
[13:20:53 CST(-0600)] <rickard> I will.
[13:21:01 CST(-0600)] <EricDalquist> and then instead of getting the content back specificly by key you could get a list of all portlet preference keys and search for the best locale match
[13:21:03 CST(-0600)] <rickard> EricDalquist: Sounds like a plan
[13:21:20 CST(-0600)] <EricDalquist> that should work without a huge modification to the portlet code
[13:23:00 CST(-0600)] <athena> yep
[13:23:24 CST(-0600)] <rickard> And I imagine getting access to org.jasig.portal.i18n.LocaleManager.portal_locales from within the portlet is easy, yes?
[13:23:38 CST(-0600)] <EricDalquist> yeah the PortletRequest object has two methods on it
[13:23:43 CST(-0600)] <EricDalquist> getLocale() and getLocales()
[13:23:53 CST(-0600)] <rickard> Great
[13:24:00 CST(-0600)] <EricDalquist> the first returns the user's preferred locale and the second the full list of locales for the user
[13:25:07 CST(-0600)] <rickard> Typing with a seven month old baby in your lap isn't easy
[13:25:34 CST(-0600)] <EricDalquist> hah I hear you there. I can't be near my laptop with my 8mo old. She just lunges for the keyboard
[13:27:50 CST(-0600)] <EricDalquist> athena: are you ok with me making a 0.2 release of SimpleCMS so that it minimizes correctly?
[13:28:02 CST(-0600)] <athena> yes!
[13:28:04 CST(-0600)] <athena> go for it
[13:28:19 CST(-0600)] <EricDalquist> great, doing that now. Also got the license header stuff all sorted
[13:28:25 CST(-0600)] <athena> our new puppy has repeatedly tried to bite my laptop
[13:28:33 CST(-0600)] <athena> luckily doesn't have opposable thumbs though
[13:28:34 CST(-0600)] <EricDalquist> lol
[13:31:27 CST(-0600)] <rickard>
[13:32:59 CST(-0600)] <rickard> Any good documentation on portlet development?
[13:40:47 CST(-0600)] <ajan> hi, i've just get back to my computer and read the previous discussion and had the same trouble the last day with simple content management portlet
[13:41:32 CST(-0600)] <EricDalquist> rickard: there is some stuff in the 3.2 uPortal manual
[13:41:38 CST(-0600)] <EricDalquist> developer docs is the next area being worked on
[13:42:23 CST(-0600)] <ajan> and I have a similar use-case - I would like to be able to enter separate texts to be shown for any chosen locale (that we support)
[13:44:15 CST(-0600)] <ajan> so I would spend some time in fixing https://issues.jasig.org/browse/CMSPLT-7 but don't know where to look at because I don't have much experience with Spring
[13:46:01 CST(-0600)] <ajan> for now I enter my UTF characters directly in the database and I have separate portlets for separate locales (for the translation of the same content)
[13:58:25 CST(-0600)] <rickard> ajan: Any particular language? I'm inputting Swedish UTF-8 characters and that appears to work.
[13:58:45 CST(-0600)] <rickard> It does seem to convert them into HTML entities though.
[14:05:25 CST(-0600)] <athena> rickard: there's some new documentation on portlet development at https://wiki.jasig.org/display/UPM32/Developing+Portlets
[14:06:11 CST(-0600)] <rickard> athena: Thanks. I just found it.
[14:06:16 CST(-0600)] <athena> terrific
[14:06:27 CST(-0600)] <athena> let us know how helpful it is, and if there are updates you'd like to see
[14:06:29 CST(-0600)] <athena> it's all pretty new
[14:21:39 CST(-0600)] <rickard> athena: Sure. Personally, I would like to see some info on how to setup the development environment. I have eclipse and I've opened the portlet project, but now what? Do I need any imports? How do I run/test/debug? Do I have to build the war and deploy it to uPortal in order to try my code? That kind of info.
[14:22:28 CST(-0600)] <athena> thanks
[14:22:38 CST(-0600)] <athena> i know eric's started some documentation at https://wiki.jasig.org/display/UPM32/Eclipse+Setup
[14:22:41 CST(-0600)] <rickard> I might not be the target audience coming from Visual Studio/.NET, but for someone like me, that kind of info is worth a lot.
[14:22:46 CST(-0600)] <athena> think that eventually might be the kind of thing you're looking for
[14:22:57 CST(-0600)] <athena> and i think probably a lot of people could use that
[14:23:16 CST(-0600)] <athena> deployment info here: https://wiki.jasig.org/display/UPM32/Deploying+Portlets+to+uPortal
[14:23:51 CST(-0600)] <EricDalquist> yeah I got distracted for my docs
[14:24:05 CST(-0600)] <EricDalquist> I'm going to be doing a little screen capture to put up tomorrow on the eclipse setup stuff{color}
[14:24:58 CST(-0600)] <EricDalquist> and it will contain most of the answers you're looking for rickard
[14:25:06 CST(-0600)] <rickard> Sounds great
[14:25:51 CST(-0600)] <rickard> But I don't need to checkout the full uPortal source in order to work on portlets, right?
[14:26:00 CST(-0600)] <EricDalquist> correct
[14:26:11 CST(-0600)] <EricDalquist> just the one portlet
[14:30:00 CST(-0600)] <rickard> Ok. I'll hold off on this until you have time to update the docs.
[14:30:38 CST(-0600)] <rickard> Took me a while to figure out that Eclipse doesn't support jsp out of the box. Apparently, you need a plugin for that.
[14:31:08 CST(-0600)] <EricDalquist> well you have to grab the right version of eclipse
[14:31:44 CST(-0600)] <rickard> Aha. Maybe that's what's wrong.
[14:32:40 CST(-0600)] <EricDalquist> the Eclipse for J2EE developers is what I use and I believe what most folks doing portlet development use
[14:32:54 CST(-0600)] <EricDalquist> since technically the java servlet spec is part of the overall J2EE specification
[14:33:14 CST(-0600)] <rickard> Makes sense. I believe I downloaded "Eclipse Classic".
[15:12:05 CST(-0600)] <ajan> rickard: sorry I was away, regarding your question previously - I'm setting up bilingual portal with EN and MK content (latin and cyrillic)
[15:15:49 CST(-0600)] <ajan> I'm not able to input cyrillic characters ... and the portal is hosted in the same Tomcat instance together with other applications and they do work correctly with cyrillic characters. The portal works correctly with input of cyrillic characters for channel names or tabs, so the problem is not with the OS, or Java or Tomcat, probably not even uPortal itself, the problem is either in the portal handling of portlet input via web forms or the portlet itself
[15:20:05 CST(-0600)] <EricDalquist> athena: do you have any tips for adding another search tab to the tabbed search portlet?
[15:22:30 CST(-0600)] <athena> on the phone for the moment - hang on
[15:22:38 CST(-0600)] <EricDalquist> np
[15:24:14 CST(-0600)] <ajan> EricDalquist: if you are writing docs for setting up Eclipse ... it would be a lot of help to document the whole setup for testing and debugging that you regularly use in developping uPortal, because the way that I currently do it (ant deploy-war and open in browser) is way too slow. It takes me between 10 and 15 minutes to do a clean deploy-war and between 3 and 8 minutes to do a deploy-war and when I'm testing undocumented stuff it is too much
[15:24:53 CST(-0600)] <EricDalquist> will do
[15:25:42 CST(-0600)] <EricDalquist> just for reference that doesn't sound too far off. If I need to test something in a running portal I do: 1. 'ant clean deploy-war' 2. start tomcat via sysdeo plugin 3. test
[15:25:46 CST(-0600)] <ajan> for example yesterday I was trying to understand how often and where are DLM evaluators are called and how often and where are ParameterProcessors called and it took me 6 hours to figure it out
[15:26:00 CST(-0600)] <EricDalquist> 'clean deploy-war' generally only takes me about 50 seconds though
[15:26:54 CST(-0600)] <EricDalquist> there are some little tricks, like I have a bookmark button in my browser for "http://localhost:8080/uPortal/Login?userName=admin&password=admin"
[15:27:07 CST(-0600)] <ajan> well but you probably have a faster development workstation, i do the development on our 2005 Xeon 3.2 server iwth 1GB ram so it really is slow despite the 10000rpm hard disks
[15:27:51 CST(-0600)] <EricDalquist> ah yeah, I do everything on a dell desktop, though it isn't all that beefy
[15:28:04 CST(-0600)] <EricDalquist> core 2 duo from a bout 1.5 years ago with 8GB of ram{color}
[15:28:05 CST(-0600)] <ajan> in 2005 in uPortal 2.5 the whole deploy-ear on that same server took 50 seconds
[15:28:25 CST(-0600)] <EricDalquist> the build is fairly cpu intensive
[15:28:55 CST(-0600)] <EricDalquist> some of our older deployed hardware takes ~ 5 minutes to do a deploy-war
[15:29:05 CST(-0600)] <ajan> now it seems that maven (or ant) unnecessarily does too many things to only change one single Java class (3 minutes)
[15:29:06 CST(-0600)] <EricDalquist> but we only update those once everything is set
[15:30:03 CST(-0600)] <EricDalquist> yeah, that is a big down-side of maven
[15:30:16 CST(-0600)] <EricDalquist> it generally essentially does a full build of the artifact
[15:30:35 CST(-0600)] <EricDalquist> uPortal in trunk is a bit better because we've finally been able to merge uportal-impl and uportal-war
[15:30:46 CST(-0600)] <EricDalquist> so doing minor mods and redeploying should be faster there
[15:30:53 CST(-0600)] <ajan> is there a way to setup eclipse to only compile the changed class and restart tomcat? that would be much faster
[15:31:48 CST(-0600)] <ajan> well but you've mentioned trunk is not stable enough - i had so many issues with it
[15:32:55 CST(-0600)] <EricDalquist> yeah, sorry I just bring up trunk as a "we're working on it!"
[15:33:02 CST(-0600)] <EricDalquist> I think the sysdeo plugin can do that
[15:33:13 CST(-0600)] <EricDalquist> but I've never really played with the hot-code replacement features
[15:34:19 CST(-0600)] <ajan> for our student information system we are developing based on recent Tapestry and it is a blessing to be able to just change a class file and it will use the new one by itself, for services, for DAO, for everything
[15:43:46 CST(-0600)] <ajan> athena or EricDalquist: I have another question... I have input some processing in the structure XSL transform - in columns.xsl, that drops a tab from the layout based on the locale, but for the guest instance it only seem to works if I disable caching alltogether... and it is not very consistent amoung concurrent users, seems like the locale is shared between concurrent guest users
[15:46:06 CST(-0600)] <EricDalquist> the guest user has a bunch of special treatement
[15:46:16 CST(-0600)] <EricDalquist> that unfortunatly results in there essentially being one guest user
[15:46:22 CST(-0600)] <EricDalquist> that is cached and shared among all guests
[15:46:31 CST(-0600)] <EricDalquist> so doing things like locale selection for guests doesn't work
[16:01:19 CST(-0600)] <ajan> Ericdalquist: is the behaviour something that could be changed (for my local instance) for the guest not to be treated specially but the same as any other user, I don't know maybe there is somewhere some "if" structure that should be circumvented, because I have several ideas and use-cases to implement that are based on different layouts for different types of users - before they are authenticated. Like in the Weak Authentication that APetro has described few y
[16:02:21 CST(-0600)] <EricDalquist> not easily for the guest user but I don't know much about the weak auth stuff
[16:02:31 CST(-0600)] <EricDalquist> it would be good to ask on the up-user list
[16:02:40 CST(-0600)] <ajan> i would like to serve one fragment for one IP subnet, another fragment for another one, english as default for users coming from abroad and macedonian for inside domains
[16:03:42 CST(-0600)] <ajan> after my investigations it seems this is not at all possible with DLM evaluators, nor ParameterProcessors (and they seemed relevant) because they are not even invoked for the Guest
[16:04:10 CST(-0600)] <EricDalquist> I'd look at setting user attributes using the IP as an attribute
[16:04:17 CST(-0600)] <EricDalquist> you can then use PAGS to define groups for those IPs
[16:04:32 CST(-0600)] <EricDalquist> and then use the normal DLM config logic to permission fragments
[16:05:08 CST(-0600)] <ajan> well i tried yesterday to inject the IP and locale in the constructor of the GuestUserInstance from the request as an attribute of IPerson and it works most of the times
[16:05:25 CST(-0600)] <ajan> but the IParameterProcessor and dlm Evaluator do not even happen for Guest
[16:05:33 CST(-0600)] <EricDalquist> sorry to be more specific create a custom IPersonAttributeDao
[16:06:25 CST(-0600)] <EricDalquist> so using https://wiki.jasig.org/display/UPM32/Shibboleth as a basis
[16:07:06 CST(-0600)] <EricDalquist> about 1/2 way down there is an example config for the request filter and the person attribute config to get request headers setup as user attributes
[16:07:30 CST(-0600)] <EricDalquist> you could likely make a minor tweak to RequestAttributeSourceFilter to also expose the remote IP
[16:07:46 CST(-0600)] <ajan> aha
[16:07:49 CST(-0600)] <EricDalquist> actually the support is already there ...
[16:07:53 CST(-0600)] <EricDalquist> http://developer.jasig.org/projects/person-directory/1.5.0-SNAPSHOT/apidocs/org/jasig/services/persondir/support/web/RequestAttributeSourceFilter.html
[16:08:15 CST(-0600)] <ajan> ok, but then how do i use the remote IP in the dlm config?
[16:08:22 CST(-0600)] <EricDalquist> set the remoteAddrAttribute property to a value such as "remoteAddr" and then your users will all have a remoteAddr attribute
[16:08:40 CST(-0600)] <EricDalquist> the next step would be to go into the PAGS config and use something like the regex matcher to create a few groups
[16:08:45 CST(-0600)] <EricDalquist> based on the various IPs
[16:09:07 CST(-0600)] <EricDalquist> then you simply configure the DLM fragments in dlm.xml for those groups like you would do any other DLM fragment config
[16:09:14 CST(-0600)] <EricDalquist> no need for any custom code
[16:09:32 CST(-0600)] <ajan> yes but I'm almost confident that for Guest DLM evaluation happens only once for the first guest
[16:09:41 CST(-0600)] <EricDalquist> right
[16:09:46 CST(-0600)] <EricDalquist> so this doesn't solve the guest issues
[16:09:59 CST(-0600)] <EricDalquist> for that ... email up-user and see if anyone has any ideas
[16:10:10 CST(-0600)] <EricDalquist> because fixing the special caching for guest is non-trivial
[16:10:45 CST(-0600)] <ajan> I just wondered if there is something to be done not to treat guests as special at all, disable caching and everything
[16:11:04 CST(-0600)] <EricDalquist> no, not easily
[16:11:18 CST(-0600)] <ajan> is the problem just with caching or with many other things?
[16:11:18 CST(-0600)] <EricDalquist> and not that would perform for anything more than a handful of users
[16:11:39 CST(-0600)] <EricDalquist> it is more than just caching
[16:12:14 CST(-0600)] <ajan> OK, than it's probably too big for me to try
[16:12:25 CST(-0600)] <EricDalquist> yeah
[16:12:41 CST(-0600)] <EricDalquist> we have a completely re-written rendering pipline in trunk and we still have more work to do to fix it
[16:13:14 CST(-0600)] <ajan> it might be actually easier to try modify CAS to simulate virtual users and user groups and everyone to be logged in without even knowing
[16:13:31 CST(-0600)] <ajan> but it is a plan for the future?
[16:14:09 CST(-0600)] <EricDalquist> yes, the hope is that when 3.3 comes out guest users will be handled better
[16:14:18 CST(-0600)] <EricDalquist> with less shared between users
[16:15:59 CST(-0600)] <ajan> ok I ask this because I have one case our institution portal, and another case as part of my phd of a portal for information management that should be more adaptive and uPortal seemed as a good starting point for some cases i have in mind
Page Comparison
General
Content
Integrations