-
So, it's up... I disabled all plugins, installed the stuff, re-enabled all plugins; I also updated the database structure manually before, using the same code as in install.sql.
Here's a first one... Click on a profile link, get this:
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'ifnull'
File: /Sources/ManageInfractions.php
Line: 587
I don't know if it's a bug due to my version of phpmyadmin and how it handled my addition, but it's still something I think needs to be pointed out.
Posted: May 6th, 2013, 09:17 PM
Fixed manually through phpMyAdmin; declaration by declaration... Arghh -_-
Did wedge_infractions, while I was at it, even though I didn't get any errors for that one.
-
Yeah, that's not setting the table up properly. The installer normally forces the collation properly on install so that everything has the same collation (which should be utf8_unicode_ci IIRC) but if you don't manually specify it on adding tables or columns yourself, it'll use whatever the default for the server is, which looks like utf8_general_ci.
-
Yeah, not too cool... :-/
I noticed that plenty of my tables (the ones I added manually year after year...) were in general_ci collation. Uh. Well, as long as it doesn't crash, I guess there's no reason to change it..? (Performance...?? I don't think so..?)
Also, did you look into the session issue? Not that I can't add an isset() test to get rid of the error, but I wanted you to be able to see by yourself, uh....
Oh, and an issue, I'm sure you're aware of it: 'Infraction log' in the board index actually leads to the Moderation log.
Posted: May 6th, 2013, 09:48 PM
Also, for design reasons, the Error log link should have the number of errors next to it, rather than in the title attribute...?
-
Uh. Well, as long as it doesn't crash, I guess there's no reason to change it..? (Performance...?? I don't think so..?)
There is no real performance difference but I seem to recall that unicode_ci is more accurate than general_ci, but it's been a while.Also, did you look into the session issue? Not that I can't add an isset() test to get rid of the error, but I wanted you to be able to see by yourself, uh....
You mean the error I stopped getting once I cleared my cookies and relogged in (forcing a rebuild of my session's mod cache)?
I saw that when I first wrote that code, and as soon as the mod cache is rebuilt the error goes away.Oh, and an issue, I'm sure you're aware of it: 'Infraction log' in the board index actually leads to the Moderation log.
Yes, because there *isn't* an infraction log yet... think I mentioned that in the changelog that I hadn't written it yet.Also, for design reasons, the Error log link should have the number of errors next to it, rather than in the title attribute...?
Adding that is tricky because of the fact that the board index template is reused exactly as-is, so the 'board name' would have to include the number, which would propagate into the title as well. If we made a new part of the template for that, then we would have no such restrictions.
-
Didn't read the changelog yet. Actually, I'm instead reading the diff patch directly... :^^;:
It's a huge beast, ah ah.
I'm pretty sure the template can be fixed to show an optional .note box next to board names, either saying $txt['new'] as it does now, or a number to indicate the number of new entries, etc... Instead of just having the 'new' array entry.
-
We can do that. We can even go and make a complete new template just for those.
Posted: May 6th, 2013, 10:12 PM
The one problem with doing that, though, is that the implication is we should fetch the number of topics applicable in each case thereafter which is not cheap. Consistency FTW.
-
One problem with sessions... In Chrome for Android, I can't remove cookies for an individual site, and I don't want to have to re-log in everywhere (I have 80+ tabs, and quite a few with authentication), just so I don't get these frigging errors anymore... -_-
Is there another way to fix that, then..?
-
In Chrome for Android, I can't remove cookies for an individual site
I find it hard to believe it can;t be done, even iOS can do that :P I suspect it's buried in the settings like it is with Chrome desktop.
I really do not want to create an !empty test, as quick as it might be, for something that *no other user will ever encounter*.
-
In Boards.template.php, foreach ($child['display'] as $item => $string) ---> $string is never used... Is this a placeholder for something in the future, or something you forgot to clean up...? If the latter, may I simply rewrite the Boards.php code to remove the associative arrays and just have something simpler..?
What I've done so far, is add an extra 'note' parameter with anything in it. If empty, don't bother. If set, then just so a <span class="note"> with it as the content, and no link. (No sure it's worth linking it... After all, there's a link just next to it..?!)In Chrome for Android, I can't remove cookies for an individual site
I find it hard to believe it can;t be done, even iOS can do that :P I suspect it's buried in the settings like it is with Chrome desktop.
It's the removal of ALL cookies that's buried in the settings...
And I don't know of any settings to remove an individual cookie in Chrome; all I know is that I do Inspect Element, then Resources, then Cookies, and there's an option to remove them here.I really do not want to create an !empty test, as quick as it might be, for something that *no other user will ever encounter*.
........ :-/
How, can't I just force all sessions for 'Nao' to be removed from the database..?
Bed time. Haven't even started doing translations yet...!
-
If the latter, may I simply rewrite the Boards.php code to remove the associative arrays and just have something simpler..?
You can rewrite where it's defined in Subs-BoardIndex.php if you like, since that's where it's defined.
Oh, and $string might not be used, but was $item used? (Since there's no way to iterate over an array just having its keys, unless you grab array_keys then foreach over that)What I've done so far, is add an extra 'note' parameter with anything in it. If empty, don't bother. If set, then just so a <span class="note"> with it as the content, and no link. (No sure it's worth linking it... After all, there's a link just next to it..?!)
So, again, are you going to do the same with everything else for consistency?And I don't know of any settings to remove an individual cookie in Chrome; all I know is that I do Inspect Element, then Resources, then Cookies, and there's an option to remove them here.
I couldn't find anything about it with a quick search but that's because I don't have a single Android device to look at.How, can't I just force all sessions for 'Nao' to be removed from the database..?
If you can find it, sure. That's not very easy either. :/
log_online will tell you what user id is attached to a given session.
-
Oh, and $string might not be used, but was $item used? (Since there's no way to iterate over an array just having its keys, unless you grab array_keys then foreach over that)
Sorry, I was probably too tired and missed the use of $string... Eh!
It's a bit complicated, although I understand the idea:
- for each virtual board, store one or more random variables,
- then store a display variable that holds all of the random variables, associated with a number_context array,
- at display time, build the title from the number_context array, using the values in the random variables.
It seems to me like overkill for something that few people are going to notice, since it requires them to hover the link, and wait for a second...
Which is why it seemed more natural to me to use a note class next to the board name. Perhaps, we could associate that note class with a title that gives more information on the number, similar to what you did. Perhaps force the note, even if 0 items are in there, but with a notenice class, instead..?
Dunno for sure.
While I'm at it -- I uploaded here a custom version where the number of errors is shown next to the error log link, so that you can get an idea of how it looks... I think it's quite alright that way; but I'm not committing anything without your input anyway. (Plus, I'll probably want to rewrite; or you.)So, again, are you going to do the same with everything else for consistency?
For moderation boards, you mean..? Or for all boards?I couldn't find anything about it with a quick search but that's because I don't have a single Android device to look at.
There are Android emulators for Windows around, although it's not fun to install them (Android SDK, uh... Takes like an hour to configure properly, or something.) There are also programs that allow you to run Google Play and thus some Android apps, like "BlueStacks", I tried one this morning while writing this post, but I couldn't get Chrome to run on it, so I guess it's a pass... Didn't try other browsers, though, but I suspect they'll work. It's only about being able to run the program in an x86 Android environment, such as the Motorola Razr i...log_online will tell you what user id is attached to a given session.
That's what I was planning to do yesterday, but you managed to fix it for me, thanks ;)
-
- for each virtual board, store one or more random variables,
- then store a display variable that holds all of the random variables, associated with a number_context array,
- at display time, build the title from the number_context array, using the values in the random variables.
Correct. See, this way we can have as many items for the posts/topics box as we like and it's not enforced as being 'posts' or 'topics' - the same mechanism allows us to have 'open/closed bug reports', 'redirects', 'posts/topics' or even SimpleDesk's departments' worth of open/closed tickets, and all do it without any more changes anywhere.For moderation boards, you mean..? Or for all boards?
All boards. Either the moderation board behaves like regular boards because it looks like one, or we make all boards act like the moderation board, or we do something totally different presentation-wise for the moderation boards. It should be behaviourally consistent with the other boards.
-
What do you think of my suggestions above..?
Also, an issue with moderation boards... Thing is, Wedge.org has the board list on index, but I'm always two inches from replacing it with either a quick list in the sidebar, or just a link somewhere to /do/boards/... But at this point, if I do that -- the moderation area is gone, too. Maybe they should be separated, code-wise..?
-
What do you think of my suggestions above..?
Same as I've said all along: if you put the note stuff next to boards, you pretty much *need* to do it for ALL the other boards because it'll look inconsistent otherwise.
The look works, but I'm distinctly concerned that people will expect it everywhere else, which has serious performance implications.But at this point, if I do that -- the moderation area is gone, too. Maybe they should be separated, code-wise..?
It should be where the boardindex. If that's not the front page, that's fine, because a lot of people will still go to the boardindex anyway.
-
Okay, I'll give up on that then...
I'm having trouble with the translation overall.
"Issue an infraction"... I get the idea, but isn't an infraction the *cause* of the warning? I do an infraction, you give me a warning.
At least in French... (Infraction comes first, avertissement/warning comes second, punition or sanction (punishment) comes last.)
I'm tempted to keep the earlier terminology in the French version (Sanction, avertissement...), but maybe I should wait until I understand the concept better, maybe...
-
Well... yes and no. But you'll notice from the code that I changed terminology part way through (all the code references 'sanctions' but the user wording references 'punishments')
It's a hard one to call but yes, I think you're ultimately right. I'm quite amenable to the wording being changed. At this stage I'm still recovering from the last month enough to not be too worried about picky bits ;)
OK, here's the developmental mindset behind it. In SMF terms, you'd issue a warning. The warning was simply an increase (or, helpfully, a decrease) to the current % of warning on their account. It was an overall fluid state for their account, and cumulative the sum of moderators having their say on a user's account. The thing is, you can have 3 moderators issuing modest (20%) warnings for separate matters and leave the user post banned as a consequence.
In Wedge, however, it doesn't work like that. The idea is that you make the punishment fit the crime and that you have punishments tied to a given warning. The warning carries points and/or punishments (and the points can lead to punishments of their own for general unpleasant behaviours)
So if you have a user who has an inappropriate signature, issue something for that signature and remove it - and if it forms part of a collection of a larger penalty, so be it.
-
Im my mind I've always translated issuing an infraction as issuing a "notice of infraction" which tells he user what they did wrong and what action if any have been taken.
A warning I've always thought to be non-action response meaning: User A seems to be trolling a bit.. I'd issue an infraction in the form of a warning that carries no points or punishments.. just a quick note to say trolling is against the rules blah blah. This warning stays in the users infraction log so another moderator can see this user has already been warned about trolling so future action may include point or other necessary actions.
Where was i going with this again, heck I cant even remember what prompted me to reply here.... :hmm:
-
I currently have a member at my forum on post moderation. Sometimes we put certain types of members on either post moderation or we restrict them to an "Isolation Tank" which by permissions is the only board they can see when logged in, rather them ban them, even though a ban would be justified. I won't go into the psychology here, but certain of our "customers" would consider a ban as a Gold medal to brag about to people at other forums. I don't want to give them that Gold medal, so we just let them burn out on post moderation or fight it out until they get bored in the Isolation Tank. It's sortof like a question of sending a convict to life in prison or to death row. Sometimes life locked up is a worse punishment. :)
-
Well... yes and no. But you'll notice from the code that I changed terminology part way through (all the code references 'sanctions' but the user wording references 'punishments')
Punishment seems a bit 'extreme' to me..?It's a hard one to call but yes, I think you're ultimately right.
I was only asking if it was proper English, as I'm learning something new every day anyway... ;)I'm quite amenable to the wording being changed. At this stage I'm still recovering from the last month enough to not be too worried about picky bits ;)
Take your time. I'll commit my French translation first, and then you can fine-tune the English one later if you want.In Wedge, however, it doesn't work like that. The idea is that you make the punishment fit the crime and that you have punishments tied to a given warning. The warning carries points and/or punishments (and the points can lead to punishments of their own for general unpleasant behaviours)
Sounds fun... ;)So if you have a user who has an inappropriate signature, issue something for that signature and remove it - and if it forms part of a collection of a larger penalty, so be it.
Indeed.
My only fear is that admins would find it too *complete*, and thus complex...
Of course, Wedge isn't exactly targeted to newbies!
-
Punishment seems a bit 'extreme' to me..?
Then find me a word that means 'you've been naughty and you lose some privileges' that isn't so 'extreme' ;)My only fear is that admins would find it too *complete*, and thus complex...
Of course, Wedge isn't exactly targeted to newbies!
I'd argue it actually seems more natural since there are analogues to this one in real life (e.g. points on a driving licence and/or bans for a period of time)
-
Action
-
I know this is still WIP but just a suggestion on the verbiage when viewing the infraction section in our own profiles.
"From here you can see every infraction issued for this member"
**Here you can see all infractions you have received**
"This person has not received any infractions before now."
**You have not received any infractions**
As it is now it reads as though a moderator/administrator is viewing a user's profile.
-
@Arantor, apart from 'Infractions' needing to be renamed to 'Sanctions', I think you also fluctuated between "Pre-set infractions" and "Adhoc infractions", maybe you should rename Adhoc to Pre-set because it's easier to understand, or maybe I didn't get these were two different things...? :unsure:
+1 @spoogs
-
No, they are two separate things and designed that way.
Pre-Set Infractions are ones the admin defines outright. Ad-Hoc Infractions are whether users can customise/send very specific ones.
If you want a user to only be able to issue minor warnings, you create them as pre-set infractions and don't give them any options for ad-hoc infractions.
(pre-set means predefined, ad-hoc means set on the go)
In other news I am slightly concerned that I made screenshots of almost all of this stuff and it wasn't mentioned at the time when they contained the same wording.
-
OK, I found a bug, I wanted to pull up the UI for something here, but something very strange happened.
Specifically, a warning for the post above mine here (at least, there was something random I wanted to check out), now there's an error regarding issue_warning_self, I'll fix that in a minute.
But here's the weird part. The above post generates the URL:
profile/?u=1;area=infractions;warn;for=post:288772
Not profile/Nao as would normally be generated, which makes it pull up *my* profile for some reason which upsets the infractions code by rightly telling me that I can't issue a warning to myself (or it would if I didn't flub the error message definition)
I'm guessing it's related to the fact I have a hokey parameter in the URL but I'm willing to amend the formatting if that's any help.
@Nao, I'm really not comfortable touching pretty URLs code, so I'd like you to take a look at it but if that means altering the format to post.id rather than post:id, that's fine.
-
In other news I am slightly concerned that I made screenshots of almost all of this stuff and it wasn't mentioned at the time when they contained the same wording.
I only caught up with your screenshot topic yesterday (!), so I couldn't have caught it.
I'd recommend you do an overall review of the words 'infraction' and 'punishment' in your language files, and modify them to 'sanction' as needed.
Posted: May 10th, 2013, 04:58 PM
But here's the weird part. The above post generates the URL:
profile/?u=1;area=infractions;warn;for=post:288772
Which is using a reserved character... :-/
Colons are used to represent the port, and I think that because of that, the ISO standards determined that they shouldn't be used in the query string either, although technically it's accepted by all browsers.Not profile/Nao as would normally be generated, which makes it pull up *my* profile for some reason
Even with the u=1 in it..?!@Nao, I'm really not comfortable touching pretty URLs code, so I'd like you to take a look at it but if that means altering the format to post.id rather than post:id, that's fine.
I'll take a look, right now.
-
I'd recommend you do an overall review of the words 'infraction' and 'punishment' in your language files, and modify them to 'sanction' as needed.
See, in English, sanction is a stronger word than punishment; I changed it to punishment for that reason.Colons are used to represent the port, and I think that because of that, the ISO standards determined that they shouldn't be used in the query string either, although technically it's accepted by all browsers.
In which case I'll just fix it to use , instead of : no biggie.Even with the u=1 in it..?!
Yup, even with the u=1 in it. Try to warn me for one of my posts, you should see that it gives you a URL with my user id in it but throws an error to you for trying to warn yourself.
Off hand I'd say that because of the /profile/ URL it's routing to the profiles action but it's then expecting a name rather than a u= and failing to catch it.
-
Ah, yes, now I remember...
Profile URLs are prettified by looking for ;u=[0-9]+ in them. Which, at this point, does NOT happen, because it's ;u=%2%, i.e. the special variable...
If you'll look at the user box menu, the IP tracking link is the same -- doesn't get prettified at all.
I don't think it's a big deal for admins and mods to have non-prettified URLs, but I'll have to fix the bug that occurs when you click the link, I guess...!
Posted: May 10th, 2013, 05:21 PM
See, in English, sanction is a stronger word than punishment; I changed it to punishment for that reason.
Oh, I see... Well, it's the opposite in French, I'd say... (?)In which case I'll just fix it to use , instead of : no biggie.
Nope, it's okay to use it, I simply thought I might have 'forbidden' it for ISO reasons, which I didn't. I don't really mind either way...
Fixed here, BTW! It was a logic error in QueryString.php, ah ah... Will commit later.
-
Tried disemvowelling (sp?) posts from a test account locally.
One post just said "No idea."
As a result, the post was "N d."
Not very readable, actually...
I'd instead suggest scrambling all words, except for the first and last, as it was the subject of an amusing meme a few years ago, and I think it still keeps the whole thing readable...
Also, a bigger bug I'd say: if I go through /profile/test-account/, and click Show posts, there they are... All of his posts, untouched.
Posted: May 12th, 2013, 03:32 PM
(I just noticed that 'disemvowel' was a play on 'disembowel', ah ah... Well, you can't blame me for my English :P But I did notice that it was strange to have an 'm' in it, considering the rule that it should only be before a 'b' or another 'm'... At least in French.)
Posted: May 12th, 2013, 03:35 PM
So... This is my personal take on it: (in Subs-BBC)
$part = htmlspecialchars(preg_replace_callback('~(?<=\b[a-z])([a-z]{2,})(?=[a-z]\b)~i', 'wedge_callback_str_shuffle', $part), ENT_QUOTES, 'UTF-8');
Followed, at the end, by:
function wedge_callback_str_shuffle($match)
{
return str_shuffle($match[0]);
}
Feel free to re-use the code unmodified, or modified, or to just forget about my suggestion... ;)
-
Tried disemvowelling (sp?) posts from a test account locally.
One post just said "No idea."
As a result, the post was "N d."
Not very readable, actually...
That's essentially an edge case.Also, a bigger bug I'd say: if I go through /profile/test-account/, and click Show posts, there they are... All of his posts, untouched.
Oh, yes, that needs to be handled.(I just noticed that 'disemvowel' was a play on 'disembowel', ah ah...
I didn't coin the term, but it's cute.So... This is my personal take on it: (in Subs-BBC)
Why can't we have both? If that looks like what I think it looks like then hell yes. Let's do both!
-
Oh, yes, that needs to be handled.
I guess it's related to giving the user ID to parse_bbc beforehand..?Why can't we have both? If that looks like what I think it looks like then hell yes. Let's do both!
Well, no reason not to do both ;)
I'll let you handle it though, don't have time today, I was working on fixing a thought bug (commit coming later), and have run out of coding time... :^^;:
-
I guess it's related to giving the user ID to parse_bbc beforehand..?
Yup.Well, no reason not to do both
I already refactored the disemvowel code to not duplicate all the tag handling between 'disemvowel' and 'scramble' but I'm not entirely happy yet with it.
-
See, in English, sanction is a stronger word than punishment; I changed it to punishment for that reason.
Oh, I see... Well, it's the opposite in French, I'd say... (?)
Bumping this. I feel that we really need to 'fix' the use of the word 'infraction' in the English version, when 'punishment/sanction' is expected.
Any suggestions, from anyone, about a replacement word that wouldn't feel as 'threatening' as Pete fears..?
-
How about 'Penalty' ?
-
Ah, yes, that was one of the words used by Pete in the language files, if I'm not mistaken (along with Infraction, Sanction and Warning -- the latter referring, apparently, to the action of 'sending a sanction notification', but I'm not sure at this point, because some strings seem to see it as a synonym to 'infraction'... I told you, I'm lost!)
I'm fine with Penalty, or anything else really, anything that makes Pete happy ;)
-
I'm really not that worried about language changes. Most of this stuff is Just My Opinion (tm) and if others have better suggestions I'm all for changing them.
As long as the language is consistent to users, I don't really mind.
All I'd say is that I started from the premise that a warning is just a warning, a message just to say 'don't do it again', and that infraction is 'don't do it again and because you've been naughty...' whereas sanction... here you only hear it on the news in context of the UN blocking aid/support to countries.
Punishment and penalty are somewhere around infraction on the scale of 'strength of terminology'. But seriously, if people prefer different terms, let's do it.
-
Ok let me take a stab at this.
User breaks the rules, this is an infraction
Now that the infraction has occurred, what action will be taken?
*Warn the user without further action
*If action is necessary, issue some sort of punishment
So now the matter is what do we call these things?
*I'd say a notice that comes with no punishments should be called a warning.
*If some sort of punishment is necessary issue a citation maybe.
*Along with the citation you can issue punishments or penalties i see these as actions that can be taken such as:
** issue points
** remove signatures
** suspend / temp ban
** ban permanently.....etc
So instead of saying what punishment should occur, say what action should be taken.
I'm quite comfortable with issuing infractions because that's how I knew it to be, but i kinda get the language hiccups as well.
-
There's a lot of good thoughts here but to be honest I actually kind of think we need to see it in action before we really can figure out what the correct terms should be.
-
We've only issued one warning here since we added this system, so I got no idea. Really think we need to see this play out on real systems but I'm getting the sense that renaming it back to Warnings is probably a good idea.