From: Marius Gavrilescu Date: Tue, 25 Mar 2014 12:38:32 +0000 (+0200) Subject: Merge branch 'master' into mindcoding X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=e63eaf407e505337cd02d7bc7ca3010ab6337348;hp=0a329295bb764112812177386b525ed3aa2b8c6d;p=gruntmaster-page.git Merge branch 'master' into mindcoding Conflicts: lib/Gruntmaster/Page/Generic.pm lib/Gruntmaster/Page/Pb/Entry.pm tmpl/ct_entry.en --- diff --git a/a/about.en b/a/about.en new file mode 100644 index 0000000..2c1d517 --- /dev/null +++ b/a/about.en @@ -0,0 +1,25 @@ +We are a group of coders of all ages, passionate about problem solving and algorithms. Together, we created MindCoding, an online platform where anyone can learn algorithms and test their skills. Join us, teach yourself new things and have fun! +

+Our website provides a problem list with an online evaluation system, which means you'll find out on the spot if your solution is correct. We support a wide rande of programming languages, allowing all programers to participate, regardless of their technical background. Read from stdin and print to stdout. +

+If you take part in our coding competition (which we strongly recommend!) don't forget to check out our standings and see how well you did compared to your friends. +

+Put your mind to work and code! + +

How to use the website

+First you need to create an account. For this click the Account button in the navbar.
+When you want to do an action that needs an account you will be required to log in.
+To submit a problem you can either paste your code into the text area for the corresponding problem or browse for the source.
+To take part in a contest, you don't need to register to a particular one, you just need to access its page after the contest starts. +Here are some examples for how to submit:
+C
+C++
+Java
+Pascal
+Perl
+Python
+ + + \ No newline at end of file diff --git a/a/about.en.title b/a/about.en.title new file mode 100644 index 0000000..660f88f --- /dev/null +++ b/a/about.en.title @@ -0,0 +1 @@ +About us \ No newline at end of file diff --git a/a/guide.en b/a/guide.en new file mode 100644 index 0000000..c270379 --- /dev/null +++ b/a/guide.en @@ -0,0 +1,72 @@ +
+

Quick Start Guide:

+ + +
+

STEP 1: Choosing a problem from the list

+ +

In order to choose a problem click the Problems button from the + navbar.

+

Then click on the problem you want to solve. +
For example let's choose A+B problem.

+
+ +
+

STEP 2: Starting to fill the form

+ +
+

From now on we focus on Submit solution area.

+

Here we can find the form to be filled in order to upload a solution to any given problem.

+
+ +
+

STEP 3: Solution source code

+ + + + + + +
1st Option - Upload the source file
+
+ Go to Choose file button from File area and then choose the source file. +
or 2nd Option - Paste the code
+ +
+ Here are some examples for how to submit: + +
+ + +
+

STEP 4: Selecting the file format

+ +

After uploading the source code we have to choose the format + corresponding to the code we provided as solution.

+
+ +
+

...and SUBMIT

+ +

Click the Submit job button and wait for the results.

You will be redirected + to Job log page where you can see the results.

+ +
+
+ +

Good luck!

+ + +
diff --git a/a/guide.en.title b/a/guide.en.title new file mode 100644 index 0000000..1fb0ba9 --- /dev/null +++ b/a/guide.en.title @@ -0,0 +1 @@ +Quick start guide \ No newline at end of file diff --git a/a/index.en b/a/index.en index e69de29..de60fff 100644 --- a/a/index.en +++ b/a/index.en @@ -0,0 +1,25 @@ +
+

Online qualification round schedule

+ +

Each round will begin at 19:00 and will last one hour and a half (90 minutes)
+For any questions contact us on #mindcoding (oftc.net)
+Read our quick-start guide +

+ +
+

MindCoding National Competition - First Edition

+

We are happy to announce the launch of MindCoding, our fun and challenging national programming competition! It doesn't matter if you have a job, you're a student or you're still in school, what really matters is your passion for problem solving. +

+Join our community and have the opportunity to learn new things and make a name of yourself! Are you passionate about a certain technology? Do you need a team for working on a project? MindCoding will help you make new friends who share your interests. +

+The first online round is this Thursday, on the 30th of January. We hope you'll join us! +

