Skip to content

Commit 7eb1065

Browse files
committed
Fixe Spoj - #20
Generalize languages - #18 JS Logic separate - #19
1 parent 713771f commit 7eb1065

File tree

8 files changed

+246
-227
lines changed

8 files changed

+246
-227
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Install/*
44
*.DS_Store
55
*.sublime-project
66
pylintrc
7+
*.sublime-*

chrome-plugin/basic.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var languages = [
2+
{
3+
ext : "c",
4+
name : "C"
5+
},
6+
{
7+
ext : "cpp",
8+
name : "C++"
9+
},
10+
{
11+
ext : "java",
12+
name : "Java"
13+
},
14+
{
15+
ext : "py",
16+
name : "Python"
17+
}
18+
];
19+
20+
//Getting the URL of the HTMl Page
21+
var url = document.URL;
22+
23+
//Removing the trailing punctuation marks
24+
while(url[url.length - 1] === "/" || url[url.length - 1] === "#")
25+
{
26+
url = url.slice(0, url.length - 1);
27+
}
28+
29+
//Spliting the URL to get path
30+
var us = url.split("/");

chrome-plugin/code_later.js

Lines changed: 0 additions & 225 deletions
This file was deleted.

chrome-plugin/codechef_problem.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
//Helper function to get click_functions
2+
function click_codechef(language)
3+
{
4+
return function () {
5+
console.log(language + " Code Now Clicked. Opening " + language + " IDE");
6+
var prob_name = $('title')[0].text.split('|')[0].trim();
7+
var prob_url = url;
8+
var u_name = "";
9+
//Checking if User is LoggedIn
10+
if($('#user-bar span.login-box').length > 0)
11+
{
12+
//No Logged In User Detected
13+
u_name = "No User";
14+
}
15+
else
16+
{
17+
//A user is logged in
18+
u_name = $('#user-bar span').text().split('!')[0].replace('Hello', '').trim();
19+
}
20+
//Sending Message to the native host with a json object of problem details
21+
chrome.runtime.sendMessage({problem_name: prob_name, problem_url: prob_url, user_name: u_name, lang : language});
22+
};
23+
}
24+
25+
// Helper function to add codechef buttons
26+
var codechef_interval = null;
27+
function add_codechef_buttons()
28+
{
29+
if ($('#problem-page-top').length === 0)
30+
{
31+
// This means that the page hasn't loaded completely yet. So Wait
32+
return;
33+
}
34+
else
35+
{
36+
// Dynamic DOM Created by codechef
37+
var button_list = $("#problem-page-top").find("ul");
38+
var html = button_list.html();
39+
// Adding Language Button
40+
for (var i = 0; i < languages.length; i++)
41+
{
42+
html += "<li><a href='#' id='code_now_id_" + languages[i].ext + "_button'>Code in " + languages[i].name + "</a></li>";
43+
}
44+
button_list.html(html);
45+
46+
//Adding Listeners
47+
for(var j = 0; j < languages.length; j++)
48+
{
49+
$("#code_now_id_" + languages[j].ext + "_button").click(click_codechef(languages[j].ext));
50+
}
51+
console.log("Code Now Button Added !! ~ Code Now Extension");
52+
53+
// Clear interval, so that buttons are not added repeatedly
54+
clearInterval(codechef_interval);
55+
}
56+
}
57+
58+
var code = us[us.length - 1];
59+
if(us[us.length - 2] === "problems" && code !== "easy" && code !== "medium" && code !== "hard" && code !== "challenge" && code !== "extcontest" && code !== "school")
60+
{
61+
// Adding A little sleep here because codechef mutates DOM to add all elements dynamically
62+
codechef_interval = window.setInterval(add_codechef_buttons, 5000);
63+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
function click_codeforces(language)
2+
{
3+
return function() {
4+
console.log(language + " Code Now Clicked. Opening " + language + " IDE");
5+
var prob_name = $('#pageContent .title').html().split('.')[1].trim();
6+
var prob_url = url;
7+
var u_name = "";
8+
var reg_link = $('#header .lang-chooser div')[1].children[1].text.toLowerCase();
9+
if(reg_link == "register")
10+
{
11+
u_name = "No User";
12+
}
13+
else
14+
{
15+
u_name = $('#header .lang-chooser div')[1].children[0].text.toLowerCase();
16+
}
17+
chrome.runtime.sendMessage({problem_name: prob_name, problem_url: prob_url, user_name: u_name, lang : language});
18+
};
19+
}
20+
21+
if(us.length > 4 && (us[us.length - 2] === "problem" || us[us.length - 3] === "problem"))
22+
{
23+
//Creating and Adding A whole new Sidebox with 3 buttons
24+
$('#sidebar').html(
25+
'<div class="roundbox sidebox" style="">' +
26+
'<div class="roundbox-lt">&nbsp;</div>' +
27+
'<div class="roundbox-rt">&nbsp;</div>' +
28+
'<table class="rtable ">' +
29+
'<tbody>' +
30+
'<tr><th class="left" style="width:100%;"><a style="color: black" href="">Code Now</a></th></tr>' +
31+
'<tr>' +
32+
'<td class="left bottom" colspan="1">' +
33+
'<div style="text-align:center;margin:1em;" id="code_now_button_box">' +
34+
'</div>' +
35+
'</td>' +
36+
'</tr>' +
37+
'</tbody>' +
38+
'</table>' +
39+
'</div>' +
40+
$('#sidebar').html);
41+
42+
for(var i = 0; i < languages.length; i++)
43+
{
44+
var button = $('<button/>', {
45+
text : 'Code in ' + languages[i].name,
46+
click : click_codeforces(languages[i].ext)
47+
});
48+
$('#code_now_button_box').append(button);
49+
$('#code_now_button_box').append($('<br/>'));
50+
$('#code_now_button_box').append($('<br/>'));
51+
}
52+
console.log("Code Now Button Added !! ~ Code Now Extension");
53+
}

0 commit comments

Comments
 (0)