#silverstripe IRC Log

IRC log for 28 February 2013

All timestamps are in UTC.

1: [00:00:00] * liam_ has joined #silverstripe
2: [00:00:00] * liam_ is now known as Guest61738
3: [00:12:00] * guci0 quit (Ping timeout: 245 seconds)
4: [00:13:00] * Guest61738 quit (Quit: Guest61738)
5: [00:14:00] * SightUnseen has joined #silverstripe
6: [00:15:00] * chillu quit (Quit: chillu)
7: [00:19:00] * SightUnseen quit (Ping timeout: 276 seconds)
8: [00:25:00] * SightUnseen has joined #silverstripe
9: [00:30:00] * SightUnseen has left #silverstripe
10: [00:33:00] * Bollig|DesignCty quit (Read error: Connection reset by peer)
11: [00:33:00] * joelpittet has joined #silverstripe
12: [00:38:00] * Bollig|DesignCty has joined #silverstripe
13: [00:51:00] * aznain has joined #silverstripe
14: [00:53:00] <aznain> In SS 2.4, How to use "IN" clause while using DataObject::get() ?
15: [00:55:00] <Pyromanik> put it in the $filter parameter
16: [01:01:00] * SightUnseen has joined #silverstripe
17: [01:02:00] * liam_ has joined #silverstripe
18: [01:02:00] * liam_ is now known as Guest9164
19: [01:04:00] <Bollig|DesignCty> aznain: http://doc.silverstripe.org/framework/en/2.4/topics/datamodel
20: [01:04:00] * SightUnseen has left #silverstripe
21: [01:08:00] * LoveDuckie quit (Ping timeout: 264 seconds)
22: [01:15:00] * Guest19425 quit (Quit: Page closed)
23: [01:20:00] <aznain> Pyromanik Bollig|DesignCty: Thanks ....
24: [01:23:00] * Guest9164 quit (Quit: Guest9164)
25: [01:24:00] <Pyromanik> :)
26: [01:30:00] * SightUnseen1 has left #silverstripe
27: [01:30:00] * SightUnseen1 has joined #silverstripe
28: [01:35:00] <FrozenFire> I could've sworn that SS has a not modifier for conditionals now
29: [01:35:00] <FrozenFire> Derp.
30: [01:35:00] <FrozenFire> Oh wait. It does.
31: [01:36:00] <FrozenFire> I was doing <% if not First %>...<% end_if %><% if not Last %>...<% end_if %> for directional navigation in a certain format
32: [01:36:00] <FrozenFire> Forgetting that I only had one item in the loop right now
33: [01:36:00] <FrozenFire> :P
34: [01:43:00] * priithansen quit (Quit: priithansen)
35: [01:52:00] <FrozenFire> Can you get the next item when iterating a list?
36: [01:58:00] <Pyromanik> not that I know of
37: [01:58:00] <Colin[pi]> does it have ArrayAccess?
38: [01:59:00] <Pyromanik> DesignerX: yes.
39: [01:59:00] <FrozenFire> Presumably, but this is in a template
40: [01:59:00] <DesignerX> Hi, anyone uses Padding instead of margin to avoid some clearing bugs/problems ?
41: [01:59:00] <Colin[pi]> ahh
42: [01:59:00] <Colin[pi]> well no
43: [01:59:00] <FrozenFire> I won't use crazy logic if I don't need to
44: [01:59:00] <FrozenFire> Was just hoping to do a link that uses a URL fragment of the next item
45: [02:00:00] <Pyromanik> fffffff firefox draws outlides OUTSIDE the box-shadow
46: [02:00:00] * Pyromanik sighs
47: [02:00:00] <Pyromanik> that seems kinda derp.
48: [02:00:00] <Pyromanik> outline*
49: [02:00:00] <Pyromanik> of course.
50: [02:00:00] <Colin[pi]> DesignerX: I use it sometimes for that, but now I use CSS :after { content: " " } rules
51: [02:00:00] <Colin[pi]> firefox is kinda derp, but I still use it for my main browser
52: [02:01:00] <DesignerX> Colin[pi]: I tried that, sometimes it doesnt work & most solutions require inline-block which works agains the layout I use. OS moved to Classname-Wrapper + padding .. just wanted to be sure im not the only one :)
53: [02:02:00] <Colin[pi]> really? I base my templates on Skeleton now and I've never had a prob with that method
54: [02:03:00] <Colin[pi]> try and see :D
55: [02:03:00] <DesignerX> so the parent Does Not expand to contain all child elemnts+margin \
56: [02:03:00] <Colin[pi]> not sure
57: [02:03:00] <DesignerX> Colin[pi]: Does that fix the margin of a child element jumping out of the parent elemnt
58: [02:04:00] <Colin[pi]> but the CSS way has been working well
59: [02:04:00] <DesignerX> :) good idea
60: [02:04:00] <Colin[pi]> otherwise I typically use <div class="clear"></div> etc.
61: [02:08:00] * liam_ has joined #silverstripe
62: [02:09:00] * liam_ is now known as Guest2231
63: [02:39:00] <spronk> RED BULL
64: [02:39:00] <spronk> YES
65: [02:39:00] <spronk> CAFFEINE
66: [02:42:00] * MichaelDesignerX has joined #silverstripe
67: [02:44:00] * DesignerX quit (Ping timeout: 264 seconds)
68: [02:45:00] * ss23 lifts every day
69: [02:45:00] <ss23> willr: Like ss23? ss23 strong
70: [02:45:00] * willr needs something stronger.
71: [02:46:00] <willr> ss23 something not someone.
72: [02:46:00] <ss23> Are you trying to say I'm not a thing? :<
73: [02:46:00] <willr> Preferably alcoholic as well.
74: [02:47:00] <ss23> lol
75: [02:47:00] * DesignerX has joined #silverstripe
76: [02:47:00] <ss23> well, at least I guess that means you don't thikn I'm alcoholic!
77: [02:49:00] * MichaelDesignerX quit (Ping timeout: 276 seconds)
78: [02:49:00] <willr> You can type does not prove anything.
79: [02:49:00] <willr> Well can't pass judgement on that through IRC
80: [02:50:00] <ss23> lol
81: [02:50:00] * MichaelDesignerX has joined #silverstripe
82: [02:50:00] <ss23> It makes me nervous that the IT people here snoop on us students :<
83: [02:51:00] <ss23> lol willr
84: [02:51:00] <willr> But thats the best part of my job. Seeing what crappy music people listen to on spotify.
85: [02:51:00] <ss23> PEOPLE SEEING MY OUTGOING SSH CONNECTIONS
86: [02:51:00] <ss23> BUT IT MAKES ME NERVOUS
87: [02:51:00] <ss23> Guy came in to restart some boxes, and was like "Yeah, just some rogue SSH connections" and I'm like "Oh I'm SSHing out" and he's like "Yeah, .geek or something? We saw and figured it was legit, so dw"
88: [02:51:00] <ss23> Since it's a catchall, I should just ssh to omg-please-stop-looking-at-this.ss23.geek.nz
89: [02:52:00] * DesignerX quit (Ping timeout: 272 seconds)
90: [02:53:00] <Guest2231> anyone here used simon_w's oauth module?
91: [02:54:00] <ss23> Nope, but given simon_w made it, it's probably not too bad
92: [02:54:00] <ss23> In australia!
93: [02:54:00] <willr> with his girl
94: [02:54:00] <ss23> howardgrigg: Holiday!
95: [02:54:00] <willr> howardgrigg he's in your part of the world
96: [02:54:00] <howardgrigg> where is simon_w anyway? seems odd to not have him in here
97: [02:54:00] <ss23> Yeah
98: [02:55:00] <ss23> willr: If it makes you feel better though, I can add you on twitter, so I can "stalk" you too :P
99: [02:55:00] <ss23> They've been posting cute pics on Twitter
100: [02:55:00] <ss23> :3
101: [02:55:00] <howardgrigg> oh nice
102: [02:55:00] <willr> ss23 stalk much?
103: [02:55:00] <ss23> 10:26:46 < ss23> wow, simon_w is such a cutie - https://twitter.com/larksie/status/306669105338007552/photo/1
104: [02:55:00] <ss23> 10:26:53 < ss23> also there is a girl with him, that helps too
105: [02:55:00] <ss23> willr: I have him on twitter, not much of a stalker :P
106: [02:57:00] <willr> ss23 I only post cute pics on Facebook..
107: [02:57:00] <ss23> willr: I bet all your pictures are cute <3
108: [02:58:00] * willr shivers.
109: [02:58:00] <ss23> XD
110: [03:01:00] <ss23> hahah willr
111: [03:01:00] <Colin[pi]> yep he's in my neck of the woods
112: [03:01:00] <Colin[pi]> I still indeed on buying a sprite for him
113: [03:01:00] <willr> This simon_w having a girl is not optimal for the delivery of open source software. I disapprove.
114: [03:01:00] <ss23> True that
115: [03:02:00] <Colin[pi]> hehe
116: [03:02:00] <ss23> But just think, if he plays his cards right, he could convert her, and then we would have two _w's to make software for us ;)
117: [03:03:00] <nimeso> HAHA I just want simon to tell me how to get his new OAuth Server working :)
118: [03:14:00] * DesignerX has joined #silverstripe
119: [03:16:00] * newbie|3 has joined #silverstripe
120: [03:17:00] * MichaelDesignerX quit (Ping timeout: 272 seconds)
121: [03:18:00] * DesignerX quit (Ping timeout: 240 seconds)
122: [03:20:00] <Guest2231> anyone know of any oauth clients c# or php that will work with his oauth server
123: [03:20:00] <Guest2231> and btw the code does look good but there is not docs apart from a blog post...
124: [03:20:00] <Guest2231> nimeso: yes me to
125: [03:22:00] <spronk> https://github.com/mitraman/OAuthTestClient
126: [03:22:00] <spronk> this should work.
127: [03:24:00] <spronk> haha
128: [03:24:00] <nimeso> You are a god spronk
129: [03:24:00] <spronk> i'm having a bit of a play with it now
130: [03:28:00] <Guest2231> spronk: did you compile it yourself or use the compiled binary?
131: [03:29:00] * DesignerX has joined #silverstripe
132: [03:30:00] <spronk> but i'll probably try the bin first
133: [03:30:00] <spronk> i haven't actually tested it yet
134: [03:32:00] * newbie|3 quit (Ping timeout: 260 seconds)
135: [03:33:00] <Guest2231> ok tried it but doesnt work??? so might try compiling.
136: [03:33:00] <spronk> hmm
137: [03:34:00] <spronk> also, screw ubuntu 10.04 and it's ridiculously old php version
138: [03:35:00] * MichaelDesignerX has joined #silverstripe
139: [03:37:00] * Colin[pi] quit (Ping timeout: 276 seconds)
140: [03:38:00] * DesignerX quit (Ping timeout: 248 seconds)
141: [03:39:00] <Guest2231> ?
142: [03:39:00] <Guest2231> nimeso: hey did you get the oauthtestclient to work>
143: [03:39:00] * DesignerX has joined #silverstripe
144: [03:41:00] * perverse quit (Quit: leaving)
145: [03:42:00] * MichaelDesignerX quit (Ping timeout: 246 seconds)
146: [03:44:00] * priithansen has joined #silverstripe
147: [03:50:00] * vikaspaeashar has joined #silverstripe
148: [03:51:00] * vikaspaeashar quit (Client Quit)
149: [03:51:00] * mobiusnz quit (Quit: Leaving.)
150: [03:53:00] * mirrors has joined #silverstripe
151: [03:53:00] <mirrors> hey silverstripe guys
152: [03:53:00] <mirrors> i am having problem with bots hitting randoms urls
153: [03:53:00] <mirrors> e.g. http://mysite.com.au/home/data/usr
154: [03:54:00] <mirrors> when they go here i am sent the following error Error: Uncaught Exception: Object->__call(): the method 'getviewer' does not exist on 'HomePage'
155: [03:54:00] <Bollig|DesignCty> mirrors: you need to hunt them down like Liam Neeson would.
156: [03:54:00] <mirrors> haha
157: [03:55:00] * MichaelDesignerX has joined #silverstripe
158: [03:55:00] <spronk> Guest2231: I found a PHP-based oauth2 test client that seems to work ok - https://github.com/segersjens/OAuth-2-test-tool
159: [03:57:00] <MichaelDesignerX> is there a TreeDropdown menu for SS3 ?
160: [03:57:00] * DesignerX quit (Ping timeout: 248 seconds)
161: [03:58:00] <howardgrigg> MichaelDesignerX: http://api.silverstripe.org/3.0/class-TreeDropdownField.html
162: [03:58:00] <spronk> pretty sure it's treedropdownfield
163: [03:59:00] * DesignerX has joined #silverstripe
164: [03:59:00] <Guest2231> spronk: cheers I will check it out.
165: [04:02:00] * MichaelDesignerX quit (Ping timeout: 272 seconds)
166: [04:02:00] * newbie has joined #silverstripe
167: [04:03:00] * newbie is now known as Guest53995
168: [04:03:00] <spronk> Guest2231: I do get bugs though with the pop controller
169: [04:04:00] <mirrors> has any had to deal with this before...I am not sure of what I need to do
170: [04:05:00] * Err404NotFound quit (Quit: User guilty of hitting the Big Red X...)
171: [04:05:00] * DesignerX quit (Ping timeout: 255 seconds)
172: [04:05:00] <spronk> mirrors: if its just bots i probably wouldn't worry about it?
173: [04:05:00] * Zauberfisch quit (Ping timeout: 246 seconds)
174: [04:05:00] * nickmolhoek quit (Quit: nickmolhoek)
175: [04:07:00] * Guest53995 quit (Ping timeout: 252 seconds)
176: [04:07:00] <Guest2231> the ss oauth only gives the id?
177: [04:07:00] <Guest2231> spronk: I am trying out the php test client. What do I put in the secret field?
178: [04:08:00] <spronk> anything
179: [04:08:00] <spronk> i don't know that the oauth module uses it
180: [04:11:00] * Zauberfisch has joined #silverstripe
181: [04:15:00] <Guest2231> i think its ss 3.1
182: [04:15:00] <Guest2231> spronk: do you know what version the oauth module requires?
183: [04:15:00] <spronk> what version?
184: [04:15:00] <spronk> of ss?
185: [04:15:00] * cloph_away has joined #silverstripe
186: [04:15:00] <Guest2231> spronk: sorry of php
187: [04:15:00] <spronk> well
188: [04:15:00] <spronk> i have ss3.0 i think
189: [04:15:00] <spronk> oauth mod works with 5.3
190: [04:16:00] <Guest2231> spronk: but its giving me this error when I try to authorise http://sspaste.com/paste/show/512eda27563e0
191: [04:16:00] <spronk> if you're using apache module - if you're using a CGI-based you'll probably need 5.4
192: [04:16:00] <Guest2231> spronk: ok
193: [04:16:00] <Guest2231> spronk: ok im using apache
194: [04:16:00] <spronk> yeah
195: [04:16:00] <spronk> so far i've worked out that it seems to have issues with Page controllers, as opposed to just Controllers
196: [04:16:00] * cloph_away1 quit (Ping timeout: 252 seconds)
197: [04:17:00] <spronk> Guest2231: can you paste your controller code etc?
198: [04:18:00] <Guest2231> spronk: thats not my code it is the /oauth/authorise controller...
199: [04:19:00] <spronk> what's the actual error above that
200: [04:19:00] <Guest2231> [Notice] Undefined property: oauth\controller\Controller::$template
201: [04:20:00] <spronk> SELECT DISTINCT "oauth\model\Scope"."ID"
202: [04:20:00] <spronk> INNER JOIN "oauth\\model\\AuthCode_Scopes" ON "oauth\model\AuthCode_Scopes"."oauth\model\ScopeID" = "oauth\model\Scope"."ID"
203: [04:20:00] <spronk> WHERE ("oauth\model\AuthCode_Scopes"."oauth\model\AuthCodeID" = '3')
204: [04:20:00] <spronk> le sigh.
205: [04:20:00] <spronk> Guest2231: hmm... haven't seen that one
206: [04:20:00] <spronk> how have you set up the controller's require?
207: [04:20:00] <spronk> FROM "oauth\model\Scope"
208: [04:20:00] <spronk> like require extension
209: [04:20:00] <spronk> Couldn't run query:
210: [04:26:00] <mirrors> spronk: yeah the only problem is i have turned on emails for real errors
211: [04:27:00] <spronk> hmm
212: [04:27:00] <spronk> Guest2231: ok, i'm now getting the same problem
213: [04:27:00] <mirrors> and this is just spamming email account no
214: [04:29:00] * Colin[pi] has joined #silverstripe
215: [04:30:00] <Guest2231> spronk: ok??? That is good to know.
216: [04:33:00] <Guest2231> spronk: any ideas why he put back slashes in the table names?
217: [04:33:00] * mobiusnz has joined #silverstripe
218: [04:34:00] * DigNZ quit (Quit: DigNZ)
219: [04:38:00] * Error404NotFound has joined #silverstripe
220: [04:38:00] * SightUnseen has joined #silverstripe
221: [04:38:00] * SightUnseen has left #silverstripe
222: [04:44:00] <Guest2231> spronk: any ideas how to fix? it seems that it is breaking because it is adding two back slashes in oauth\\model\\AuthCode_Scopes
223: [04:47:00] <Guest2231> I see why the scopes are used now??? it is namespaces
224: [04:47:00] <Guest2231> i mean backslashes*
225: [04:51:00] <spronk> also looking into the $template issue
226: [04:51:00] <spronk> yeah
227: [04:51:00] <spronk> the backslashes are causing issues
228: [04:51:00] <spronk> not sure why they are getting added, trying to figure that out
229: [04:52:00] <spronk> can't figure out why it wouldn't find it - it's clearly in the oauth\controller\Controller class
230: [04:54:00] <spronk> it could be an ss3.1 bug i guess, because a downgrade to ss3.0 doesn't have the same issue
231: [04:54:00] <spronk> ..but ss3.0 has a bunch of other sisues
232: [04:55:00] <Guest2231> spronk: ??? yea. Rekon it would be hard to take out all of the namespaces in the module?
233: [04:55:00] <spronk> probably :P
234: [04:59:00] <spronk> i'm hooking upa debugger to see if i can figure it otu
235: [04:59:00] * sonet has joined #silverstripe
236: [05:00:00] * sonet has left #silverstripe
237: [05:01:00] * sonet has joined #silverstripe
238: [05:01:00] * sonet has left #silverstripe
239: [05:03:00] * willr quit (Quit: willr)
240: [05:07:00] * Guest2231 quit (Quit: Guest2231)
241: [05:08:00] <spronk> i think it might be a namespace issue...
242: [05:08:00] <spronk> might have to clone git repo for latest..
243: [05:08:00] <spronk> i'm guessing simon_w has it working ons omething newer than 3.1b2
244: [05:11:00] * SightUnseen1 has joined #silverstripe
245: [05:11:00] * SightUnseen1 has left #silverstripe
246: [05:13:00] * Colin[pi] quit (Ping timeout: 256 seconds)
247: [05:15:00] * ajshort quit (Quit: Leaving)
248: [05:19:00] * ajshort has joined #silverstripe
249: [05:22:00] * mobiusnz quit (Quit: Leaving.)
250: [05:30:00] * mirrors quit (Quit: Page closed)
251: [05:42:00] <spronk> yeah there's something fishy about this
252: [05:42:00] <spronk> i don't know that the $Action is passing through to the controller properly
253: [05:49:00] <nimeso> aaargh! I've just gotta feed kids spronk then I'll try my best to help... I gotta sort this out, driving me nutz
254: [05:58:00] * SightUnseen has joined #silverstripe
255: [06:00:00] * SightUnseen quit (Client Quit)
256: [06:17:00] * joelpittet quit (Remote host closed the connection)
257: [06:37:00] <spronk> something broken with the code
258: [06:37:00] <spronk> ugh
259: [06:37:00] <spronk> its fucked
260: [06:37:00] * mobiusnz has joined #silverstripe
261: [06:38:00] * guci0 has joined #silverstripe
262: [06:48:00] * SightUnseen has joined #silverstripe
263: [06:48:00] * SightUnseen has left #silverstripe
264: [06:57:00] <spronk> sminnee: are you able to check something - 3.1 branch, RequestHandler line 166 - $request->latestParam - is this a bug and shoulda ctually be $request->param() ? latestParam seems to turn out NULL quite often..
265: [06:58:00] <spronk> nimeso: OK - use 3.1, use a Controller that doesn't inherit from Page_Controller for your oauth controller, change RequestHandler:166 from $request->latestParam to $request->param, and all should work fine
266: [06:58:00] <spronk> in other words, this is pretty... experimental software atm.
267: [07:16:00] * joelpittet has joined #silverstripe
268: [07:35:00] <nimeso> riding on the edge spronk! bring it on!
269: [07:37:00] * Shrike_Finland quit (Quit: Leaving.)
270: [07:47:00] <nimeso> hmmm my 3.1 RequestHandler:166 does not have $request->latestParam
271: [07:54:00] * liam__ has joined #silverstripe
272: [07:56:00] <nimeso> nope... i lie... must only have 3 installed
273: [07:59:00] * aznain quit (Ping timeout: 245 seconds)
274: [08:00:00] * [1]Pyromanik has joined #silverstripe
275: [08:00:00] * [1]Pyromanik is now known as Pyromaniik
276: [08:01:00] * SightUnseen has joined #silverstripe
277: [08:02:00] * liam__ quit (Quit: liam__)
278: [08:02:00] * Shrike_Finland has joined #silverstripe
279: [08:02:00] * liam__ has joined #silverstripe
280: [08:03:00] <liam__> spronk: hey how did you get on with the oauth module>
281: [08:03:00] <liam__> ?
282: [08:03:00] * SightUnseen quit (Client Quit)
283: [08:05:00] * ARNHOE has joined #silverstripe
284: [08:10:00] * liam__ quit (Quit: liam__)
285: [08:11:00] <nimeso> liam... getting there. Looks like spronks fixes on the right path
286: [08:18:00] * ARNHOE quit (Remote host closed the connection)
287: [08:22:00] * SightUnseen has joined #silverstripe
288: [08:24:00] * SightUnseen quit (Client Quit)
289: [08:26:00] * chillu has joined #silverstripe
290: [08:27:00] * zfmf has joined #silverstripe
291: [08:29:00] * SightUnseen has joined #silverstripe
292: [08:30:00] <ajshort> sminnee: question re ManyManyList#removeAll
293: [08:30:00] <ajshort> is there a reason this can't be implemented using a simple DB::query remove all from join table where parent ID = $id?
294: [08:31:00] <ajshort> the question i ask is that when extra filters are added to the underlying data query, the removeAll method breaks
295: [08:31:00] <ajshort> actually it does need to be implemented that way i guess so filtering works :)
296: [08:31:00] * SightUnseen quit (Client Quit)
297: [08:32:00] <ajshort> but changing the table the query selects things from breaks if you're using more than the most basic filter
298: [08:38:00] <Pyromaniik> manifest chooses one?
299: [08:38:00] <Pyromaniik> but not conflict?
300: [08:38:00] <Pyromaniik> ajshort, how is it possible to have the same class in 2 files
301: [08:39:00] <Pyromaniik> at all
302: [08:39:00] <ajshort> Pyromaniik: the manifest builder should throw an error
303: [08:39:00] <ajshort> why do you need two classes?
304: [08:39:00] <Pyromaniik> I don't, but I have.
305: [08:39:00] <Pyromaniik> I'm reaaaaaally confused as to how it's possible
306: [08:39:00] <ajshort> why?
307: [08:39:00] <ajshort> if you only include one of the two files, only one definition will be parsed
308: [08:39:00] <Pyromaniik> because I just wasted a bunch of time editing the one that wasn't being used
309: [08:40:00] <Pyromaniik> yeah, but they're both just sitting in mysite/code
310: [08:40:00] <Pyromaniik> page definitions
311: [08:40:00] <ajshort> I think there might be a bug where manifest builder doesn't throw errors when it finds duplicates
312: [08:40:00] <Pyromaniik> it's opting for the file named the same as the class over the one that is an exact copy, but the filename doesn't match the pagename
313: [08:40:00] <ajshort> ok
314: [08:41:00] <ajshort> just looking at the class manifest stuff, it should throw an error
315: [08:41:00] <Pyromaniik> caring*
316: [08:41:00] <Pyromaniik> 3.0 seems to be skipping over not even carign
317: [08:41:00] <ajshort> if it's not it might be a bug, or your manifest might not be flushed
318: [08:41:00] <Pyromaniik> 2.4 would throw a big "duplicate class" error from within PHP
319: [08:42:00] <ajshort> i seem to remember something like that
320: [08:42:00] <ajshort> yeah i think it's a bug
321: [08:43:00] <Pyromaniik> mm, this install is 3.0.3? actually I'm not sure. Not 3.1 at least
322: [08:45:00] * guci0 quit (Ping timeout: 245 seconds)
323: [08:57:00] * SightUnseen has joined #silverstripe
324: [08:58:00] * Colin[pi] has joined #silverstripe
325: [08:58:00] <Pyromaniik> is there an easy way to set form errors (I mean not directly writing to Session::set) before redirectBack?
326: [08:58:00] <Pyromaniik> (manually)? ?
327: [08:58:00] * spronk2 has joined #silverstripe
328: [08:58:00] <Pyromaniik> or otherwise verifying that an EmailField doesn't contain an existing member's email?
329: [09:00:00] <spronk2> o_O
330: [09:01:00] * DigNZ has joined #silverstripe
331: [09:02:00] * kinglozzer has joined #silverstripe
332: [09:03:00] <Pyromaniik> I am double i-k
333: [09:03:00] <Pyromaniik> because I'm awesome and a spy.
334: [09:03:00] <Pyromaniik> minus the spy bit.
335: [09:03:00] <Pyromaniik> I can't tell people that, because I'm not Archer.
336: [09:03:00] <Pyromaniik> get it?
337: [09:03:00] <Pyromaniik> like double oh 7
338: [09:03:00] <Pyromaniik> spronk2, getting in on the doubles action too eh?
339: [09:03:00] * SightUnseen has left #silverstripe
340: [09:04:00] * joelpittet quit (Remote host closed the connection)
341: [09:04:00] * zfmf quit (Ping timeout: 272 seconds)
342: [09:04:00] * DigNZ quit (Client Quit)
343: [09:04:00] * Zauberfisch quit (Ping timeout: 246 seconds)
344: [09:04:00] * dendeffe has joined #silverstripe
345: [09:06:00] * Zauberfisch has joined #silverstripe
346: [09:07:00] * chillu quit (Quit: chillu)
347: [09:12:00] * zfmf has joined #silverstripe
348: [09:13:00] <spronk2> tmux, actually
349: [09:13:00] <spronk2> need to set up a few more plugins
350: [09:13:00] <spronk2> yeah...
351: [09:13:00] <spronk2> set up this irssi instance in screen on my server
352: [09:14:00] <spronk2> pageup
353: [09:14:00] <Pyromaniik> I tried the usual methods and failed miserabley
354: [09:14:00] <Pyromaniik> irssi no scrollback without screen :<
355: [09:14:00] <spronk2> eh?
356: [09:14:00] <Pyromaniik> can you readup on irssi?
357: [09:14:00] <spronk2> yes
358: [09:15:00] <Pyromaniik> ss23, is what I was thinking
359: [09:15:00] <Pyromaniik> gawd
360: [09:15:00] <Pyromaniik> oh
361: [09:15:00] <Pyromaniik> :<
362: [09:15:00] <Pyromaniik> epic failure
363: [09:15:00] <spronk2> also, spronk2 is kinda lame
364: [09:15:00] <spronk2> but hey
365: [09:15:00] * Pyromaniik shift-pgup
366: [09:15:00] <ss23> hahaha Pyromaniik
367: [09:15:00] <ss23> Can you scroll up on irssi :P
368: [09:15:00] <ss23> I don't think an IRC client would be very good if it had no scrollback!
369: [09:15:00] <Pyromaniik> tried like normal console styles
370: [09:15:00] <Pyromaniik> ss23, still better than you, Y U NO FILESTREAM/
371: [09:15:00] <spronk2> lull
372: [09:16:00] <ss23> ;_;
373: [09:16:00] <Pyromaniik> "my file won't read"
374: [09:16:00] <ss23> Better than me?!
375: [09:16:00] <Pyromaniik> hmm
376: [09:16:00] * Pyromaniik was waiting for spronk to say that
377: [09:16:00] <ss23> wat
378: [09:16:00] <ss23> ;_;
379: [09:16:00] <Pyromaniik> lulz
380: [09:16:00] <Pyromaniik> you and your attempt at C++
381: [09:16:00] <Pyromaniik> basically ignored the entire ++ bit
382: [09:16:00] <ss23> oh
383: [09:16:00] <spronk2> the ++ bit is gay!
384: [09:16:00] <ss23> I can't remember what I asked for for help in here, but yeah, my C/C++ knowledge... not so great...
385: [09:16:00] <ss23> Yeah, after messing with both for a (little) while, fuck C++
386: [09:17:00] <Pyromaniik> ss23, it's shining brilliance, just deal with it
387: [09:17:00] <ss23> Which makes me go "lol fuck off"
388: [09:17:00] <ss23> The general consensus I've got is "C++ is bearable as long as you go out of your way and use third party libraries like Boost"
389: [09:17:00] <Pyromaniik> STL for lulz
390: [09:20:00] <spronk2> got
391: [09:20:00] <spronk2> god*
392: [09:20:00] <spronk2> c++ is like beating yourself on the head with a stick
393: [09:20:00] <spronk2> bloody
394: [09:20:00] <spronk2> simon_w's oauth module
395: [09:21:00] <Pyromaniik> then several OMG OMG OMFG's
396: [09:21:00] <Pyromaniik> so anyway
397: [09:21:00] <spronk2> is broken
398: [09:21:00] <Pyromaniik> and then consequently Shift+Del = cut
399: [09:21:00] <spronk2> which isn't impossible, because hfriedlander patched it recently adding the shit that seems broken
400: [09:21:00] <Pyromaniik> was all WHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT!?
401: [09:21:00] <Pyromaniik> Shift+Ins = paste
402: [09:21:00] <Pyromaniik> Then I went and told the internet.
403: [09:21:00] <Pyromaniik> discovered
404: [09:21:00] <Pyromaniik> accidentally
405: [09:21:00] <Pyromaniik> today I blew my own mind
406: [09:21:00] <spronk2> either that or ss3.1b2 broke requesthandler
407: [09:22:00] <Pyromaniik> also, beta.
408: [09:22:00] <Pyromaniik> spronk, yeh, request handler being 'tidied'
409: [09:22:00] <Pyromaniik> spronk2, that is
410: [09:23:00] <spronk2> mm..
411: [09:23:00] <spronk2> Pyromaniik: have a look at 3.1 requesthandler.php line 166
412: [09:24:00] <spronk2> and see if you think it should read param( instead of latestParams(
413: [09:27:00] <spronk2> brb
414: [09:28:00] <spronk2> what you making?
415: [09:28:00] <Pyromaniik> also not that intimate with RequestHandler
416: [09:28:00] <Pyromaniik> busy sorry spronk!
417: [09:28:00] <Pyromaniik> :D
418: [09:28:00] <spronk2> :O
419: [09:28:00] <Pyromaniik> I'm making internets!
420: [09:28:00] <spronk2> which is why i'm not sure :P
421: [09:28:00] <spronk2> neither
422: [09:28:00] <spronk2> :[
423: [09:29:00] <Pyromaniik> errr, content blocks*
424: [09:29:00] <spronk2> SEKRERT PROJEKT?
425: [09:29:00] <Pyromaniik> l2read, nub
426: [09:29:00] <Pyromaniik> yush
427: [09:29:00] <Pyromaniik> might be code blocks
428: [09:29:00] <Pyromaniik> might not be
429: [09:29:00] <Pyromaniik> internets
430: [09:30:00] <spronk2> woah
431: [09:32:00] * spronk2 has joined #silverstripe
432: [09:32:00] * spronk2 quit (Quit: leaving)
433: [09:38:00] * akapi has joined #silverstripe
434: [09:38:00] <akapi> yo, every1
435: [09:39:00] * chillu has joined #silverstripe
436: [09:43:00] <spronk2> nimeso: you get it working?
437: [09:43:00] <Pyromaniik> hi akapi
438: [09:51:00] <spronk2> might switch to weechat
439: [09:51:00] <Pyromaniik> lol sounds like some kind of nasty port
440: [09:51:00] <Pyromaniik> porn*
441: [09:51:00] <spronk2> hmm
442: [09:51:00] <spronk2> lulz
443: [10:04:00] <akapi> thats what is going on my server ) finally fixed a problem with no $Menu data when calling Security.ss )
444: [10:11:00] <Pyromaniik> :/
445: [10:11:00] <Pyromaniik> ajshort, does your gridfield module require 3.1?
446: [10:11:00] <ajshort> Pyromaniik: kinda
447: [10:11:00] <ajshort> some components do, so I made the module require 3.1
448: [10:12:00] <ajshort> inline editing
449: [10:12:00] <Pyromaniik> so if I were to plonk it on a 3.0 site, which should I avoid?
450: [10:12:00] <ajshort> no
451: [10:12:00] <ajshort> what do you mean?
452: [10:12:00] <Pyromaniik> is there a tickbox like with the other one?
453: [10:12:00] <Pyromaniik> ajshort, how does your orderable rows work?
454: [10:12:00] <Pyromaniik> lol
455: [10:12:00] <Pyromaniik> bugger :<
456: [10:13:00] <ajshort> handles
457: [10:13:00] <Pyromaniik> or just drag handles?
458: [10:13:00] <Pyromaniik> so drag handles then, or did you remove the default row click action?
459: [10:13:00] <Pyromaniik> ah yeh
460: [10:14:00] * lx-berlin has joined #silverstripe
461: [10:14:00] <Pyromaniik> sweet
462: [10:14:00] * ARNHOE has joined #silverstripe
463: [10:16:00] <Pyromaniik> That's what I like, love your work.
464: [10:19:00] * ARNHOE has joined #silverstripe
465: [10:19:00] * ARNHOE quit (Remote host closed the connection)
466: [10:33:00] <kinglozzer> ajshort, Pyromaniik: I upgraded to 3.1b2 and used the module to inline edit/add, then downgraded again and removed it after I'd finished. Must've saved me about 2 hours of clicking 'next, save, back, add new' etc
467: [10:33:00] <kinglozzer> So thanks for that ajshort :)
468: [10:34:00] <spronk> ugh, this fucking oauth module..
469: [10:36:00] * Bollig|DesignCty quit (Quit: Bollig|DesignCty)
470: [10:40:00] <Pyromaniik> love it.
471: [10:40:00] <Pyromaniik> kinglozzer, hahahaha, pro tip right there.
472: [10:40:00] * lx-berlin has left #silverstripe
473: [10:41:00] <kinglozzer> Yeah I had a about 400 rows of dimensions to add to different dataobjects
474: [10:47:00] <qlex> did i miss DesignerX - was he here perhaps ?
475: [10:47:00] * qlex says hi
476: [10:47:00] * qlex has joined #silverstripe
477: [10:54:00] * LoveDuckie has joined #silverstripe
478: [11:07:00] * Error404NotFound quit (Ping timeout: 240 seconds)
479: [11:07:00] * lx-berlin has joined #silverstripe
480: [11:07:00] * nimeso quit ()
481: [11:08:00] * Error404NotFound has joined #silverstripe
482: [11:30:00] * Pyromaniik quit (Quit: HydraIRC -> http://www.hydrairc.com <- \o/)
483: [11:33:00] * qlex has left #silverstripe
484: [11:38:00] * dendeffe quit (Quit: dendeffe)
485: [11:43:00] * CodeTrap has joined #silverstripe
486: [12:00:00] * Error404NotFound quit (Disconnected by services)
487: [12:00:00] * Err404NotFound has joined #silverstripe
488: [12:03:00] * dendeffe has joined #silverstripe
489: [12:07:00] * mobiusnz quit (Quit: Leaving.)
490: [12:30:00] * DigNZ has joined #silverstripe
491: [12:35:00] * DigNZ1 quit (*.net *.split)
492: [12:43:00] * C10ne has joined #silverstripe
493: [12:43:00] * Colin[pi] quit (Ping timeout: 256 seconds)
494: [12:44:00] <C10ne> Hi all, a quick question, which hosting would you suggest for testing SS sites? Something fast, but not expensive...
495: [12:45:00] <C10ne> I have an account on bluehost, and it sucks.
496: [12:45:00] * travis-ci has joined #silverstripe
497: [12:45:00] <travis-ci> [travis-ci] silverstripe/silverstripe-cms#257 (3.0 - 0f8d7a0 : Ingo Schommer): The build passed.
498: [12:45:00] <travis-ci> [travis-ci] Change view : https://github.com/silverstripe/silverstripe-cms/compare/306b0d77e49f...0f8d7a0aa4b6
499: [12:45:00] <travis-ci> [travis-ci] Build details : http://travis-ci.org/silverstripe/silverstripe-cms/builds/5131216
500: [12:45:00] * travis-ci has left #silverstripe
501: [12:47:00] <travis-ci> [travis-ci] silverstripe/sapphire#1543 (3.0 - 2b6d735 : Ingo Schommer): The build passed.
502: [12:47:00] * travis-ci has joined #silverstripe
503: [12:47:00] * travis-ci has left #silverstripe
504: [12:47:00] <travis-ci> [travis-ci] Build details : http://travis-ci.org/silverstripe/sapphire/builds/5131219
505: [12:47:00] <travis-ci> [travis-ci] Change view : https://github.com/silverstripe/sapphire/compare/e6fffb9ef910...2b6d735182c3
506: [12:51:00] * C10ne has joined #silverstripe
507: [12:51:00] * C10ne quit (Quit: Page closed)
508: [12:52:00] * lobarvaz has joined #silverstripe
509: [12:59:00] * UncleCheese has joined #silverstripe
510: [13:03:00] * EPIK quit (Ping timeout: 255 seconds)
511: [13:06:00] <lx-berlin> C10ne: if you are looking for a german virtual hosting: https://www.hosteurope.de/Server/Virtual-Server/Virtual-Server-XL/
512: [13:07:00] <C10ne> thanx lx-berlin, I've had some positive experiences with german hosts, I'll check it out
513: [13:07:00] <lx-berlin> its quite powerfull. No problem to host 30-40 smaler websites :)
514: [13:08:00] <C10ne> Nice, I need maybe 2-3 active, but some are suposed to be quite large
515: [13:10:00] * Nyger has joined #silverstripe
516: [13:10:00] <ec8or> haha 30-40 sites
517: [13:11:00] * UndefinedOffset has joined #silverstripe
518: [13:11:00] * guci0 has joined #silverstripe
519: [13:12:00] <guci0> Hi
520: [13:12:00] <lx-berlin> ec8or: thats what we are doing (not all of them are build with SS)
521: [13:21:00] <C10ne> We'll take dedicated server later, for our needs, but for now it's just testing
522: [13:22:00] <C10ne> This looks fine, but it's a bit expensive for me
523: [13:30:00] * feejin has joined #silverstripe
524: [13:40:00] <ec8or> lx-berlin: yeah should be fine for normal/small sites
525: [13:41:00] <ec8or> still funny :)
526: [13:51:00] * ajshort quit (Quit: Leaving)
527: [13:52:00] * C10ne quit (Quit: Page closed)
528: [14:08:00] * CodeTrap quit (Quit: CodeTrap)
529: [14:24:00] <akapi> huh. whoever wrote framework/security is a funny bunny
530: [14:26:00] <kinglozzer> ?
531: [14:28:00] * Shrike_Finland quit (Quit: Leaving.)
532: [14:29:00] * toebu quit (Remote host closed the connection)
533: [14:37:00] <akapi> ..anyway, skipping 20 pages of explanations why im doing it ) - somewhere around security.php:420 - there is a check.. "if($message_type == 'bad') {".. which is not working right ). if ==null, then everything works, but if it is 'bad' then it displays data from form.ss... or maybe i need a break. been sleeping 1 hour a day since 15th..
534: [14:39:00] * sonet has joined #silverstripe
535: [14:40:00] * UncleCheese quit (Quit: UncleCheese)
536: [14:41:00] * UncleCheese has joined #silverstripe
537: [14:43:00] * toebu has joined #silverstripe
538: [15:00:00] * sonet quit (Quit: sonet)
539: [15:06:00] * akapi quit ()
540: [15:06:00] * Err404NotFound quit (Ping timeout: 246 seconds)
541: [15:18:00] * Err404NotFound has joined #silverstripe
542: [15:24:00] * lx-berlin quit (Quit: lx-berlin)
543: [15:27:00] * Nivery has joined #silverstripe
544: [15:31:00] * Nivery quit (Read error: Connection reset by peer)
545: [15:31:00] * g4b0 has joined #silverstripe
546: [15:31:00] * Nivery has joined #silverstripe
547: [15:38:00] <g4b0> how can I extract a scaffolding field from an instance of a DataObject?
548: [15:38:00] <g4b0> hi all
549: [15:44:00] * Err404NotFound is now known as Error404NotFound
550: [16:07:00] * Err404NotFound has joined #silverstripe
551: [16:07:00] * Error404NotFound quit (Disconnected by services)
552: [16:08:00] * Err404NotFound is now known as Error404NotFound
553: [16:12:00] * Nyger has left #silverstripe
554: [16:12:00] <UncleCheese> hi
555: [16:12:00] <g4b0> UncleCheese: are you there?
556: [16:14:00] <kinglozzer> Hmm. Contributing to silverstripe-mobile, every time I try to submit a pull request, commits keep adding .DS_Store. Anything I can do about this?
557: [16:14:00] <kinglozzer> Added it to .gitignore, but it's trying to submit that as part of the pull request as well
558: [16:19:00] <ec8or> you can add .gitignore to .gitignore
559: [16:19:00] <ec8or> but it might make sense to include it
560: [16:20:00] <kinglozzer> Yeah, just looking at the module my last pull request was merged with .DS_Store in there. So I'll add it to .gitignore and just submit it
561: [16:21:00] <ec8or> if you already commited the file it is not enough to just add it to .gitignore, you need to untrack it as well
562: [16:22:00] * ARNHOE quit (Remote host closed the connection)
563: [16:22:00] <ec8or> git rm --cached file i think but check
564: [16:23:00] <ec8or> yeah http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring
565: [16:23:00] * lx-berlin has joined #silverstripe
566: [16:27:00] <UncleCheese> git rm -rf --cached .
567: [16:27:00] <g4b0> I'm modifying your TranslatebleDataObject
568: [16:27:00] <UncleCheese> git add .
569: [16:27:00] <UncleCheese> git commit -m "gitignore works now"
570: [16:27:00] <UncleCheese> Great. Good luck!
571: [16:27:00] <g4b0> :)
572: [16:27:00] <g4b0> UncleCheese: sorry for delay :)
573: [16:28:00] <UncleCheese> shouldn't be too hard
574: [16:28:00] <g4b0> it's now qorking
575: [16:28:00] <g4b0> but I'have a problem using scaffolding
576: [16:28:00] <g4b0> working*
577: [16:28:00] <g4b0> I would like to have it working in SS 3
578: [16:29:00] <g4b0> var_dump($o); exit;
579: [16:29:00] <g4b0> if ($o = $this->owner->obj($field)) {
580: [16:29:00] <g4b0> how can I extract a scaffolded formfield from a DataObject?
581: [16:29:00] <g4b0> yours
582: [16:29:00] <g4b0> $formField = $o->scaffoldFormField();
583: [16:29:00] <g4b0> $fields[] = $formField;
584: [16:29:00] <g4b0> }
585: [16:29:00] <UncleCheese> ugh, i never use scaffolding
586: [16:30:00] <UncleCheese> you mean after TranslatableDataObject adds all the fields in your getCMSFields function?
587: [16:33:00] <g4b0> for a Varchar field
588: [16:33:00] <g4b0> It produces and HtmlTextField
589: [16:33:00] <g4b0> yes
590: [16:35:00] <UncleCheese> $fields->removeByName("SomeField");
591: [16:35:00] <g4b0> Do you know how can I work correctly with scaffolding?
592: [16:35:00] <UncleCheese> i would just replace it
593: [16:37:00] <g4b0> ???
594: [16:46:00] * Nivery has left #silverstripe
595: [16:49:00] * lx-berlin has left #silverstripe
596: [16:50:00] * lx-berlin has joined #silverstripe
597: [16:51:00] <UncleCheese> What don't you get?
598: [16:51:00] <UncleCheese> or you could do
599: [16:51:00] <g4b0> I need to insert a TextField
600: [16:52:00] <UncleCheese> $fields->replaceField("MyVarcharField", TextField::create("MyVarcharField"));
601: [16:52:00] <UncleCheese> well i'm a nice guy
602: [16:52:00] <g4b0> nice idea
603: [16:52:00] <g4b0> ah ok
604: [16:52:00] <g4b0> it insert a HtmlTextField
605: [16:56:00] <g4b0> thanks a lot
606: [16:58:00] * ARNHOE has joined #silverstripe
607: [17:00:00] * iamss has joined #silverstripe
608: [17:02:00] * joelpittet has joined #silverstripe
609: [17:08:00] * iamss quit (Ping timeout: 245 seconds)
610: [17:10:00] * feejin quit (Remote host closed the connection)
611: [17:12:00] * bob__ has joined #silverstripe
612: [17:12:00] * kinglozzer quit (Remote host closed the connection)
613: [17:13:00] <bob__> I'm wondering whether anyone can give me a pointer here
614: [17:13:00] <bob__> hi
615: [17:14:00] <bob__> where can I get more detailed error message?
616: [17:14:00] <bob__> I'm having Internal Server Error when creating "Collection Page"
617: [17:14:00] <bob__> it's from genericviews module
618: [17:14:00] <bob__> I've set Director::set_environment_type("dev"); in my _config.php
619: [17:17:00] <FrozenFire> bob__, In your server log
620: [17:17:00] <FrozenFire> For Apache on Linux, that'd likely be /var/log/apache2/error.log
621: [17:18:00] <bob__> Thanks FrozenFire for responding
622: [17:18:00] <FrozenFire> Unless you're on a shared host, of course.
623: [17:18:00] <FrozenFire> In which case it's probably in ~/logs
624: [17:18:00] <bob__> I'm using hosted environment with cpanel ...
625: [17:19:00] <FrozenFire> So probably a CentOS server running Apache
626: [17:19:00] <FrozenFire> cPanel is just a piece of software. A piece of shitty, shitty software.
627: [17:20:00] <ec8or> haha
628: [17:22:00] * g4b0 quit (Remote host closed the connection)
629: [17:22:00] <bob__> seems like I have access to apache's access-logs, but not error-logs
630: [17:23:00] <FrozenFire> If it's your server, you have access to everything.
631: [17:26:00] * dendeffe quit (Quit: dendeffe)
632: [17:31:00] <bob__> Does genericviews depends on other modules?
633: [17:35:00] <FrozenFire> I do not believe so
634: [17:35:00] <FrozenFire> https://github.com/chillu/silverstripe-genericviews
635: [17:36:00] <chillu> Its veeeery very old, and doesn't work on SS3
636: [17:36:00] <FrozenFire> Wondered as much
637: [17:36:00] <FrozenFire> Anything saying 2.3 probably doesn't work any more. :P
638: [17:38:00] <ec8or> i'm going to work in an "office" tomorrow, first time in 2 years
639: [17:38:00] <ec8or> crazy but nice
640: [17:44:00] * lx-berlin quit (Quit: lx-berlin)
641: [17:45:00] <bob__> chillu: ah! is there a replacement for that?
642: [17:45:00] <chillu> ec8or: Exciting! So home office until now?
643: [17:45:00] <bob__> chillu: I need a "front end" for doing edit/delete
644: [17:46:00] <chillu> bob__: Not that I'm aware of, although GridField is generally designed to be used outside of the CMS, on websites. It hasn't seen much use in that area, so might hit some bumps. But its very powerful for CRUD
645: [17:46:00] <FrozenFire> Best to write your own CRUD for the front-end.
646: [17:47:00] <bob__> trying to avoid re-inventing the wheel if possible
647: [17:47:00] <ec8or> chillu: yep
648: [17:47:00] <ec8or> my productivity has been on a steady decline the last 6 months, need a change
649: [17:48:00] <FrozenFire> bob__, Guess it depends on what you're trying to do.
650: [17:48:00] <bob__> I saw this article http://www.ssbits.com/tutorials/2012/s-new-post-78/ and somebody was suggesting genericviews
651: [17:48:00] <chillu> I'm holding up fairly well in my home office. Although my plants are always perfectly watered (procrastination!)
652: [17:48:00] <ec8or> haha
653: [17:48:00] <ec8or> yeah i got a 2-year old running around here which doesn't help
654: [17:49:00] <chillu> Yeah no way, I would'nt get anything done then
655: [17:49:00] <ec8or> but been great to be able to stay at home this long
656: [17:49:00] <FrozenFire> Ordinarily I wouldn't put such a management interface on the front-end
657: [17:50:00] <ec8or> bob__: is it for general users?
658: [17:50:00] <bob__> ec8or; that's right ... end-users
659: [17:51:00] * lobarvaz has left #silverstripe
660: [17:51:00] <ec8or> ok, i'd probably just code something from scratch then
661: [17:51:00] <ec8or> i've had a few sites where there is a mid-level admin type of user and then bootstrap has been good
662: [17:52:00] <ec8or> but nothing i would use if it is for proper end-users where you need a fully customised look
663: [17:53:00] <FrozenFire> And you should also consider whether such a user shouldn't just have CMS access
664: [17:53:00] <bob__> the end-user is a pure end-user type ...
665: [17:53:00] <FrozenFire> Just limited to a specific section
666: [17:53:00] <bob__> his role will be to login and maintain 1 table
667: [17:54:00] <bob__> adding/editing/deleting record need to be brainless for him
668: [17:56:00] <FrozenFire> Should be easy enough using an entry form for new items, then a table linked to a PaginatedList whose records he can click on to go to each item's edit form, or a link to click to delete
669: [17:56:00] <FrozenFire> It's not anything special.
670: [17:56:00] <FrozenFire> You're probably overthinking the avoidance of reinventing the wheel
671: [17:57:00] <bob__> I am new to silverstripe myself
672: [17:57:00] <bob__> so still learning as what module is available out there
673: [17:58:00] <FrozenFire> Yeah, this isn't something you'll find in a module that'd be easy to just drop in there
674: [17:58:00] <bob__> I discovered "User Defined Form" which is great!
675: [17:58:00] <bob__> and I thought ... if SS has this, there gotta be something for CRUD interface
676: [17:59:00] <bob__> and I found genericviews ... and just learned that it's not compatible with ss3
677: [17:59:00] <FrozenFire> There's not
678: [18:00:00] <bob__> by the way, where can I download ss2.4?
679: [18:00:00] <ec8or> security releases on the download page
680: [18:01:00] <FrozenFire> If you're already using SS3, don't be downgrading to 2.4
681: [18:01:00] <FrozenFire> Especially not for the generic views module.
682: [18:03:00] <bob__> to be honest, my ss skill is not yet "there" to create something like genericviews for ss3
683: [18:03:00] <FrozenFire> You would not need to.
684: [18:04:00] <FrozenFire> And using the genericviews module is going to be a wild goose chase
685: [18:04:00] <FrozenFire> I already know what you need to do. I can tell you that the genericviews module will not do that.
686: [18:06:00] <bob__> to go down the route you mentioned ... "using an entry form for new items, then a table linked to a PaginatedList whose records he can click on to go to each item's edit form, or a link to click to delete" ... what'd be the road map to get there?
687: [18:08:00] <FrozenFire> A controller with a form for editing the entries in your table. A method for returning the PaginatedList of existing items. An action for viewing the items, which would show the form for editing the items, pre-loaded with the item data.
688: [18:08:00] <FrozenFire> The action for the form would check whether the ID field is set, and if not, create a new item.
689: [18:09:00] <FrozenFire> The rest is simply HTML/CSS
690: [18:09:00] <FrozenFire> If it is set, it gets the respective item and saves the form into it, then saves it.
691: [18:11:00] <bob__> ok ... let me read up further on how to do that
692: [18:12:00] <bob__> thanks for the tips
693: [18:13:00] * gelignite has joined #silverstripe
694: [18:15:00] <FrozenFire> Bam.
695: [18:15:00] <FrozenFire> http://www.sspaste.com/paste/show/512f9ed4707a6
696: [18:15:00] <FrozenFire> Something akin to that.
697: [18:16:00] <FrozenFire> Probably needs a delete form
698: [18:23:00] * nimeso has joined #silverstripe
699: [18:26:00] * Friksel has joined #silverstripe
700: [18:31:00] * Shrike_Finland has joined #silverstripe
701: [18:37:00] * Bollig|DesignCty has joined #silverstripe
702: [18:38:00] * chillu quit (Quit: chillu)
703: [18:58:00] * chillu has joined #silverstripe
704: [19:09:00] * SphereSilver has joined #silverstripe
705: [19:10:00] * AlphaCactus has joined #silverstripe
706: [19:12:00] * bob__ quit (Ping timeout: 245 seconds)
707: [19:12:00] * Friksel quit (Ping timeout: 245 seconds)
708: [19:13:00] * guci0 quit (Ping timeout: 245 seconds)
709: [19:17:00] * oddnoc has joined #silverstripe
710: [19:22:00] * mobiusnz has joined #silverstripe
711: [19:23:00] * dendeffe has joined #silverstripe
712: [19:24:00] * SightUnseen has joined #silverstripe
713: [19:27:00] * SightUnseen has left #silverstripe
714: [19:32:00] * azureKnight has joined #silverstripe
715: [19:33:00] <Pyromanik> f-cruds!
716: [19:35:00] * nickmolhoek has joined #silverstripe
717: [19:35:00] * nickmolhoek quit (Remote host closed the connection)
718: [19:36:00] * nickmolhoek has joined #silverstripe
719: [19:40:00] * azureKnight quit (Quit: azureKnight)
720: [19:41:00] <azureKnight> Hello peoples.
721: [19:41:00] * azureKnight has joined #silverstripe
722: [19:47:00] <azureKnight> As a group, what are our thoughts on data objects as pages?
723: [19:48:00] <ec8or> as a group?
724: [19:49:00] <azureKnight> I meant us, like quick discussion.
725: [19:50:00] * dendeffe quit (Quit: dendeffe)
726: [19:50:00] <ec8or> i use controllers without pages all the time for more complex sites
727: [19:51:00] <azureKnight> I've liked the ideas, because for me I'm trying to create a video playlist, but I need those videos to have a unique page for Social sharing, you know?
728: [19:51:00] * tankr has joined #silverstripe
729: [19:52:00] <ec8or> you're obviously not gonna create a page each for each video
730: [19:52:00] <azureKnight> Right???obviously??? ha...ha...
731: [19:52:00] * azureKnight deletes 3 php files...
732: [19:52:00] <ec8or> yep makes sense
733: [19:54:00] <azureKnight> The way they want it is that the video can be part of a series, and then be shareable.
734: [19:54:00] <ec8or> but you might still want a VideoPage in the CMS, depends if there are going to be any content on there that is defined by the admin
735: [19:56:00] <ec8or> and you can call the page like /channel/CHANNELID/VIDEOID
736: [19:56:00] <ec8or> and then a Channel has_many Videos
737: [19:56:00] <ec8or> azureKnight: http://www.sspaste.com/paste/show/512fb65b7beb3
738: [19:56:00] <azureKnight> Oh, I should specify, I'm using 3.0.3
739: [19:56:00] <azureKnight> Interesting.
740: [19:56:00] <azureKnight> Ahh...
741: [19:57:00] * UncleCheese quit (Quit: UncleCheese)
742: [19:58:00] * UncleCheese has joined #silverstripe
743: [19:58:00] <ec8or> azureKnight: but you see what i mean, doesn't really need a ChannelPage in the CMS at all
744: [19:58:00] <azureKnight> Yeah.
745: [19:58:00] <azureKnight> I like that idea.
746: [19:58:00] <ec8or> but if you're not too bothered about it it doesn't hurt that much
747: [19:59:00] <ec8or> np
748: [19:59:00] <azureKnight> I'll give this a try. Thanks so much.
749: [20:00:00] <ec8or> you might want to use shortlinks or url-formatted titles as well instead of ID, but shouldn't be too complicated to change
750: [20:01:00] * SphereMobile has joined #silverstripe
751: [20:01:00] <SphereMobile> verenging
752: [20:01:00] * UncleCheese_ has joined #silverstripe
753: [20:02:00] * liam__ has joined #silverstripe
754: [20:02:00] <SphereMobile> evening
755: [20:03:00] * UncleCheese quit (Ping timeout: 245 seconds)
756: [20:03:00] * UncleCheese_ quit (Read error: Connection reset by peer)
757: [20:03:00] * travis-ci has left #silverstripe
758: [20:03:00] <travis-ci> [travis-ci] Build details : http://travis-ci.org/silverstripe/sapphire/builds/5142341
759: [20:03:00] <travis-ci> [travis-ci] Change view : https://github.com/silverstripe/sapphire/compare/365e8021ba51...1fef42681aa8
760: [20:03:00] <travis-ci> [travis-ci] silverstripe/sapphire#1545 (3.1 - 1fef426 : Will Rossiter): The build passed.
761: [20:03:00] * travis-ci has joined #silverstripe
762: [20:04:00] <azureKnight> Yeah, I thought about doing URLSegment?
763: [20:04:00] <azureKnight> Still a little unclear on the best way to do data objects as pages, to be honest. Haha.
764: [20:04:00] * UncleCheese has joined #silverstripe
765: [20:06:00] <SphereMobile> it's not hard
766: [20:07:00] <ec8or> azureKnight: well that is basically it, you create a ChannelPage.ss template and you will have access to the $Channel and $Video in there
767: [20:07:00] <ec8or> depending on the IDs that get passed in the url
768: [20:08:00] <azureKnight> :)
769: [20:08:00] <azureKnight> Alright! I'll give it a try.
770: [20:09:00] <ec8or> i'd do it this way to start with though
771: [20:09:00] <ec8or> you still need to create a ChannelPage and give it a base url in the CMS, but pretty easy to get rid of that as well
772: [20:09:00] <ec8or> but check here for more info: http://doc.silverstripe.com/framework/en/topics/controller
773: [20:10:00] * liam__ quit (Quit: liam__)
774: [20:12:00] <azureKnight> Will do.
775: [20:13:00] * void__ has joined #silverstripe
776: [20:20:00] * DigNZ quit (Quit: DigNZ)
777: [20:23:00] <Pyromanik> output things
778: [20:23:00] * SphereMobile quit (Remote host closed the connection)
779: [20:23:00] <Pyromanik> azureKnight: controller actions
780: [20:23:00] * DigNZ quit (Remote host closed the connection)
781: [20:23:00] <Pyromanik> you just make them output a dataobject
782: [20:23:00] <azureKnight> I knew that much??? Haha Pyromanik
783: [20:23:00] * DigNZ has joined #silverstripe
784: [20:24:00] * DigNZ quit (Remote host closed the connection)
785: [20:24:00] <Pyromanik> azureKnight Still a little unclear on the best way to do data objects as pages, to be honest. Haha.
786: [20:24:00] * DigNZ has joined #silverstripe
787: [20:24:00] <Pyromanik> well
788: [20:24:00] <azureKnight> Yeah, I meant giving it it's own url string and everything, then I'd use Renderwith, right?
789: [20:24:00] <Pyromanik> that is how you do it
790: [20:25:00] * DigNZ has joined #silverstripe
791: [20:26:00] <Pyromanik> oh yeah
792: [20:26:00] <Pyromanik> well
793: [20:26:00] <Pyromanik> you'd do it like pages do
794: [20:26:00] <Pyromanik> store a URLSegment
795: [20:26:00] <Pyromanik> make sure it's unique against all the others
796: [20:26:00] <Pyromanik> well
797: [20:27:00] <Pyromanik> there's also the 'cheat' way
798: [20:27:00] <Pyromanik> page/action/id/slugged-dataobjects-title
799: [20:27:00] * willr has joined #silverstripe
800: [20:27:00] <SphereSilver> and make it an index!
801: [20:27:00] <Pyromanik> but then I just append crap that doesn't affect anything on the end
802: [20:27:00] <Pyromanik> page/action/id
803: [20:27:00] <Pyromanik> which is like what ec8or has given you
804: [20:27:00] <Pyromanik> which I often use when I'm pushed for time
805: [20:28:00] <SphereSilver> public static $indexes = array( 'your_urlsegment_name_in_db' => true );
806: [20:29:00] <Pyromanik> SphereSilver: yeah, but you need to check it before you try to store it (and get an error in due process)
807: [20:29:00] <Pyromanik> also
808: [20:29:00] <Pyromanik> not good being an index
809: [20:29:00] <Pyromanik> if you have multiple parent pages
810: [20:29:00] <Pyromanik> meaning that you could easily share urlsegments
811: [20:29:00] <Pyromanik> without conflicts
812: [20:30:00] <Pyromanik> but if they're all sharing the same parent and don't nest, then that's fine. Still gotta check for uniqueness before plonking in though... but iirc the urlsegment uniqueness check has been abstracted out to it's own class, making it super easy to apply.
813: [20:30:00] <Pyromanik> URLSegementFilter or something iirc
814: [20:31:00] <Pyromanik> not sure if that does uniqueness tests or just generates and filters the slug though.
815: [20:31:00] <Pyromanik> so yeah, still gotta test unique.
816: [20:31:00] <Pyromanik> I think the latter actually.
817: [20:33:00] * liam__ has joined #silverstripe
818: [20:33:00] <SphereSilver> Pyromanik: I am ;) check my repos, all have a check-function for uniqueness ;)
819: [20:34:00] <Pyromanik> all good then :P
820: [20:35:00] <SphereSilver> in load, it might be not much, but in total, I see an improvement on SQL queries take about a few milliseconds less.
821: [20:35:00] <SphereSilver> But having an index, for example, my website has almost 300 newsposts
822: [20:36:00] <UncleCheese> I feel like it should be somewhere on $this->gridField->State
823: [20:36:00] <SphereSilver> SortableGridfield?
824: [20:36:00] <UncleCheese> Is there any way to get the sort of a GridField from within GridFieldDetailForm?
825: [20:37:00] * tankr has joined #silverstripe
826: [20:37:00] <UncleCheese> no.. if i'm on the detail form, how can i look at the grid field and find out what column is being sorted and which direction
827: [20:37:00] * tankr quit (Ping timeout: 256 seconds)
828: [20:37:00] <SphereSilver> The arrows?
829: [20:37:00] <SphereSilver> What do you mean exactly?
830: [20:37:00] <UncleCheese> yeah, so when editing a record
831: [20:37:00] <UncleCheese> i want to look at the grid field that i came from
832: [20:37:00] <Pyromanik> SphereSilver: yeah, never said index was a bad idea, just to be cautious that it matches your design :P
833: [20:37:00] <UncleCheese> and know that it's sorted by Title ASC
834: [20:37:00] <UncleCheese> or whatever
835: [20:38:00] <SphereSilver> default sort is Created if I'm not mistaken
836: [20:38:00] <SphereSilver> ahhhh, ok, ehm...
837: [20:38:00] <UncleCheese> or not at all.. using its default sort
838: [20:38:00] <UncleCheese> it must be somewhere on GridState, i'd think
839: [20:39:00] <SphereSilver> }
840: [20:39:00] <SphereSilver> $this->URLSegment .= '-'.$nr++;
841: [20:39:00] <UncleCheese> i really don't' get how GridState works, actually
842: [20:39:00] <SphereSilver> Pyromanik: Default: while($this->LookForExistingURLSegment($this->URLSegment)){
843: [20:39:00] <SphereSilver> You can't output the gridstate to Firephp?
844: [20:39:00] * zfmf has left #silverstripe
845: [20:40:00] <Pyromanik> UncleCheese: that hasn't happened since last year.
846: [20:40:00] <UncleCheese> i beg to differ, actually
847: [20:40:00] <UncleCheese> where are the core devs when you need them on a Friday morning?
848: [20:40:00] <Pyromanik> GridState?
849: [20:40:00] <UncleCheese> NOOOOOOOOOOOO!!
850: [20:40:00] <Pyromanik> also, sminnee, halkyon and chillu are all in here.
851: [20:41:00] <chillu> I'll be around in 20 minutes
852: [20:41:00] * Liquide has joined #silverstripe
853: [20:41:00] <UncleCheese> because the grid loses its sort when you go from edit back to list
854: [20:41:00] <UncleCheese> actually, i doubt it will work
855: [20:41:00] <SphereSilver> Friday morning? It's thursday evening!
856: [20:42:00] <Pyromanik> pain in the ring
857: [20:42:00] <UncleCheese> it's not persistent
858: [20:42:00] <UncleCheese> damn!
859: [20:42:00] <Pyromanik> neither is complex table field
860: [20:44:00] <tankr> UncleCheese: actually, on that note - is there a way of preserving the sort of CTF field after the popup closes?
861: [20:44:00] <UncleCheese> CTF doesn't really do anything right
862: [20:44:00] <UncleCheese> not sure about CTF
863: [20:44:00] <UncleCheese> DOM does
864: [20:45:00] <UncleCheese> except look like a relic from Windows 98
865: [20:46:00] <tankr> DOM does that though? so if I sort by column, then edit a record, and go back to results they stay sorted?
866: [20:47:00] <UncleCheese> hell yeah
867: [20:48:00] <azureKnight> And use that index statement?
868: [20:48:00] <azureKnight> Pyromanik: so I give the data objects their own url segment statement?
869: [20:48:00] <tankr> lol, excellent
870: [20:48:00] <tankr> value for money
871: [20:48:00] <UncleCheese> DOM doesn't screw around.. that 10,000 lines of monolithic code sure works hard
872: [20:48:00] <tankr> high five
873: [20:49:00] <SphereSilver> Keyboard transplantation complete
874: [20:50:00] <SphereSilver> Line 331
875: [20:50:00] <SphereSilver> https://github.com/Firesphere/silverstripe-newsmodule/blob/master/code/objects/News.php
876: [20:50:00] <azureKnight> Lnk.
877: [20:50:00] <azureKnight> Link?
878: [20:50:00] <SphereSilver> slow down, I'm typing! :P
879: [20:50:00] <UncleCheese> azureKnight: http://sspaste.com/paste/show/512fc32182876
880: [20:50:00] <SphereSilver> azureKnight: check my onBeforeWrite() in my module to see how it should be used.
881: [20:51:00] <SphereSilver> That's my onBeforeWrite. Below the onAfterWrite, I have a LookForExisting
882: [20:51:00] <UncleCheese> and on write it creates a slug from the title
883: [20:51:00] <UncleCheese> then you can do Sluggable::get_by_slug("MyDataObject", $slug);
884: [20:51:00] <azureKnight> Awesome.
885: [20:51:00] <UncleCheese> in your DO class: static $extensions = array ('Sluggable');
886: [20:52:00] <UncleCheese> and it creates the index for you, too
887: [20:52:00] <UncleCheese> your database platform will thank you
888: [20:53:00] * SphereSilver goes back to the books
889: [20:53:00] <SphereSilver> That actually works that way?
890: [20:55:00] <SphereSilver> my tests are red :(
891: [20:56:00] <SphereSilver> Aaron ( UncleCheese ) how's the MiniCheese doing?
892: [20:56:00] <sminnee> What's up?
893: [20:56:00] <sminnee> UncleCheese Pyromanik the GridState was supposed to just be an arbitrary key-store.
894: [20:56:00] <UncleCheese> awesome
895: [20:57:00] <UncleCheese> so could i use it to store the sort column/direction of the grid so that the detail form can query that?
896: [20:57:00] <SphereSilver> wait 'till it talks :P
897: [20:57:00] <UncleCheese> crawling everywhere
898: [20:57:00] <UncleCheese> oh, it's not used? every time i check it, it's an empty array
899: [21:00:00] <Pyromanik> wtf is that UncleCheese
900: [21:00:00] <Pyromanik> omfg
901: [21:00:00] <UncleCheese> hmm?
902: [21:01:00] <sminnee> UncleCheese: yeah the idea is that components can add something to the keystore and then read it back later
903: [21:01:00] <UncleCheese> static all the things?
904: [21:01:00] <Pyromanik> no one is perfect SphereSilver
905: [21:01:00] * mobiusnz quit (Quit: Leaving.)
906: [21:01:00] <SphereSilver> Even Aaron isn't perfect Pyro
907: [21:01:00] <Pyromanik> static all the things!
908: [21:01:00] <UncleCheese> it's ported over from 2.4
909: [21:01:00] <Pyromanik> oic
910: [21:01:00] <UncleCheese> oh it's old
911: [21:01:00] <sminnee> the gridfield_actions make sure that state is carried throuhg
912: [21:01:00] <Pyromanik> yeh, your extension there, why static?
913: [21:02:00] <SphereSilver> Anyone here have a job for me?
914: [21:02:00] <UncleCheese> which statics are you referring to?
915: [21:02:00] <Pyromanik> so many tidies to be had
916: [21:02:00] <Pyromanik> much like most things in 3.0 :<
917: [21:03:00] <Pyromanik> o.0
918: [21:03:00] <Pyromanik> return DataList::create($class)->filter("Slug",$slug)->first();
919: [21:03:00] <Pyromanik> UncleCheese: all of them
920: [21:03:00] <UncleCheese> i'm not sure what you're getting at
921: [21:03:00] <UncleCheese> rewrite it for me?
922: [21:03:00] <UncleCheese> rhmm
923: [21:03:00] <SphereSilver> April 11th I'm out of a job. (note, not fired, I decided to go myself :) )
924: [21:03:00] <Pyromanik> am I confusing unique and index?
925: [21:04:00] <SphereSilver> You can't confuse what isn't there :P
926: [21:04:00] <Pyromanik> it happens a lot
927: [21:04:00] <Pyromanik> it's likely i'm confused
928: [21:04:00] <UncleCheese> i don't know how else to inject db fields into a class without using statics
929: [21:05:00] <SphereSilver> statics should only be used if they are static.
930: [21:05:00] <Pyromanik> err
931: [21:05:00] <Pyromanik> unique
932: [21:05:00] <UncleCheese> well, no, that's a constant
933: [21:05:00] <SphereSilver> the word "static" says it. It will never ever change it's behaviour based upon it's input
934: [21:05:00] <Pyromanik> yeah, i'm confusing index and static
935: [21:05:00] <SphereSilver> at least, that's how I see it.
936: [21:05:00] <Pyromanik> but still
937: [21:06:00] <UncleCheese> that doesn't make any sense
938: [21:06:00] <UncleCheese> statics can change, but they're not instance dependent
939: [21:06:00] <Pyromanik> i'm not talking about the db defs, talking about the fuctions
940: [21:06:00] <UncleCheese> they're basically just a primitive form of namespacing
941: [21:06:00] <Pyromanik> :< +n
942: [21:06:00] <Pyromanik> functions
943: [21:06:00] <Pyromanik> by definition any object you're applying a slug to IS a sluggable object.
944: [21:06:00] <UncleCheese> so you would instantiate a Sluggable object and call get_by_slug()?
945: [21:07:00] * willr quit (Quit: willr)
946: [21:07:00] <UncleCheese> it's not an instance level method
947: [21:07:00] <UncleCheese> or Event::create()
948: [21:07:00] <UncleCheese> just like NewsPage::get()
949: [21:07:00] <UncleCheese> because it's a database command
950: [21:07:00] <UncleCheese> what i wanted was MyDataObject::get_by_slug("foo");
951: [21:07:00] <Pyromanik> why would you want the method to be static?
952: [21:07:00] <UncleCheese> so that was the issue
953: [21:07:00] <Pyromanik> :P
954: [21:07:00] <UncleCheese> you can't decorate static methods into a class
955: [21:07:00] <Pyromanik> but!
956: [21:07:00] <Pyromanik> as that is the purpose of a decorator
957: [21:07:00] <UncleCheese> ahh
958: [21:07:00] <UncleCheese> but!
959: [21:08:00] <SphereSilver> and no.
960: [21:08:00] <SphereSilver> The output of a static, should always be the same, based on the input.
961: [21:08:00] <SphereSilver> If you are talking to me, yes.
962: [21:08:00] <UncleCheese> so are you undermining every DataObject::get() in the core?
963: [21:08:00] <SphereSilver> If you can't call it, it's not a static, usually.
964: [21:09:00] <SphereSilver> I see a static, as a vending machine, for example.
965: [21:09:00] <UncleCheese> in what way?
966: [21:09:00] <SphereSilver> whereas a public, can alter the output to a new set of data, which does not primarily rely on it's origin, but only interprets it as its own.
967: [21:09:00] <UncleCheese> the output should always be the same
968: [21:09:00] <Pyromanik> fact.
969: [21:09:00] <UncleCheese> don't confuse visibility with instance/static level methods
970: [21:10:00] <SphereSilver> If I put in 5 US$, and press 351, I expect a cookie
971: [21:10:00] <UncleCheese> both static and instance methods can be public
972: [21:10:00] <UncleCheese> ok
973: [21:10:00] <SphereSilver> whereas a normal function, might give me a "cookie with raisins"
974: [21:10:00] * Colin[pi] has joined #silverstripe
975: [21:11:00] <SphereSilver> I'm a bit in trouble in my head, I can't really explain my thoughts at the moment, sorry.
976: [21:11:00] <SphereSilver> I hope you understand what Imean.
977: [21:11:00] <UncleCheese> the only thing you really need to know about a static method versus an instance method is whether the method requires values that are defined at the instance level
978: [21:11:00] <UncleCheese> i mean, honestly, get_by_slug() could just be in the public namespace.. it doesn't even need to be in a class at all
979: [21:12:00] <UncleCheese> it's just in a class to provide namespacing
980: [21:12:00] <FrozenFire> Also whether calling it should potentially affect every instance of the class
981: [21:12:00] <UncleCheese> i mean, look at the _t() method.. that's just hanging out in the global namespace
982: [21:12:00] <SphereSilver> Haven't looked at that ;) so don't blame me for it (yet)
983: [21:13:00] <UncleCheese> it's a procedural set of instructions..
984: [21:13:00] <SphereSilver> yes, the _t() function is a globally adressable function, because it's unclassed
985: [21:13:00] * liam__ quit (Quit: liam__)
986: [21:13:00] <SphereSilver> but what do you expect from _t()?
987: [21:13:00] <UncleCheese> but that's what i'm saying.. some functions, like _t() are just utility methods that don't have to know anything about your classes or objects
988: [21:13:00] <UncleCheese> and in this case, get_by_slug() is just like that
989: [21:13:00] <UncleCheese> it just happens to be namespaced to Sluggable for cleanliness
990: [21:14:00] <SphereSilver> Hey, I'm not saying you're wrong :D
991: [21:14:00] <SphereSilver> to either return the text, or the translated text. You don't expect it to interpret it on it's own, and maybe (stupid, but extreme example) return an object
992: [21:14:00] <UncleCheese> oh, i'm definitely not :D
993: [21:15:00] <SphereSilver> And trust me.... I wouldn't set up a new project without DOM, unless it's 3 ;)
994: [21:15:00] <SphereSilver> I'm just trying to think along your methods.
995: [21:15:00] <UncleCheese> it's too bad
996: [21:16:00] <UncleCheese> such a mess
997: [21:16:00] * FrozenFire doesn't know why you'd set up a new project that isn't SS3
998: [21:16:00] <UncleCheese> DOM is such a train wreck.. i lose sleep if I start thinking about every website out there that is using it
999: [21:16:00] <SphereSilver> but it works ;)
1000: [21:16:00] <UncleCheese> i know
1001: [21:16:00] <UncleCheese> the ends justify the means, unfortunately
1002: [21:16:00] <SphereSilver> DOM is a method, I've seen the code and also thought "you might want to change this" (to put it softly)
1003: [21:16:00] <UncleCheese> but the community today would never tolerate something like DOM
1004: [21:17:00] <SphereSilver> but at least, it works better than anything I ever encountered
1005: [21:17:00] <FrozenFire> To be fair, SS isn't actually a whole lot better. It works... but if you know what's actually going on under the hood, you feel like throwing up.
1006: [21:17:00] * xini has joined #silverstripe
1007: [21:17:00] <UncleCheese> it got big so fast.. and i just couldn't keep up with all the feature requests, so i just started cramming things in all over the place
1008: [21:17:00] <SphereSilver> FrozenFire: Have you seen the Wordpress codebase?
1009: [21:17:00] <UncleCheese> HA
1010: [21:17:00] <FrozenFire> SphereSilver, Yes.
1011: [21:17:00] <UncleCheese> godo one
1012: [21:17:00] <FrozenFire> And I lose sleep just thinking about it
1013: [21:17:00] <UncleCheese> <?= the_post() ?>
1014: [21:17:00] <FrozenFire> Thinking, this thing runs a large portion of the internet.
1015: [21:18:00] <SphereSilver> and a lot
1016: [21:18:00] <UncleCheese> exactly
1017: [21:18:00] <SphereSilver> I just threw up a little
1018: [21:18:00] <UncleCheese> what a clusterfuck
1019: [21:18:00] <SphereSilver> and I thought.... "shorttags, I'm glad I am fired"
1020: [21:18:00] <FrozenFire> But, there are enough half-assed checks and balances in place that it only catches on fire sometimes.
1021: [21:19:00] <UncleCheese> SphereSilver: you were working at a WP shop?
1022: [21:19:00] <FrozenFire> Shorthand open, not so much.
1023: [21:19:00] <SphereSilver> FrozenFire: please, go rinse your mouth, take a shower, and come back.
1024: [21:19:00] <FrozenFire> SphereSilver, Are you aware that PHP 5.4 comes with shorthand echo enabled by default?
1025: [21:19:00] <SphereSilver> I really, really, really, seriously, hate the shorthand method.
1026: [21:19:00] * Liquide quit (Ping timeout: 255 seconds)
1027: [21:19:00] <FrozenFire> And it's a feature.
1028: [21:19:00] <FrozenFire> And it's a good thing.
1029: [21:19:00] <SphereSilver> FrozenFire: I know. I disable it by default.
1030: [21:19:00] <FrozenFire> Meh. Shorthand echo is nice to have.
1031: [21:20:00] <SphereSilver> It's a bad thing.
1032: [21:20:00] <FrozenFire> It'll get people away from ugly-ass templating languages.
1033: [21:20:00] <FrozenFire> Like SS's.
1034: [21:20:00] <FrozenFire> :P
1035: [21:20:00] <SphereSilver> To put it in other words
1036: [21:20:00] <UncleCheese> i'm not into it
1037: [21:20:00] <SphereSilver> If shorthand would be considered good, it would also be good to walk through your front door without opening it.
1038: [21:20:00] <SphereSilver> UncleCheese: Shorthand is like saying this:
1039: [21:20:00] <FrozenFire> We're talking about shorthand echo exclusively.
1040: [21:21:00] <FrozenFire> That's not what it's like.
1041: [21:21:00] <SphereSilver> <?php echo "hi, how are you"; ?>
1042: [21:21:00] <SphereSilver> it's should be a programmers nightmare :P
1043: [21:21:00] <SphereSilver> in this way
1044: [21:21:00] <SphereSilver> No, I'm taking a shortcut, obviously ;)
1045: [21:21:00] <SphereSilver> <?="hi, how are you"?>
1046: [21:22:00] <SphereSilver> in Shorthand, you can leave the ; out ;)
1047: [21:22:00] <FrozenFire> You can. I prefer not to.
1048: [21:22:00] <SphereSilver> yes you can :P
1049: [21:22:00] <FrozenFire> It's the difference between <?php echo $view->Value; ?> and <?=$view->Value; ?>
1050: [21:23:00] <SphereSilver> but I hate it, it has caused me too much trouble to even use it. So I think of it as the invention of the devil
1051: [21:23:00] <SphereSilver> Hey mister R
1052: [21:23:00] <FrozenFire> But really, if you want to get anal about it, you shouldn't be mixing PHP and HTML *at all*
1053: [21:23:00] <SphereSilver> And that's why I like Silverstripe ;)
1054: [21:23:00] * willr has joined #silverstripe
1055: [21:24:00] <FrozenFire> You should really, really, really hate SilverStripe if that's your position.
1056: [21:24:00] <FrozenFire> Do you *know* what SilverStripe does for templating?
1057: [21:24:00] <SphereSilver> I know what the result looks like, yes.
1058: [21:24:00] <FrozenFire> Its templating language is literally just a few identifiers that get converted directly to PHP code and dumped out into a cache file.
1059: [21:24:00] <UncleCheese> that's how all tempting languages work
1060: [21:24:00] <SphereSilver> And I fully agree.
1061: [21:25:00] <SphereSilver> I know, but from the readers view, it's separated ;)
1062: [21:25:00] <UncleCheese> templating
1063: [21:25:00] <UncleCheese> damn autocorrect
1064: [21:25:00] <FrozenFire> And that's why many argue that templating languages shouldn't exist.
1065: [21:25:00] <FrozenFire> Because PHP can do it on its own.
1066: [21:25:00] <SphereSilver> without templating, you would get HTML in your code.
1067: [21:25:00] <SphereSilver> Good luck with that :)
1068: [21:25:00] <FrozenFire> No you wouldn't.
1069: [21:25:00] <UncleCheese> but templating languages are more accessible to frontend developers and esigners
1070: [21:25:00] * Liquide has joined #silverstripe
1071: [21:26:00] <FrozenFire> We're talking about special languages written specifically for the purpose of avoiding having PHP code in the same scope as HTML
1072: [21:26:00] <FrozenFire> Also, we're not talking about templating itself.
1073: [21:26:00] <UncleCheese> I wouldn't want my HTML guy screwing with php tags
1074: [21:26:00] <FrozenFire> Despite that being the end result anyways.
1075: [21:27:00] <FrozenFire> Wat
1076: [21:27:00] <FrozenFire> What do clients care?
1077: [21:27:00] <SphereSilver> "Hey, this var_dump()" is your final result, good luck with it
1078: [21:27:00] <SphereSilver> Yes, but it would be a bit "unsalable" to tell clients
1079: [21:27:00] <FrozenFire> Huh
1080: [21:28:00] <FrozenFire> Or just limit yourself to using conditionals, loops and echos.
1081: [21:28:00] <SphereSilver> You need a parser. And that causes PHP, or ASP.NET to do stuff. You can never seperate it completely. But the syntax can be separated.
1082: [21:29:00] <xyphoid> i think it's been a long time since frontend developers weren't programmers and melted at the touch of script tags - these days, they're all JS people anyway
1083: [21:29:00] <FrozenFire> And if you really care about being templating-esque, just don't use braced blocks.
1084: [21:29:00] * liam_ has joined #silverstripe
1085: [21:29:00] * liam_ is now known as Guest97081
1086: [21:29:00] <FrozenFire> xyphoid, Heh. Never see you in here...
1087: [21:30:00] <xyphoid> i only just started lurking, i've just done a test install that's about it
1088: [21:30:00] * dendeffe has joined #silverstripe
1089: [21:30:00] <ec8or> it is still normally much easier to get to grips with a templating language compared to inserting proper code
1090: [21:31:00] <FrozenFire> ec8or, So... <% loop List %> is easier than <?php foreach($List as $item): ?>
1091: [21:31:00] <FrozenFire> Or at least, more... sensible?
1092: [21:31:00] <FrozenFire> ?
1093: [21:31:00] * void__ quit (Remote host closed the connection)
1094: [21:31:00] <SphereSilver> any questions xyphoid ?
1095: [21:32:00] <FrozenFire> And no, I'd say that's not easier.
1096: [21:32:00] <FrozenFire> In fact, I encounter situations almost daily with SS's templating which makes me rage
1097: [21:32:00] <SphereSilver> We're in a big fight over templating-engines atm btw :P
1098: [21:32:00] <ec8or> FrozenFire: a) it is basically forcing people to just use conditionals, loops and echo.. which is pretty reasonable
1099: [21:32:00] <ec8or> and b) yes that is easier
1100: [21:32:00] <FrozenFire> Don't force people.
1101: [21:32:00] <ec8or> especially if you compare to other templating languages
1102: [21:33:00] <ec8or> like moving between django, turbogears and even ss is much more alike compared to move between ss and wordpress
1103: [21:33:00] <ec8or> you're
1104: [21:33:00] <ec8or> your not stuck with anything
1105: [21:33:00] <ec8or> just use your own templates..
1106: [21:33:00] <FrozenFire> Yes.
1107: [21:33:00] <ec8or> FrozenFire: but you are a PHP developer
1108: [21:33:00] <FrozenFire> Problems I could solve easily in PHP, but I'm stuck with SS templates.
1109: [21:34:00] <Pyromanik> xyphoid i think it's been a long time since frontend developers weren't programmers and melted at the touch of script tags - these days, they're all JS people anyway
1110: [21:34:00] <FrozenFire> Eh. In *theory*, SS can render using PHP files.
1111: [21:34:00] <FrozenFire> In reality, good fucking luck.
1112: [21:34:00] <Pyromanik> disagree with that
1113: [21:34:00] <FrozenFire> :P
1114: [21:34:00] <Pyromanik> haha
1115: [21:34:00] <FrozenFire> Basically have to rewrite your controller to make that happen.
1116: [21:34:00] <Pyromanik> xyphoid: I disagree.
1117: [21:34:00] * UndefinedOffset quit (Quit: Leaving.)
1118: [21:34:00] <SphereSilver> phone
1119: [21:35:00] <FrozenFire> I don't know what's so different about PHP itself.
1120: [21:35:00] <Pyromanik> simple logic is simple.
1121: [21:35:00] <ec8or> just saying, i've worked with quite a few frontend devs that happily picks up ss templates for one project and django templates for another.. if they would have to do proper php and python then not so much
1122: [21:35:00] <ec8or> well it is good that they can't even
1123: [21:35:00] <Pyromanik> FrozenFire: mmm, it's more just the possibilty
1124: [21:35:00] <FrozenFire> In fact, we're saying we'll kill them if they do.
1125: [21:35:00] <FrozenFire> It's not like we're asking them to do complex queries in the template.
1126: [21:35:00] <Pyromanik> it's the ideas of scope and objects that trip people up I find.
1127: [21:36:00] <FrozenFire> <?php foreach($list as $item): ?>
1128: [21:36:00] <FrozenFire> Nothing dangerous is scoped out of the template.
1129: [21:36:00] <Pyromanik> with a *shrug* "it works"
1130: [21:36:00] <FrozenFire> ec8or, You're actually quite wrong.
1131: [21:36:00] <Pyromanik> BIG MESS OF CODE
1132: [21:36:00] <Pyromanik> also, what ec8or just said. If they could, they'd do it and they'd make the most horrible things imaginable.
1133: [21:36:00] <FrozenFire> <?php if($item->exists()): ?>
1134: [21:37:00] <FrozenFire> WHOOPS.
1135: [21:37:00] <FrozenFire> Some idiot can do <% loop List %> $delete <% end_loop %>
1136: [21:37:00] <Pyromanik> hahahaha, imma try that one
1137: [21:37:00] <FrozenFire> There goes your database.
1138: [21:38:00] <FrozenFire> Or at least, something like that.
1139: [21:38:00] <FrozenFire> You can also do shit like <% loop List.where("; drop table Page;--") %>
1140: [21:38:00] * dendeffe quit (Quit: dendeffe)
1141: [21:38:00] <FrozenFire> I forget the exact syntax for killing a query like that
1142: [21:39:00] <FrozenFire> There absolutely nothing inherently safe about templating languages.
1143: [21:39:00] <FrozenFire> Nah, those are just blatant examples.
1144: [21:39:00] <FrozenFire> It's just more of an awkward language.
1145: [21:39:00] <FrozenFire> You can do just as stupid stuff using them
1146: [21:39:00] <ec8or> if the frontend dev wants to destroy things he can obviously just edit your codebase
1147: [21:39:00] <ec8or> FrozenFire: well you're actually being quite stupid
1148: [21:40:00] <FrozenFire> They don't know that they can do all of the same ugly shit, so they don't?
1149: [21:40:00] <SphereSilver> afk, phone
1150: [21:40:00] <FrozenFire> So basically you're arguing for sensibility through obscurity.
1151: [21:40:00] <ec8or> but by having a defined template syntax he picks up what is needed and has an easy transition.. all there is to it
1152: [21:41:00] <FrozenFire> Instead of teaching them a new templating language for every framework in existence.
1153: [21:41:00] <ec8or> i'm saying that templating frameworks are much more similar than different programming languages
1154: [21:41:00] <FrozenFire> How about, instead, just teach your front-end developer a single templating language that will work for every framework they'll ever use in PHP.
1155: [21:43:00] <Pyromanik> the idea of templates is to remove as much 'unfamiliar' syntax as possible IMO, and leave the output looking like output rather than a bunch of c based syntax.
1156: [21:43:00] <Pyromanik> whole reason I started with SS
1157: [21:43:00] <Pyromanik> which I like
1158: [21:43:00] <ec8or> but it is not a massive deal, i am not on the templating commitee... fight for whatever you think is right ;)
1159: [21:43:00] <ec8or> i am quite happy with things the way they are
1160: [21:44:00] <FrozenFire> I don't understand that mentality.
1161: [21:44:00] <Pyromanik> depends what we're talking here.
1162: [21:44:00] <ec8or> FrozenFire: do you work a lot in teams?
1163: [21:44:00] <FrozenFire> They probably shouldn't be involved in your team.
1164: [21:44:00] <Pyromanik> and didn't require me to learn the base technology behind it or design my own application framework.
1165: [21:44:00] <FrozenFire> If someone is so incompetent that they cannot understand a foreach loop...
1166: [21:44:00] * Guest97081 quit (Quit: Guest97081)
1167: [21:44:00] <FrozenFire> What is unfamiliar about PHP?
1168: [21:44:00] <Pyromanik> I wanted a system that worked
1169: [21:45:00] <ec8or> or do you normally do all the work yourself?
1170: [21:45:00] <ec8or> yeah.. figures
1171: [21:45:00] <FrozenFire> I do not
1172: [21:45:00] <Pyromanik> then it's easy for you to say FrozenFire :P
1173: [21:45:00] <FrozenFire> At the moment, I'm a lone ranger slinging cowboy code.
1174: [21:45:00] <FrozenFire> :P
1175: [21:45:00] <FrozenFire> That being said, I think I'm pretty experienced with teaching people.
1176: [21:46:00] <FrozenFire> Templating languages are a crutch
1177: [21:46:00] <FrozenFire> They're dumbed down so that nobody learns how to do things properly.
1178: [21:46:00] <FrozenFire> And you usually end up with a huge mess of confusing scope.
1179: [21:47:00] <tankr> anyone had issues with "template cannot be found" when running scheduled tasks via cli SS2.4..?
1180: [21:49:00] <FrozenFire> Fuck them.
1181: [21:49:00] <Pyromanik> FrozenFire: that's the key point. "nobody learns how to do things properly". 9 times out of 10 these people don't WANT to learn to do things properly.
1182: [21:49:00] <Pyromanik> they'll just hack the most obscene shit and then shrug it off with "it works"
1183: [21:49:00] <FrozenFire> We shouldn't design standard practises around the lazy.
1184: [21:49:00] <Pyromanik> exactly. I'd rather they didn't pollute the web/dev workspace more than they already do
1185: [21:49:00] <Pyromanik> I disagree.
1186: [21:49:00] <Pyromanik> no
1187: [21:50:00] <FrozenFire> Do things right.
1188: [21:50:00] <FrozenFire> I do.
1189: [21:50:00] <Pyromanik> how's that working out for you?
1190: [21:50:00] <FrozenFire> Quite well, actually.
1191: [21:50:00] <FrozenFire> My religious adherence to best practises has landed me a $40/hr gig for a large company doing what I love doing.
1192: [21:50:00] <FrozenFire> :P
1193: [21:50:00] <FrozenFire> Best practises.
1194: [21:50:00] <Pyromanik> tell that to PHP
1195: [21:50:00] <FrozenFire> Design things right.
1196: [21:51:00] <irogue> unrelated: my coworker says "just going to get some fresh air" when he goes for a smoko break. this frustrates me.
1197: [21:51:00] <irogue> FrozenFire: you get $40/hr to masturbate?
1198: [21:51:00] <FrozenFire> Among other things
1199: [21:57:00] * SightUnseen has joined #silverstripe
1200: [21:58:00] * SightUnseen has left #silverstripe
1201: [22:03:00] * xini quit (Quit: Page closed)
1202: [22:03:00] <ARNHOE> ;)
1203: [22:03:00] <ARNHOE> FrozenFire: Where can I apply?
1204: [22:03:00] * xini has joined #silverstripe
1205: [22:04:00] <FrozenFire> It's all about who you know. :P
1206: [22:04:00] <FrozenFire> Also random chance.
1207: [22:13:00] * mobiusnz has joined #silverstripe
1208: [22:16:00] <mobiusnz> back in which game?
1209: [22:16:00] <Pyromanik> mobiusnz: you back in the game?
1210: [22:17:00] <Pyromanik> :D
1211: [22:17:00] <Pyromanik> the ss dev game :P
1212: [22:17:00] <mobiusnz> oh, a little bit
1213: [22:17:00] <mobiusnz> yes it was
1214: [22:17:00] <mobiusnz> ah yeah, well my job description doesn't say anything about web development - I just end up doing it a lot
1215: [22:17:00] <Pyromanik> Was that you that emailed me the other day to get some MX records updated?
1216: [22:17:00] <Pyromanik> haven't seen you hanging around much lately
1217: [22:19:00] * willr quit (Quit: willr)
1218: [22:20:00] <tankr> so I have a template, I have run multiple flush=all etc. but it is not appearing in $_TEMPLATE_MANIFEST at all when I run a task via PHP cli - depsite other templates in the folder appearing in the manifest array...
1219: [22:21:00] <FrozenFire> Permissions?
1220: [22:22:00] <tankr> same perms and owner
1221: [22:24:00] <tankr> yeah, 2.4
1222: [22:24:00] <FrozenFire> If I recall correctly, this was 2.4, yes?
1223: [22:24:00] <FrozenFire> When you are flushing is that the same context in which the template is being searched for?
1224: [22:24:00] <FrozenFire> E.g. is something trying to render that template at the same time?
1225: [22:24:00] * EPIK has joined #silverstripe
1226: [22:25:00] <tankr> FrozenFire: not sure what you mean, running /dev/build?flush=all, then running scheduled task from command line using php cli..
1227: [22:25:00] <tankr> I even have added a controller action test which simply renders this new template - seems to work
1228: [22:25:00] <FrozenFire> Does the user you're using on the CLI have access to your cache_dir?
1229: [22:26:00] <FrozenFire> It may be building the cache separately.
1230: [22:26:00] <tankr> hmm, ok. but the file doesn't appear in the manifest array at all??? whereas all the others do..
1231: [22:26:00] <FrozenFire> Also, is everything configured correctly so as to have it recognize that cache_dir as the one it should be using?
1232: [22:26:00] <FrozenFire> Try doing building and flushing from the CLI
1233: [22:27:00] <tankr> i did try adding flush to the CLI call, I think there were other issues with that
1234: [22:29:00] <tankr> yeah, so it works when specifying other email templates (that already exist) but not my new email template, despite perms being the same, and several /dev/build?flush=all
1235: [22:31:00] <FrozenFire> Yeah, typically I like to have an action on my task controller which lets me preview the email rendering of a single item so that I can flush right then and there
1236: [22:31:00] <FrozenFire> So I know that it's trying to invoke it
1237: [22:31:00] <FrozenFire> That might just be a placebo, though
1238: [22:31:00] <FrozenFire> I've never really looked too deeply into how the autoloader manifesting is done
1239: [22:31:00] * gelignite quit (Quit: http://bit.ly/nkczDT)
1240: [22:33:00] <tankr> ok thanks
1241: [22:33:00] * liam_ has joined #silverstripe
1242: [22:34:00] * liam_ is now known as Guest21971
1243: [22:36:00] <tankr> excuse me while I throw my computer out the window
1244: [22:36:00] * tankr quit (Quit: Leaving.)
1245: [22:37:00] <FrozenFire> Is there a reason, other than backwards compatibility, that the Page.php included with silverstripe/installer is completely retarded?
1246: [22:39:00] * willr has joined #silverstripe
1247: [22:39:00] <FrozenFire> Seems to me that there are two things at the very least with every single install that I have to deal with before I can start: 1) Page.php has a weird controller 2) SiteTree has a Content field by default
1248: [22:40:00] <FrozenFire> Wonder what would break if we moved the Content field into Page and removed the stupid CSS includes in the Page_Controller
1249: [22:40:00] <FrozenFire> Can't imagine much
1250: [22:50:00] <Colin[pi]> why are they stupid? that's where I keep mine
1251: [22:50:00] <Colin[pi]> oh and hai
1252: [22:52:00] <Colin[pi]> so it brings in whatever it needs whenever
1253: [22:52:00] <FrozenFire> Because those are part of the view. Not the controller or model.
1254: [22:52:00] <FrozenFire> They should be included in your main Page.ss
1255: [22:52:00] <Colin[pi]> well the way I see it, Requirements is part of the controller
1256: [22:52:00] <FrozenFire> Yes
1257: [22:53:00] <FrozenFire> It controls.
1258: [22:53:00] <FrozenFire> Yes.
1259: [22:53:00] <Colin[pi]> the view is responsible JUST for rendering the data
1260: [22:53:00] <FrozenFire> Yes.
1261: [22:53:00] * ARNHOE quit (Remote host closed the connection)
1262: [22:53:00] <Colin[pi]> i.e. ignore styling it
1263: [22:53:00] <Colin[pi]> just dumping it out :)
1264: [22:53:00] <FrozenFire> Nope
1265: [22:53:00] <Colin[pi]> well I guess it's part view part controller really
1266: [22:53:00] <FrozenFire> The styling is part of the view, in that regard.
1267: [22:53:00] <FrozenFire> Because it really has nothing to do with the application itself.
1268: [22:54:00] <FrozenFire> It's part of your output.
1269: [22:54:00] <Colin[pi]> I think the themedCSS() call is very powerful
1270: [22:54:00] <FrozenFire> Yes
1271: [22:54:00] <Colin[pi]> so you can pull in whatever modules you want with default css
1272: [22:55:00] * willr quit (Quit: willr)
1273: [22:55:00] <FrozenFire> <% require themedCSS(layout) %>
1274: [22:55:00] <Colin[pi]> aye
1275: [22:55:00] <Colin[pi]> some of my widgets use it in the template
1276: [22:55:00] <FrozenFire> They really should not.
1277: [22:55:00] <Colin[pi]> otherwise, if they call the controller, the method pulls in CSS and JS
1278: [22:55:00] <FrozenFire> Your widget templates in your theme should.
1279: [22:55:00] <Colin[pi]> well you can override the default template in the theme also
1280: [22:56:00] <FrozenFire> The theme should *not* have any connections to the project code.
1281: [22:56:00] <Pyromanik> hey does getCMSValidator get called in CTF popups?
1282: [22:56:00] <FrozenFire> Except through known interfaces.
1283: [22:56:00] <FrozenFire> Your controller exposes interfaces to the view
1284: [22:56:00] <FrozenFire> The view (template) uses those interfaces to invoke functionality of the controller.
1285: [22:56:00] * willr has joined #silverstripe
1286: [22:56:00] <FrozenFire> The Requirements class is an interface to a transformational aspect of the controller
1287: [22:57:00] <FrozenFire> It performs the transformation of injecting <style> or <script> (or whatever) tags into the HTML output.
1288: [22:57:00] <Colin[pi]> WTF are these css calls in the controller??
1289: [22:57:00] <FrozenFire> So you should be.
1290: [22:57:00] <Colin[pi]> shouldn't they be in the template?
1291: [22:57:00] <Colin[pi]> but now they make more sense to me to be in the init()
1292: [22:57:00] <FrozenFire> They really, really do not make sense being there.
1293: [22:57:00] <FrozenFire> The CSS has nothing to do with the controller.
1294: [22:57:00] <Colin[pi]> to me they do ^_^
1295: [22:57:00] <Pyromanik> depends on the depenency of the data I think
1296: [22:57:00] <Colin[pi]> well
1297: [22:57:00] <Colin[pi]> when I first starting using SS
1298: [22:57:00] <FrozenFire> Absolutely, positively nothing.
1299: [22:57:00] <Colin[pi]> but at first I was like WTF
1300: [22:57:00] <Colin[pi]> I was like
1301: [22:58:00] <FrozenFire> No
1302: [22:58:00] <Pyromanik> also can't combine from templates
1303: [22:58:00] <xini> i'm combining all my css into one in the controller. that's why it makes sense to have them there.
1304: [22:58:00] <howardgrigg> UncleCheese: your gridfield buttons look good, why don't you post them to the dev ilst and see if people want them in core?
1305: [22:58:00] <FrozenFire> Put it in the template for the controller's view output.
1306: [22:58:00] <Pyromanik> either or
1307: [22:58:00] <Colin[pi]> so that's something
1308: [22:58:00] <Pyromanik> or push EVERYTHING out to the viewer
1309: [22:58:00] <Colin[pi]> well mine pull in CSS that is common to ALL of my themes
1310: [22:58:00] <Pyromanik> if it's required for some controller element to function correctly, put it in the controller.
1311: [22:58:00] <Pyromanik> if it's to do with the theme, it should be in the theme.
1312: [22:59:00] <Colin[pi]> like I said, when I first started SS, CSS calls in the controller seemed really weird
1313: [22:59:00] <Pyromanik> http://imgur.com/gallery/cQPdDvB
1314: [22:59:00] <Pyromanik> that's a good point
1315: [22:59:00] <Colin[pi]> aye
1316: [22:59:00] <FrozenFire> That's a shortcoming of the controller, then.
1317: [22:59:00] <FrozenFire> Not a good argument for mixing your domains.
1318: [22:59:00] <Colin[pi]> but now, to me, they make total sense
1319: [22:59:00] <xini> yep, to me too.
1320: [22:59:00] <FrozenFire> Well then something has damaged your mind.
1321: [23:00:00] <Colin[pi]> oh that happened long ago :D
1322: [23:00:00] <Pyromanik> concerns, not domains
1323: [23:00:00] <FrozenFire> importance**
1324: [23:00:00] <Colin[pi]> yeah but FF, how DO you do MVC correctly?
1325: [23:00:00] <FrozenFire> Or any design pattern that recognizes the important of separation of domains.
1326: [23:00:00] <FrozenFire> That's absolutely basic and fundamental to MVC
1327: [23:00:00] <Colin[pi]> hehehe
1328: [23:00:00] <Pyromanik> mmm
1329: [23:00:00] <Colin[pi]> time of the month?
1330: [23:00:00] <xini> implement the combining in the template and i will stop using the controller for that.
1331: [23:00:00] <FrozenFire> Requiring CSS should not happen in the controller. There's really no two ways about that.
1332: [23:00:00] <Pyromanik> FrozenFire: you're particularly upity today
1333: [23:01:00] <Pyromanik> Controller grabs it just like it grabs a template
1334: [23:01:00] <Pyromanik> I'd rather have templated CSS
1335: [23:01:00] <Pyromanik> but is a separate entity from the template
1336: [23:01:00] <FrozenFire> View -> template (html, css, javascript)
1337: [23:01:00] <Pyromanik> yes
1338: [23:01:00] <Colin[pi]> no it's not, CSS is a style applied to a view :P
1339: [23:01:00] <Pyromanik> sure it is
1340: [23:01:00] <FrozenFire> It is not.
1341: [23:01:00] <Pyromanik> CSS IS A VIEW
1342: [23:01:00] <Colin[pi]> I don't think anyone does it correctlyh
1343: [23:02:00] <xini> me too
1344: [23:02:00] <Colin[pi]> the CSS and JavaScript are applied to the view, but I consider them separate
1345: [23:02:00] <Pyromanik> IT'S A VEW
1346: [23:02:00] <Pyromanik> do the less business through php and cache it
1347: [23:02:00] <Pyromanik> or
1348: [23:02:00] <FrozenFire> You can have templated CSS, though it doesn't make a lot of sense.
1349: [23:02:00] <Colin[pi]> to me, when I use SS, the template itself, i.e. that does the rendering, that's the view
1350: [23:02:00] <Pyromanik> f this sass business.
1351: [23:02:00] <Pyromanik> I also ^
1352: [23:02:00] <FrozenFire> How does the CSS or Javascript interact directly with your application's code?
1353: [23:03:00] <FrozenFire> Pyromanik, Yes, that's a Javascript template.
1354: [23:03:00] <Pyromanik> no
1355: [23:03:00] <FrozenFire> Yes
1356: [23:03:00] <Pyromanik> yeah, call that from your template.
1357: [23:03:00] <FrozenFire> It's part of your view output.
1358: [23:03:00] <Pyromanik> your argument is invalid.
1359: [23:03:00] <Pyromanik> boom
1360: [23:03:00] <Colin[pi]> and have been for years
1361: [23:03:00] <FrozenFire> Is it part of your output, or is it being run on your webserver?
1362: [23:03:00] <Pyromanik> templatedJavascript
1363: [23:03:00] <xini> AJAX
1364: [23:03:00] <Colin[pi]> but really devs could have theser circular arguments about MVC all day
1365: [23:04:00] <Colin[pi]> I hate embedding it in the template now
1366: [23:04:00] <FrozenFire> Nope.
1367: [23:04:00] <FrozenFire> The only reason you cannot in SS, is a shortcoming of the SS templating system.
1368: [23:04:00] <Pyromanik> you misunderstand
1369: [23:04:00] <Pyromanik> nope
1370: [23:04:00] <Pyromanik> otherwise suddenly your viewer is becoming a controller in itself.
1371: [23:04:00] <Colin[pi]> I think pulling in CSS and JS via the controller is a very neat and tidy, centralised way of pulling it in
1372: [23:05:00] <FrozenFire> That's it.
1373: [23:05:00] <Pyromanik> no, I use <% require %>
1374: [23:05:00] * kent_ has joined #silverstripe
1375: [23:05:00] <FrozenFire> A view needs to be deterministic and not have side-effects.
1376: [23:05:00] <Colin[pi]> yes
1377: [23:05:00] <FrozenFire> As long as your view is not performing computation, and is acting statically upon its inputs, it's still a view.
1378: [23:05:00] <Colin[pi]> let SS handle when and where it pulls it in
1379: [23:08:00] <FrozenFire> Colin[pi], When you want to replace your theme, what do you do?
1380: [23:08:00] <FrozenFire> You replace your controller as well?
1381: [23:08:00] <FrozenFire> That's completely defeating the purpose of separating your domains/concerns.
1382: [23:08:00] <Colin[pi]> no, I drop in a compatible theme
1383: [23:08:00] <FrozenFire> There should be a common interface between each concern.
1384: [23:09:00] <FrozenFire> Swapping out one component should not break the others.
1385: [23:10:00] <Colin[pi]> yeah but the view is intrinsically tied to the model/controller... say my model has a Slider object (which it does). If I change the theme, do I want that part of the model to disappear or not to be used?
1386: [23:10:00] <Colin[pi]> essentially my stuff is a combination of two areas: common library/platform used on all my sites, and stuff just pertaining to the theme itself
1387: [23:11:00] <FrozenFire> The guy who takes over might not use the same theming scheme as you.
1388: [23:11:00] <FrozenFire> That you have your own mental system that makes sense to you is beyond the point.
1389: [23:11:00] <FrozenFire> Maybe he'll use a CSS norma-reset-ifty.css
1390: [23:12:00] <spronk> takes a bit of effort..
1391: [23:12:00] <FrozenFire> And now your controller is sitting there including normalize.css
1392: [23:12:00] <FrozenFire> So he has to go into your controller and remove that
1393: [23:12:00] <FrozenFire> And now it's out of sync with the rest of your projects using the same code.
1394: [23:12:00] <spronk> got the oauth module working
1395: [23:13:00] <Colin[pi]> like I said, the combination of common and theme-specific works for our needs :)
1396: [23:14:00] <FrozenFire> I cannot conceive of a single reason to put your CSS includes in your controller.
1397: [23:14:00] * tankr has joined #silverstripe
1398: [23:14:00] <FrozenFire> What advantage is there to including your CSS from your controller?
1399: [23:14:00] <FrozenFire> And it retarded. There are better, more sensible ways to do it.
1400: [23:14:00] <Colin[pi]> why does SS itself not do it then, throughout the entire core?
1401: [23:15:00] <Colin[pi]> isn't it?
1402: [23:15:00] <Colin[pi]> dynamic inclusion of required CSS depending on configuration of the model/controller - otherwise it's ALWAYS getting pulled in via the templates
1403: [23:16:00] <FrozenFire> In what situation do you need to dynamically include CSS in your theme?
1404: [23:16:00] * willr quit (Quit: willr)
1405: [23:16:00] <FrozenFire> If you're rendering a ViewableData that needs certain CSS, then put it in that template.
1406: [23:16:00] <spronk> templates should export their css requirements and the controller should handle including them, but hmm
1407: [23:17:00] <FrozenFire> If you need to conditionally include that CSS, then simply put the conditional in your template.
1408: [23:17:00] <FrozenFire> Or better yet, use classes on the element.
1409: [23:17:00] <FrozenFire> That's what they're for.
1410: [23:17:00] <FrozenFire> Always include the style.
1411: [23:17:00] <Colin[pi]> its all semantics frozenfire, people have had similar discussions about the seperation of concerns in MVC for decades
1412: [23:17:00] <FrozenFire> Apply it using classes.
1413: [23:17:00] <Colin[pi]> no one does it right
1414: [23:17:00] <FrozenFire> Don't leave hanging, hardcoded CSS includes in your controller to mess up your day when you *don't* want that CSS included.
1415: [23:17:00] <Colin[pi]> ick, conditionals in templates :D
1416: [23:18:00] <FrozenFire> Eh, kindly fuck yourself.
1417: [23:18:00] * Colin[pi] hands FrozenFire a maxipad
1418: [23:18:00] <Colin[pi]> lol dude
1419: [23:18:00] <FrozenFire> Don't know why you needed to turn the conversation into a flamewar.
1420: [23:18:00] <FrozenFire> There's nothing semantic about this.
1421: [23:18:00] <FrozenFire> It's not semantics.
1422: [23:18:00] <Colin[pi]> I'm not trying to get into a flame war dude
1423: [23:18:00] <FrozenFire> The view handles the output to the client
1424: [23:19:00] <Colin[pi]> it's a joke dude, call off the dogs
1425: [23:19:00] <kent_> *grabs popcorn*
1426: [23:19:00] <FrozenFire> Insulting me tends to conflict with that statement.
1427: [23:19:00] <Colin[pi]> we have differents way of doing it, that's fine, just stating my case
1428: [23:19:00] <FrozenFire> Yes. And I'm stating why you're wrong.
1429: [23:19:00] <Colin[pi]> sorry if I offended you :D
1430: [23:20:00] <Colin[pi]> y hello thar
1431: [23:20:00] * willr has joined #silverstripe
1432: [23:20:00] <kent_> Hello peeps. Been a while!
1433: [23:21:00] <kent_> Question time..
1434: [23:21:00] <kent_> how do people not get stuck in a company with an immovable tech stack
1435: [23:21:00] <FrozenFire> Leverage
1436: [23:22:00] <FrozenFire> Someone has to have the technical knowledge and the leverage to make decisions.
1437: [23:23:00] <kent_> Leverage. Typically not found when young ;)
1438: [23:24:00] <kent_> Jealous you had the ability to make change.
1439: [23:24:00] <FrozenFire> Also went from managing source code in zip files, to using a gitolite server to handle git repositories for each project.
1440: [23:24:00] <FrozenFire> Also went from GoDaddy hosting to a formalized cloud hosting situation on Rackspace.
1441: [23:24:00] <FrozenFire> Now you'd never find such a thing.
1442: [23:24:00] <FrozenFire> All comingled.
1443: [23:24:00] <FrozenFire> Meh. I'm 23. I was 22 when I started this job. When I started here, everything was written by hand as mixed PHP + HTML + SQL
1444: [23:25:00] <Colin[pi]> yeah it's hard coming into a company with a shitty legacy :\
1445: [23:25:00] * Guest21971 quit (Quit: Guest21971)
1446: [23:25:00] <FrozenFire> The management doesn't actually care how it happens.
1447: [23:25:00] <Colin[pi]> yeah sometimes you just need to educate people
1448: [23:25:00] <FrozenFire> Better results.
1449: [23:25:00] <FrozenFire> That's all that's required.
1450: [23:25:00] <kent_> attaboy ;0
1451: [23:25:00] <FrozenFire> And I produced better results.
1452: [23:25:00] <FrozenFire> I simply said, this is how I'm doing it now.
1453: [23:25:00] <FrozenFire> I didn't even have all that much leverage.
1454: [23:26:00] <FrozenFire> They might pretend they do, because they want to look like they're in charge.
1455: [23:26:00] <FrozenFire> But it likely would've anyways.
1456: [23:26:00] <FrozenFire> That can of course go sideways, as a mentality, in the hands of the wrong person.
1457: [23:26:00] <Colin[pi]> yep sounds about right
1458: [23:26:00] <FrozenFire> If you ask them, they'll say no.
1459: [23:26:00] <FrozenFire> But in reality, if you simply ask for forgiveness rather than permission, you get shit done.
1460: [23:26:00] * willr quit (Quit: willr)
1461: [23:27:00] <Colin[pi]> having management that will listen is very helpful
1462: [23:28:00] <Colin[pi]> I had one job where my boss wouldn't listen to advice, and very often got it wrong
1463: [23:28:00] <FrozenFire> My current boss/client is very technically knowledgeable.
1464: [23:28:00] <FrozenFire> Certainly. Though, even the best of managers in that regard are often intransigent
1465: [23:28:00] <Colin[pi]> had to hold myself from saying "I told you so"
1466: [23:29:00] <FrozenFire> He's also, at the very least, is respectful of "doing it right"
1467: [23:29:00] <FrozenFire> And more often than not, he'd say "Now", just because he wanted to see the income happen right then and there.
1468: [23:29:00] <FrozenFire> I'd often have to ask "Am I going to do it now, or do it right?"
1469: [23:29:00] <FrozenFire> But being in a managerial position, with the income being his primary concern, he could often not see the forest for the trees.
1470: [23:30:00] <FrozenFire> We had one giant fuck-up that cost us an entire sector's worth of business, and I basically said, we're going to do it right, now.
1471: [23:31:00] <FrozenFire> Which is to say, we had a lot of eggs in one basket, and mismanagement resulted in that basket being dropped.
1472: [23:31:00] <FrozenFire> Took some time to recover, but in that time I developed us a product that has been the core of our entire income since then.
1473: [23:31:00] * liam_ has joined #silverstripe
1474: [23:31:00] <Colin[pi]> familiar story
1475: [23:32:00] * liam_ is now known as Guest88028
1476: [23:32:00] <FrozenFire> Funny enough, he was rather... opposed to the time I was spending developing that product on his dime.
1477: [23:32:00] <FrozenFire> But I basically just kept siphoning time off of my regular workload to work on the product.
1478: [23:34:00] <kent_> all good points, thanks guys.
1479: [23:34:00] <FrozenFire> The company's still circling the drain as a result of some mismanagement (undirected focus), but its circling widened for a good period of time, there. :P
1480: [23:36:00] * ajshort has joined #silverstripe
1481: [23:36:00] <ajshort> sminnee: Could you take a look at https://github.com/ajshort/sapphire/commit/93634b8ef97b199a9cd777733216c17f9bbca3fb - any thoughts?
1482: [23:37:00] <Colin[pi]> I worked for too many places that had "too many chiefs, not enough indians"
1483: [23:37:00] <Colin[pi]> one place had like 45 managers, and 5 people actually doing some work
1484: [23:37:00] <Colin[pi]> doomed to failure
1485: [23:37:00] <FrozenFire> Heh. Here there's basically just two people.
1486: [23:37:00] <FrozenFire> My boss/client (technically a client, but I do all of my current work for him), and me.
1487: [23:38:00] <FrozenFire> But, my plan is to move on.
1488: [23:38:00] <Colin[pi]> that was how it was in my last job, for a looong time
1489: [23:38:00] <FrozenFire> Bigger and better things.
1490: [23:39:00] <FrozenFire> Hate to see him fail, though. There's absolutely nothing wrong with the guy other than that he's incapable of cutting losses.
1491: [23:39:00] <FrozenFire> Hopefully I'll be able to part ways in such a way as to let him hire someone on in my place.
1492: [23:39:00] <Colin[pi]> mm
1493: [23:40:00] <FrozenFire> I can barely handle some of the shit I'm tasked with here, and the job I'm moving on to is twice the pay.
1494: [23:40:00] <FrozenFire> But I can't imagine he'll be able to hire someone of commensurate skill at the same rate
1495: [23:41:00] <Colin[pi]> cool, good luck frozenfire
1496: [23:41:00] <Colin[pi]> pages are dataobjects :D
1497: [23:41:00] <azureKnight> Hmm??? So the more I look at doing this, I'm getting totally overwhelmed at the thought of trying to make data objects render as pages??? Lol.
1498: [23:41:00] <FrozenFire> In terms of workload, anyways.
1499: [23:41:00] <FrozenFire> azureKnight, It's actually pretty darned simple.
1500: [23:42:00] <FrozenFire> E.g. public function item($request) { $item = MyObject::get()->byID($request->param("ID")); if(!$item) return $this->httpError(404); return $item->renderWith(array("MyObject", "Page")); }
1501: [23:42:00] <azureKnight> Really?
1502: [23:42:00] <azureKnight> Ok.
1503: [23:42:00] <Colin[pi]> yeah page inherits from dataobject
1504: [23:42:00] <azureKnight> I'm aware of them being that, but the way of doing it outside of using site tree has always baffled me.
1505: [23:42:00] <FrozenFire> azureKnight, The most basic part of it is simply an action on your controller which looks for the right dataobject to view, and then renders it with a given template.
1506: [23:43:00] <FrozenFire> That's the absolute most basic version of it.
1507: [23:43:00] <FrozenFire> Then you'd have myobjects/item/<id>/
1508: [23:43:00] <FrozenFire> Where myobjects is the controller. That could be a Page_Controller (ContentController)
1509: [23:44:00] <azureKnight> Ok.
1510: [23:45:00] <azureKnight> http://sspaste.com/paste/show/512fec1194517
1511: [23:45:00] <FrozenFire> The SiteTree is really just a concept.
1512: [23:45:00] <FrozenFire> ContentController basically just acts as more succinct way of handling the "item" action.
1513: [23:46:00] <FrozenFire> BasicVideo::get(), yes
1514: [23:46:00] <azureKnight> Here, let me get this.
1515: [23:46:00] <FrozenFire> (Or wherever your BasicTraining page is)
1516: [23:46:00] <FrozenFire> Then you could do training/item/<id>
1517: [23:47:00] <azureKnight> http://sspaste.com/paste/show/512fec1194517
1518: [23:48:00] <FrozenFire> That'd be how to filter a has_many by ID
1519: [23:48:00] <azureKnight> I'd put that in the public function?
1520: [23:48:00] <FrozenFire> Well, in that case you'd do $this->BasicVideos()->filter("ID", $request->param("ID"))->First()
1521: [23:48:00] <azureKnight> Ok.
1522: [23:49:00] <FrozenFire> Because you're wanting to filter a list of items you have already defined
1523: [23:49:00] <azureKnight> Er. public function item?
1524: [23:49:00] <FrozenFire> In place of BasicVideos::get()->byID(...)
1525: [23:50:00] * Guest88028 quit (Quit: Guest88028)
1526: [23:50:00] <azureKnight> Right.
1527: [23:50:00] <FrozenFire> BasicVideo::get() would get all BasicVideo items in your database
1528: [23:52:00] <azureKnight> I want to limit it to the ones related to the current page.
1529: [23:52:00] <azureKnight> Alright, I did that.
1530: [23:52:00] <azureKnight> Right.
1531: [23:53:00] <FrozenFire> Heh. Funny enough, this is probably the exact sort of site that my company's core product handles.
1532: [23:54:00] <azureKnight> Hmm. I should probably have some sort of statement to handle the url-segment generation.
1533: [23:55:00] <azureKnight> Hmm.
1534: [23:55:00] <FrozenFire> Nope
1535: [23:55:00] <azureKnight> Do you have some sort of on-after-write statement?
1536: [23:55:00] <FrozenFire> Yeah. I typically have a URLSegment Varchar field on my items
1537: [23:56:00] <FrozenFire> There's an example of a way I handle it
1538: [23:56:00] <FrozenFire> http://www.sspaste.com/paste/show/512feea50d418
1539: [23:56:00] <FrozenFire> One sec
1540: [23:57:00] <azureKnight> Hmm. Mind if I give that a shot in mine?
1541: [23:57:00] <FrozenFire> Feel free
1542: [23:57:00] * SphereSilver quit (Remote host closed the connection)
1543: [23:57:00] <FrozenFire> Specifically public function getURLSegment() { return $this->getField("URLSegment")?:(URLSegmentFilter::create()->filter($this->MenuTitle)?:$this->ID); }
1544: [23:58:00] <azureKnight> Thanks.

These logs were automatically created by ss-log on irc.freenode.net.