Closed Zren closed 10 years ago
+1 on all your points.
I know that some of the naming have reference to Greasemonkey.
I would also suggest changing the naming of "Issues" for scripts to "Discussions". This sounds more positive & would also allow discussions on that script besides issues.
Really liking your second example!
I'm no designer, but haven't really found the time and effort to list all HCI issues with this design. We also need to know that this is still work in progress!
TBH: I don't like the design Userscripts had. It was lacking information and at the end of it all it just felt like someone droped a Word table on it and moved on with it.
I agree, thought, that the website feels like it came from the 90's [it made me feel a mix of feelings, but I also got the same urge as you did to redo the thing] but after some time looking at it I now think that instead of a "redo" of the whole thing the, the thing that it really needs is some minor adjustments to paddings, margins and the likes (and "maybe" a change in font).
I do agree with you on the Icon bar; Had I read the issues list before I'd have put #104 in here instead.
I don't agree with your view on the naming of the section and kind'a like the humor behind it (LOL @ The Beggars Corner), but that's just personal and wouldn't really matter if it changes. Though the thing about "groups" vs "tags" ... meh. I got more annoyed at the fact that one script can't have two groups than the wording of said thing.
Plus, we have to remind ourselves that the website is months old, if that much, so let'em deal with the backend first so we (i'm assuming you're a frontend dude aswell) can shine'it afterwards ;)
I got more annoyed at the fact that one script can't have two groups than the wording of said thing.
Give it some time. I'd like to see more than one group as well per script but we need more moderation tools available first.
remind ourselves that the website is months old
Yes. Improvements will come at a speedier rate eventually.
@Zren
Tags => Groups
I hate tags. Script groups have different behavior.
Forums => Garage (Ehhh...)
There are no forums (seriously I have a future feature up my sleeve that would make the use of "forum" term incorrect, which is why I use the generic "discussion"). The Garage is just a discussion category.
Pagination only shows the current page with directional buttons.
Completely intentional. I don't see the point of having a long list of page numbers.
Giant menu icons.
Yup. I'd like to shrink them.
This made me think of http://datatables.net/.
Looks nice. I'll give it some thought.
@jerone
I would also suggest changing the naming of "Issues" for scripts to "Discussions".
-1 I really don't want to do that. It's an issue tracker (you can open and close them, and eventually I'll add labels), so I'd be strange to give it a generic name.
@moshmage
I got more annoyed at the fact that one script can't have two groups than the wording of said thing.
Incorrect, although I need to add text letting people know how this feature works. You can only create one group for a script. You can add your script to as many existing groups as you desire. This is why I chose the name "group" and not "tag". I'm trying to prevent people from creating many unnecessary and redundant groups. Basically choose the groups you create carefully, because you have a limit. So yes, this is intentional behavior and not a limitation of the implementation (in fact I had to do a lot of work to accomplish this).
@sizzlemctwizzle
There are no forums (seriously I have a future feature up my sleeve that would make the use of "forum" term incorrect, which is why I use the generic "discussion"). The Garage is just a discussion category.
Garage isn't a synonym of discussion, the only way a new user would know it was for discussion was if they randomly clicked it. It would be fine if you were already at the "Forums" index, and the "Garage" was a subforum, but this is a nav link in the header of every page on the site.
@moshmage
I don't agree with your view on the naming of the section and kind'a like the humor behind it (LOL @ The Beggars Corner), but that's just personal and wouldn't really matter if it changes. Though the thing about "groups" vs "tags" ... meh. I got more annoyed at the fact that one script can't have two groups than the wording of said thing.
I didn't know you couldn't add multiple "groups". Group is probably the better term atm then.
I just noticed there's a general discussion here: https://openuserjs.org/discuss which would probably be a better main nav link.
I also started implementing this UI here: https://github.com/Zren/OpenUserJS.org/tree/ui
I've done the Script List Page and the Script About Page.
You can view it using this live demo on heroku. It's using the default dev db (I'll try to clone it if that's not ok).
Here's some screenshots if it crashes: https://github.com/Zren/OpenUserJS.org/wiki/Screenshots
I had to change the pagination/sort/search technique to use the query string. Well I didn't have to, but you shouldn't be storing optional variables like that in the route/path anyways. I'll be adding another flag variable to the query string filtering libraries later (which is why they aren't filtered out at the moment).
Some things I found out while coding this so far:
We really need an id/slug field in the Script schema. Getting which script a route belongs to is cumbersome (having to generate the script.installUrl
before querying the db). And generating urls is painful as well.
@Zren
Garage isn't a synonym of discussion
Yeah I realized awhile ago that I need a better name, but we already had the icon for it by then so I was stuck.
It would be fine if you were already at the "Forums" index, and the "Garage" was a subforum, but this is a nav link in the header of every page on the site.
I'm against using "Forums" but I do want to rename that discussion category to something that implies discussing user script development. "Forum" won't work because of the feature I mentioned earlier. Since Greasy Fork already has a forum and seems committed to it, I guess I can divulge my idea. Basically discussions are currently comment-based (there's a topic), but what I'm going to do is that when two or more registered users are on a discussion page at the same time it will transform into a chatroom (hence "discussion" covers both comment and chat-based communication). When the number of users on that page drops below two, it'll revert to comment-based communication and the chat history will be preserved on the page (probably as a scrolling comment box). I hope I explained my idea well enough. If you want me clarify, please don't hesitate to ask.
I just noticed there's a general discussion here: https://openuserjs.org/discuss which would probably be a better main nav link.
I didn't link to the general discussion area because I want to discourage off-topic discussion on the site.
It's using the default dev db (I'll try to clone it if that's not ok).
I'd prefer if the dev db isn't used for anything world-facing.
but you shouldn't be storing optional variables like that in the route/path anyways.
Yeah, moving the pagination/sort/search access to the query string is probably better. I guess I just really love using routes and got a little route-crazy.
We really need an id/slug field in the Script schema.
It already does (script._id
), but it is only used internally.
Getting which script a route belongs to is cumbersome (having to generate the script.installUrl before querying the db). And generating urls is painful as well.
I prefer using this because of its benefits (we can identify a script based on its contents: @name
and @namespace
) even if it is more cumbersome than generating a meaningless id. I don't find it painful since there are functions that help do this work for you. It never bothered me. Also it allows us to have meaningful urls, and even if we switched we'd have to keep this, so we'd just be making this more complex not simpler. I might be willing to use a hash of username, @name
, and @namespace
(if it's present) in places where we don't need a readable url.
As for your demo, nice work. I do like the changes overall but it still looks a bit bare and boring. Can we at least get some icons in there? It appears that the login/register is unimplemented. What were you planning on doing with that? I'd like to keep the one-input login myself, but I don't know how that would fit with the redesign. And we decided long ago to use blue and grey for the color scheme. Also, I'm going to reiterate: they're not tags, they're groups. From your previous comment it appears you agree, but you use "Tags" in your demo.
Anyway, I'd really appreciate some opinions on the site design from others. I don't enjoy making all the decisions alone. @OpenUserJs/admin @OpenUserJs/backend @OpenUserJs/frontend
I'd prefer if the dev db isn't used for anything world-facing
I'll get on that then.
they're not tags, they're groups.
Where didn't I change i- oh in the "tag cloud". Sorry.
we decided long ago to use blue and grey for the color scheme
Ah. I just grabbed a theme off http://bootswatch.com/ that looked most like US.org. Was going to change the colour scheme after doing all the layouts anyways. Good to know.
get some icons in there
You want more icons? Hehehehehehe. http://fontawesome.io/icons/ Basically anything off that can be used. I'll try not to make it overkill.
Re: ids/slugs
You have 3-4 piece of data right now to act as a primary key.
scriptType (scripts/libs) + scriptAuthor + scriptNamespaceSlug (optional?) + scriptNameSlug
The fact that we're duplicating and accepting routes without the scriptNamespaceSlug tells you it's pointless and you should remove it as script namespaces are ugly sluggified urls and bloat up the whole url. You don't even need it unless a user has two scripts with the same name scriptNameSlug. And in most cases, the namespace will be the same for all the user's scripts, making it redundant.
Same with scriptType, it's unnecessary without needing to distinguish two scripts by the same user with the same slug.
So you really only need: userName
and scriptNameSlug
.
Ah. I just grabbed a theme off http://bootswatch.com/ that looked most like US.org.
I see. Personally, I like this one: http://bootswatch.com/superhero/ I always advocated a darker background, but other people disagreed. But then again, I don't pretend to know much (if anything) about UI.
So you really only need:
userName
andscriptNameSlug
.
That makes sense to me. Until people started using the site I didn't realize that the namespace portion turned out to be a hot mess with no real meaning. I'm for getting rid of it (although it'll require a fair amount of work since it's used to store scripts in S3 as well). I kind of like dividing user script and library routes (I like including the information in the url), but I'll admit the code would be a lot simpler and cleaner if it was eliminated.
I'd really appreciate some opinions on the site design from others
I assume you mean publicly. I'm still getting the feel (including logical layout which in some circles is better than the other sites :) of the site so I can dig into the source a little deeper. If you haven't noticed most of my scripts and even GM is improving upon existing structures. Some of the technologies used I have never heard of before but luckily I'm usually a quick learner and appreciate every linkage. The site could use a little improvement with CSS on cell phones to maintain consistency across pages, on desktops the font scaling is really unusual with the percentage size... some of my lists are bigger than others and the markdown syntax is identical minus content, and of course my announced issues with some of the plumbing. As far as recommendations of certain technologies I usually write things from scratch when it comes to web design. Reinventing the wheel I suppose. I'm moving as fast as I can to catch up... money and other duties are also a factor for me right now. :) I can help you make some of the decisions but only within my current expertise. Just remember not to get overwhelmed... sometimes that is easy to do especially under the current crunch on USO.
EDIT: You might consider weekly or monthly "get togethers" like Moz does to help ease the decision making processes and not try to have everyone do it in one shot... and a well established release schedule with the exception of emergency releases and of course some delays.
I also started implementing this UI here: https://github.com/Zren/OpenUserJS.org/tree/ui
I've done the Script List Page and the Script About Page.
You can view it using this live demo on heroku.
Just some fast feedback...
I love this new design. It looks more modern and professional. A lot of sites use this kind of design, which is intuitive and easy to look at. Now it also shows more information, which requires less scrolling. The current design, to my taste, is a bit out-dated and childish, I do however like the font.
I do agree that it misses some icons. Specially at the header, but this could be fixed by adding a logo. Another suggestion is to show the script's @icon
in the listing when available (and default image when not).
The color might be a bit to related to USO and I would like to see it in the agreed upon (where?) blue and grey color scheme.
The detail page is a little crowded to my taste. It's not clear that the 3 links (About, Source Code, Issues) are part of a tabbar.
I would move the information below the script name (e.g. By jerone — Last updated 3 months ago — Installed 0 times.) also on the right side. That would make room for more information from the script (like @license
, etc).
Above suggestion distinguish the custom script description more from the standard site layout.
Always add an submit button after a search field.
@Zren I intend to use your proposed design. Do you need some help from me to adapt it to the entire site, or is that something you've got handled? I ask because I see you've been doing a lot of work on your branch and I don't want to get in your way. If you need anything from me, just ask.
I renamed my ui
branch to dev
as it was starting to get full of other thing. I remade the ui
with code for an eventual PR.
I wrote a script to grab ~600 scripts from userscript.org to populate my local db.
I did the ScriptEditMetadataPage the other day. Added :username
onto the route to stay consistent with the routes (yes we can pull the username from the session user).
I added a helper function called app_route
for routing which can be seen here, It works similar to Express v4. Eg: app_route('/').VERB(callback).VERB(callback);
.
I also found out you can use: ?
like so :varname?
in routes to declare an optional route param. This should cleanup a bunch of duplicate route definitions. However /script/:username?/:namespace?/:scriptname/edit
does NOT match /script/scriptNamespaceSlug/scriptNameSlug
. Found out the hard way.
Edit: Moved checklist to OP.
@sizzlemctwizzle Could you implement the ScriptEditScourcePage and ScriptViewSourcePage? I haven't setup the fake AWS script yet, so that'd be helpful.
Moved the checklist to the OP.
I finished the UserProfile + UserEditPage today (I broke each up into 2 pages).
Good work Zren. Look great!
Could you implement the ScriptEditScourcePage and ScriptViewSourcePage?
Yeah, I'll get on that but I'm certain that it won't look too pretty. JS & HTML are my thing. I don't really know what I'm doing with CSS (and I know the editor requires some).
@Zren
Brilliant work! Love what you've done with discussions. I can tell you're going for a "US.o if it had been created in this century" feel. Keep up the great work. You're kicking ass and taking names.
Edit: I'm still trying to figure out your new layout for the templates so I can implement those two pages.
Thanks. I styled the discussions after http://try.discourse.org/
Here's a template page to get you started.
views/pages/*
and anything you include goes in view/includes/*
. Mustache imports are relative to the views/
folder, not relative to the template file itself. So you can use {{> includes/blarg.html }}
even in view/pages/blargPage.html
.For the controller, here's an example.
optionser.authedUser = req.auth.user
instead of options.username = req.session.user.name
. This is so I can get the user.userPageUrl
and possible other things like user.messagesCount
in the future.And why not, one more:
http://nameless-hollows-5487.herokuapp.com/register
Yes I know you can't login on my herokuapp (it's due to the oauth callbacks not allowing the host). The login works though on localhost.
If that's the template, is there any way we can abstract that code away (I'm think mostly of the controller) so we don't have to repeat ourselves?
The login/register looks nice. How about a modal popup? Like normally login shows, but when you click register it switches.
The top one is bare bones as it's just defining stuff and metadata changes on each page. The second one could probably have the pagination abstracted. The sort/search could as well probably, though we need to keep the query = Model.find()
visible in the controller.
The second one could probably have the pagination abstracted. The sort/search could as well probably
Couldn't you adapt the modelsList library (specifically the listModels function) to do this? Is there a reason you decided to stop using it, rather than extending/improving it? Or did you just adapt/replace it somewhere else that I'm not seeing?
Couldn't you adapt the modelsList library (specifically the listModels function) to do this? Is there a reason you decided to stop using it, rather than extending/improving it?
Keep legacy code working without breaking everything at once, and modelList is designed around route params. I opted to break up parsing the individual objects into modelParser as well.
and modelList is designed around route params.
Actually, you can pass it an object as well, although that was never really used anywhere so it might not work too great.
I opted to break up parsing the individual objects into modelParser as well.
Ah, I see. That makes sense and looks better. Even while I wrote the code, I knew the structure of my modules where haphazard (see #72). I'm glad someone can bring some order.
Did a little refactoring. I simplified pagination a bit, and removed the need to define which model we're using in modelQuery.parseModelListSort
as we can grab the model from query.model
.
Going to redo Issues next.
"Internal Server Error" Just saying ...
On 28 May 2014 02:23, Chris Holland notifications@github.com wrote:
Did a little refactoring. I simplified pagination a bit, and removed the need to define which model we're using in modelQuery.parseModelListSortas we can grab the model from query.model.
Eg: Zren@5d1dbca...5b4aa8f#diff-9ded95676cd9a25c6466192ba063401aR20https://github.com/Zren/OpenUserJS.org/compare/5d1dbcacb60d9e8f8bf9d6e27fa4f7f114cd0bb2...5b4aa8f5dbb957365ae36208868001345e0bdb1e#diff-9ded95676cd9a25c6466192ba063401aR20
Going to redo Issues next.
— Reply to this email directly or view it on GitHubhttps://github.com/OpenUserJs/OpenUserJS.org/issues/103#issuecomment-44348072 .
Best Regards, Andrii M.
mob. tel: +38 097 583 58 35 e-mail: dexteritymaster@gmail.com skype: Dexmaster
@Dexmaster #112
Oh wow. Installing ruby and fakes3 was simplier than I thought it'd be.
@sizzlemctwizzle You deciphered enough of my code to start either of those pages?
Yeah, I'm most of the way done. But where'd you put the jQuery? I know it has be somewhere since you still use it with Select2 on the user script meta page.
I put all javascript libraries in the footer includes/footer.html
. Any per page js can be placed after it.
https://developer.yahoo.com/performance/rules.html#js_bottom
Well I finished the view/edit source page: ec278a9cdcd5d7891e223917832c22d1276c9fae I elected to keep them as the same page since they only have a minor difference. I did separate the the script source editor controller from the controller used to do the actual submission. I'm not sure how to style the submit button.
/admin/users is moved to the actual user page.
Then we need a page that lists users and supports searching.
I'm not sure how to style the submit button.
I'll merge it and test it in a bit (now that I can actually see scripts now :D).
UserListPage has name, roleName, and ghUsername (why not eh?), I might add scriptCount too, but that would add limit
(max: 100) number of requests, per page (I think?).
@jerone I added the @icon
. The docs for it suggest a 32x32 picture, when we only need a 16x16 (some even use a much bigger picture). So we might need to disable it (or do some checking) in the future. Probably going to make the default icon to be a grayish, to stand out less.
Also added a search button with a search icon to the search bars (as you can see in the first screenshot).
No need to put script count on that page. User role should be good enough since "Script Author" will let know they've published scripts and we can check out their profile if we want to know more.
However, I'm unsure about publishing their GitHub username. That was originally designed for internal use only. It's one of the reasons we hash the user ID we get from other forms of authentication. If you signed up with Facebook, you might not want a link to your profile displayed to the world without consent.
I would move the information below the script name (e.g. By jerone — Last updated 3 months ago — Installed 0 times.) also on the right side. That would make room for more information from the script (like @license, etc).
Github style?
Edit: Just realized that some script names are really, really long. Doesn't look as awesome when it wraps the line.
Edit: Just realized that some script names are really, really long. Doesn't look as awesome when it wraps the line.
You could place the "Install" button on the right side in the menu...
Looking great with each update!
NewScriptPage
I've probably broken the import from github / script sync page by moving it. Going to have to test it... somehow.
@Zren
From the url under "Edit Meta" under "Author Tools" it looks like OUJS. This might be confusing to noobies. Perhaps "Edit Site Meta" and perhaps "Edit User Script"? Btw Gorgeous so far!! :)
Just realized that some script names are really, really long. Doesn't look as awesome when it wraps the line.
My 2 cents... looks great css fluidity wise!
@jerone
You could place the "Install" button on the right side in the menu...
That will probably cause issues when the viewport is small. The current #content-navbar
gets hidden with those with a menu drop-down.
@Martii @Zren
From the url under "Edit Meta" under "Author Tools" it looks like OUJS. This might be confusing to noobies. Perhaps "Edit Site Meta" and perhaps "Edit User Script"? Btw Gorgeous so far!! :)
Perhaps "Edit Details"? Both "Edit Meta" and "Edit User Script" sound like they might apply to the script source.
That will probably cause issues when the viewport is small. The current #content-navbar gets hidden with those with a menu drop-down.
That just means you need two buttons that show/hide when that happens. http://getbootstrap.com/css/#responsive-utilities
From the url under "Edit Meta" under "Author Tools" it looks like OUJS. This might be confusing to noobies. Perhaps "Edit Site Meta" and perhaps "Edit User Script"? Btw Gorgeous so far!! :)
T'was origionally gonna be Edit Description, till I noticed the page edited the groups as well. Though now that I think on it, groups describe the script as well.
NewScriptPage
Looks sweet. Typo: in the script details section, the two links in author and collaborator for "Collaberation" should be "Collaboration".
Typo
God damn it.
I accidentally had to use git push origin ui -f
(fast forward push which breaks git pull
if you're up to date on the branch). Undo commit (aka git reset --soft HEAD^1
) is very dangerous. Don't be an idiot and accidentally do it twice, undoing a pushed commit. Then be lazy and not re pulling to redo the new commit, and instead combine the 2 commits like me.
Used "Edit Script Info" as GreasyFork uses the terminology "Additional info".
Started on the theme. Gray/Blue w/ Orange links. Most of the pages need to be added to a white bg panel as I added a gutter bg color.
http://nameless-hollows-5487.herokuapp.com/scripts/zren/httpxshade.ca/Resize_YT_To_Window_Size
Desktop
Phones
Looks sexy. But I got a server error from the demo. On Jun 3, 2014 8:21 PM, "Chris Holland" notifications@github.com wrote:
Started on the theme.
http://nameless-hollows-5487.herokuapp.com/scripts/zren/httpxshade.ca/Resize_YT_To_Window_Size
- Github styled heading + install counter in the nav. Version & updated timestamp moved to the metadata area. Seperated the metadata from the script info.
Desktop
Phones
— Reply to this email directly or view it on GitHub https://github.com/OpenUserJs/OpenUserJS.org/issues/103#issuecomment-45042036 .
Bug in my date formatting code. Re upped the demo.
How far are you from submitting a pull request? Is there anything I can do?
Some suggestions that you may or may not want to implement:
fa fa-paragraph
to fa fa-link
to have a similar icon to what GitHub has. Would turn it to this:Which can be done with this CSS (or if you prefer another way, that's fine too).
.script-version:before {
content: "v";
}
and after (using 10px margin-bottom
on the search form, but use em
s if you want):
Other than that stuff, looks great! Can't wait for the PR to go through.
Phones
@Zren what are the requirements for mobile? Because it doesn't work on multiple mobile browsers I've tested the demo.
On headings, change the header link icon class from fa fa-paragraph to fa fa-link to have a similar icon to what GitHub has. Would turn it to this:
Done, and shrinked the icon to 66%.
what are the requirements for mobile? Because it doesn't work on multiple mobile browsers I've tested the demo.
Looks like I needed to add <meta name="viewport" content="width=device-width, initial-scale=1.0">
to get the phone view on high DPI devices.
How far are you from submitting a pull request? Is there anything I can do?
What's left is:
I've manage to get my own github client id/key so I can now login on the demo. I also port forwarded my localhost fasks3 for the herokuapp so it'll save scripts now. Which means I can actually tackle the github sync issue (hopefully). I'll try and see if I can finish it tonight, and get a PR ready.
I'll be adding the following optional Environment Variables btw:
AUTH_CALLBACK_BASE_URL
DEV_AWS_URL
Looks like I needed to add...
Take a look at some of the practices in HTML5 Boilerplate--that's one of them. I've adapted quite a bit of it within my own personal projects, scrapping a few bits for Bootstrap and other things. In short, meta
that is well recognized (mobile-first and so-on), 1-2 script
s in the head
(modernizer), and all the other JS at the bottom as needed. :smile:
Edit:
Currently redoing the UI with Bootstrap & FontAwesome & whatever is needed.
Demo: http://nameless-hollows-5487.herokuapp.com
Progress
Discussion Category
Discussion
Script
Script Issue (Extends Discussion)
Script Group
Library (Extends Script)
User
Auth
Moderation
Admin
Misc
Original Post:
Seeing as most users are probably coming from Userscript.org, I'm wondering why you changed some of the vocabulary.
Comments on specific routes.
/
/scripts/
p
ortable
has mini text. This is because of abody { font-size: 62.5%; }
...Demos
Looking at the UI made me want to redo the entire thing. When checking out the tracker I also saw #77, and thought if you're going to implement it for a 3rd parties, you might as well use it for the site as well. This made me think of http://datatables.net/. I noticed that NodeJS + Mongoose has a package for it on the server side https://www.npmjs.org/package/mongoose-datatable. Now I haven't checked into SEO with DataTables, so I'll have to look further into it. Anyways, I made a quick demo with it and Bootstrap 3.
http://codepen.io/Shadeness/pen/zBomq
I also tried cloning Userscript.orgs frontpage (without DataTables this time).
http://codepen.io/Shadeness/pen/LmyFB
Essentially, I wanted to point out that Bootstrap + FontAwesome would help make the site look less like it came from the 90s and more like it's a copy-paste site from the 2010.