+You will have to solve 4 algorithmic problems of various difficulty levels, and they will be scored based on their level and your problem solving speed. In order for a solution to be considered correct, it must pass all of our tests. We strongly recommend getting used to our platform by solving a few warm-up challenges. +

+Good luck and have fun! +

diff --git a/a/index.en.title b/a/index.en.title index e7e81c9..d0fb4fb 100644 --- a/a/index.en.title +++ b/a/index.en.title @@ -1 +1 @@ -Gruntmaster 6000 \ No newline at end of file +MindCoding First Edition \ No newline at end of file diff --git a/a/rules.en b/a/rules.en new file mode 100644 index 0000000..332c964 --- /dev/null +++ b/a/rules.en @@ -0,0 +1,13 @@ +

MindCoding - Rules

+ + diff --git a/a/rules.en.title b/a/rules.en.title new file mode 100644 index 0000000..c191cb5 --- /dev/null +++ b/a/rules.en.title @@ -0,0 +1 @@ +Rules \ No newline at end of file diff --git a/app.psgi b/app.psgi index 856d82c..72558f1 100644 --- a/app.psgi +++ b/app.psgi @@ -12,7 +12,7 @@ use Digest::SHA qw/sha256/; use Log::Log4perl; use constant ACCESSLOG_FORMAT => '%{X-Forwarded-For}i|%h %u "%r" %>s %b "%{Referer}i" "%{User-agent}i"'; -use constant CONTENT_SECURITY_POLICY => q,default-src 'none'; script-src 'self' www.google-analytics.com; style-src 'self'; img-src 'self'; connect-src 'self',; +use constant CONTENT_SECURITY_POLICY => q,default-src 'none'; script-src 'self' www.google-analytics.com; style-src 'self'; img-src 'self' www.google-analytics.com; connect-src 'self',; $Apache2::AuthzCaps::rootdir = $Apache2::Authen::Passphrase::rootdir; my $word = qr,(\w+),a; diff --git a/css/codemirror.css b/css/codemirror.css new file mode 100644 index 0000000..3df9948 --- /dev/null +++ b/css/codemirror.css @@ -0,0 +1,265 @@ +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; +} +.CodeMirror-scroll { + /* Set scrolling behaviour here */ + overflow: auto; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* CURSOR */ + +.CodeMirror div.CodeMirror-cursor { + border-left: 1px solid black; + z-index: 3; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { + width: auto; + border: 0; + background: #7e7; + z-index: 1; +} +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {} + +.cm-tab { display: inline-block; } + +/* DEFAULT THEME */ + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable {color: black;} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3 {color: #085;} +.cm-s-default .cm-property {color: black;} +.cm-s-default .cm-operator {color: black;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + line-height: 1; + position: relative; + overflow: hidden; + background: white; + color: black; +} + +.CodeMirror-scroll { + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; padding-right: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.CodeMirror-sizer { + position: relative; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actuall scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + padding-bottom: 30px; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding-bottom: 30px; + margin-bottom: -32px; + display: inline-block; + /* Hack to make IE7 behave */ + *zoom:1; + *display:inline; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} + +.CodeMirror-lines { + cursor: text; +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} +.CodeMirror-code pre { + border-right: 30px solid transparent; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} +.CodeMirror-wrap .CodeMirror-code pre { + border-right: none; + width: auto; +} +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget {} + +.CodeMirror-wrap .CodeMirror-scroll { + overflow-x: hidden; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} +.CodeMirror-measure pre { position: static; } + +.CodeMirror div.CodeMirror-cursor { + position: absolute; + visibility: hidden; + border-right: none; + width: 0; +} +.CodeMirror-focused div.CodeMirror-cursor { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } + +.cm-searching { + background: #ffa; + background: rgba(255, 255, 0, .4); +} + +/* IE7 hack to prevent it from returning funny offsetTops on the spans */ +.CodeMirror span { *vertical-align: text-bottom; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursor { + visibility: hidden; + } +} diff --git a/css/custom.css b/css/custom.css index 9872ee8..ffdd79e 100644 --- a/css/custom.css +++ b/css/custom.css @@ -4,14 +4,6 @@ h1#title{ font-size: 3em !important; } -footer{ - width: 60em; - margin: auto; - margin-top: 6em; - white-space: pre-wrap; - color: #777; -} - #logo { margin: 5em auto 2em; display: block; @@ -48,10 +40,22 @@ div#result{ text-align: center; } +footer{ + padding: 1.5em 0; +} + a.dropdown-toggle{ cursor: pointer; } +#sponsors a.logo{ + margin-bottom: 1em; +} + .table-fixed{ table-layout: fixed; -} \ No newline at end of file +} + +code { + background-color: inherit; +} diff --git a/css/logos.css b/css/logos.css new file mode 100644 index 0000000..297fe5d --- /dev/null +++ b/css/logos.css @@ -0,0 +1,24 @@ +.logo { + background: url("/static/logos.png") no-repeat; + display: inline-block; + vertical-align: middle; +} + +.logo-bigstep{ background-position: 0 0; width: 250px; height: 72px; } +.logo-clujlife{ background-position: -260px 0; width: 60px; height: 53px; } +.logo-cos{ background-position: -330px 0; width: 212px; height: 53px; } +.logo-csf{ background-position: -552px 0; width: 220px; height: 120px; } +.logo-emag.logo-dark{ background-position: -782px 0; width: 250px; height: 64px; } +.logo-emag{ background-position: -1042px 0; width: 250px; height: 83px; } +.logo-eyc{ background-position: -1302px 0; width: 166px; height: 53px; } +.logo-facebook{ background-position: -1478px 0; width: 111px; height: 111px; } +.logo-hermes.logo-dark{ background-position: -1599px 0; width: 192px; height: 101px; } +.logo-hermes{ background-position: -1801px 0; width: 200px; height: 111px; } +.logo-hostway{ background-position: -2011px 0; width: 243px; height: 37px; } +.logo-mindcoding{ background-position: -2264px 0; width: 600px; height: 93px; display: block; } +.logo-sigla{ background-position: -2874px 0; width: 29px; height: 31px; } +.logo-usr{ background-position: -2913px 0; width: 105px; height: 52px; } +.logo-vinsieu{ background-position: -3028px 0; width: 71px; height: 53px; } +.logo-welcome2cluj{ background-position: -3109px 0; width: 123px; height: 53px; } +.logo-yardi{ background-position: -3242px 0; width: 250px; height: 61px; } +.logo-yardi.logo-dark{ background-position: -3502px 0; width: 250px; height: 61px; } diff --git a/js/90-custom.js b/js/90-custom.js index 750aaa1..d847fc1 100644 --- a/js/90-custom.js +++ b/js/90-custom.js @@ -3,6 +3,15 @@ function set_style(name){ $('#stylesheet').attr("href", "/css/" + name + ".css"); localStorage.setItem("theme", name); + if(name == 'slate' || name == 'cyborg') + $('.logo').addClass('logo-dark'); + else + $('.logo').removeClass('logo-dark'); + } + + var theme = localStorage.getItem("theme"); + if(theme) { + set_style(theme); } $( document ).ready(function() { @@ -25,10 +34,13 @@ $('#theme_cerulean').on('click', function () { set_style("cerulean"); }); $('#theme_cyborg' ).on('click', function () { set_style("cyborg"); }); $('#theme_cosmo' ).on('click', function () { set_style("cosmo"); }); - }); - var theme = localStorage.getItem("theme"); - if(theme) { - set_style(theme); - } + if(!$('#sidebar').size()) { + var content = $('#content'); + content.wrapInner('
').append(' + +
+

Official sponsors

+ + + + +
+
-Dilmom: Why don't you call your product the Gruntmaster 6000? -Dilbert: What kind of product do you see when you imagine a Gruntmaster 6000? -Dilmom: Well, it's a stripped-down version of the Gruntmaster 9000, of course. But it's software-upgradeable. +
+
+ +
+ +
+ +
+
+ +

Partners

+ + + + +

Media Partners

+ + +
+
diff --git a/tmpl/header.en b/tmpl/header.en index c4f51f6..5f08d37 100644 --- a/tmpl/header.en +++ b/tmpl/header.en @@ -1,16 +1,17 @@ -TITLE_GOES_HERE +TITLE_GOES_HERE | MindCoding - + +