summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2017-03-16 21:28:51 -0700
committerCarson Fleming <cflems@cflems.net>2017-03-16 21:28:51 -0700
commitca71122b9a343bacd6c0b2933ddf295ebcff4f07 (patch)
tree595a998026e0182fc04c4d7ecc7cbc6e14a70455
parent3d0d3a86106ece4ea298ab2f262b3af5ff8a7728 (diff)
downloadbulletin-ca71122b9a343bacd6c0b2933ddf295ebcff4f07.tar.gz
Final candidate for alpha version, moving to beta soon
-rw-r--r--dash/css/dash.css17
-rw-r--r--dash/dash_employee.php2
-rw-r--r--dash/dash_employer.php4
-rw-r--r--dash/dash_functions.php28
-rw-r--r--dash/headless.php10
-rw-r--r--dash/js/dash.js22
-rw-r--r--dash/rate.php24
7 files changed, 104 insertions, 3 deletions
diff --git a/dash/css/dash.css b/dash/css/dash.css
index b2dbbef..6e625a4 100644
--- a/dash/css/dash.css
+++ b/dash/css/dash.css
@@ -123,6 +123,11 @@ body {
text-decoration: none;
font-weight: bold;
}
+.jobpay a {
+ color: #000000;
+ text-decoration: none;
+ font-style: italic;
+}
.jobblurb {
padding: 1em;
margin: 1em 1em 0 1em !important;
@@ -379,3 +384,15 @@ h3 a:hover, h4 a:hover {
.adtrash:hover {
background-image: url('../img/trash_hover.png');
}
+.rate-widget {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+}
+.ratebtn {
+ margin: auto 5px;
+ cursor: pointer;
+}
+.ratebtn:hover {
+ background-image: url('../img/star_given.png');
+}
diff --git a/dash/dash_employee.php b/dash/dash_employee.php
index df7112d..2c507c2 100644
--- a/dash/dash_employee.php
+++ b/dash/dash_employee.php
@@ -15,7 +15,7 @@ $result->free();
</form>
<?php
$catstr = empty($_GET['cat']) ? '' : ' AND cat = '.intval($_GET['cat']);
-$result = $db->query('SELECT ads.*, categories.cat_name, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads LEFT JOIN categories ON ads.cat = categories.id LEFT JOIN ratings ON ads.uid = ratings.rated WHERE ads.closed = 0'.$catstr.' GROUP BY ads.id LIMIT 0, '.$b_config['ads_per_page']) or fatal($db->error);
+$result = $db->query('SELECT ads.*, categories.cat_name, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads LEFT JOIN categories ON ads.cat = categories.id LEFT JOIN ratings ON ads.uid = ratings.rated WHERE ads.closed = 0'.$catstr.' GROUP BY ads.id ORDER BY ads.id DESC LIMIT 0, '.$b_config['ads_per_page']) or fatal($db->error);
while ($row = $result->fetch_assoc()) draw_ad($row);
$result->free();
require('footer.php');
diff --git a/dash/dash_employer.php b/dash/dash_employer.php
index d30ca04..0ae87e5 100644
--- a/dash/dash_employer.php
+++ b/dash/dash_employer.php
@@ -22,12 +22,12 @@ $result->free();
</form>
<?php
if ($view == 0) {
- $result = $db->query('SELECT ads.*, categories.cat_name, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads LEFT JOIN categories ON ads.cat = categories.id LEFT JOIN ratings ON ads.uid = ratings.rated WHERE ads.uid = '.$b_user['id'].' AND ads.closed = 0 GROUP BY ads.id') or fatal($db->error);
+ $result = $db->query('SELECT ads.*, categories.cat_name, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads LEFT JOIN categories ON ads.cat = categories.id LEFT JOIN ratings ON ads.uid = ratings.rated WHERE ads.uid = '.$b_user['id'].' AND ads.closed = 0 GROUP BY ads.id ORDER BY ads.id DESC') or fatal($db->error);
if ($result->num_rows < 1) draw_noads();
while ($row = $result->fetch_assoc()) draw_ad($row);
$result->free();
} else {
- $result = $db->query('SELECT responses.id, responses.comment, responses.uid, users.name, users.address, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM responses INNER JOIN users ON responses.uid = users.id LEFT JOIN ratings ON ratings.rated = responses.uid WHERE responses.adid = '.$view.' AND responses.matched = 0 GROUP BY responses.id') or dash_fatal($db->error);
+ $result = $db->query('SELECT responses.id, responses.comment, responses.uid, users.name, users.address, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM responses INNER JOIN users ON responses.uid = users.id LEFT JOIN ratings ON ratings.rated = responses.uid WHERE responses.adid = '.$view.' AND responses.matched = 0 GROUP BY responses.id ORDER BY responses.id DESC') or dash_fatal($db->error);
if ($result->num_rows < 1) draw_noapps();
while ($row = $result->fetch_assoc()) draw_app($row);
$result->free();
diff --git a/dash/dash_functions.php b/dash/dash_functions.php
index 933a72d..9c106eb 100644
--- a/dash/dash_functions.php
+++ b/dash/dash_functions.php
@@ -19,6 +19,24 @@ function typestr ($type) {
function rating_format ($rating = null, $typestr = 'Employer') {
return '<span class="ratingdata" data-rating="'.(is_null($rating) ? 'undef' : number_format($rating, 1)).'"></span>';
}
+function draw_norate_p () {
+?>
+ <div class="job">
+ <p class="jobtitle"><a href="post.php">Nothing to Rate Yet!</a></p>
+ <p class="jobpay">Post another ad. It's FREE!</p>
+ <p class="jobblurb">None of your ads have received a response since you last visited. In the meantime, be sure to post more to maximize your exposure.<br /><a href="post.php">Post an ad!</a></p>
+ </div>
+<?php
+}
+function draw_norate_s () {
+?>
+ <div class="job">
+ <p class="jobtitle"><a href="post.php">Nothing to Rate Yet!</a></p>
+ <p class="jobpay">Apply to more ads. It's FREE!</p>
+ <p class="jobblurb">None of your applications have received a response since you last visited. In the meantime, be sure to reply to more job postings maximize your exposure.<br /><a href="dash/">Browse ads!</a></p>
+ </div>
+<?php
+}
function draw_noads () {
?>
<div class="job">
@@ -37,6 +55,16 @@ function draw_noapps () {
</div>
<?php
}
+function draw_rate ($row) {
+?>
+ <div class="job">
+ <p class="jobtitle"><a href="ads.php?id=<?=$row['adid'];?>"><?=htmlentities($row['title']);?></a></p>
+ <p class="jobpay">Provided by <a href="profile.php?id=<?=$row['uid'];?>"><?=htmlentities($row['name']);?></a></p>
+ <p class="jobdate"><?=date('M j, Y', intval($row['time']));?></p>
+ <div class="jobblurb"><div class="rate-widget" data-uid="<?=$row['uid'];?>" data-jid="<?=$row['adid'];?>" data-rating="<?=is_null($row['rating']) ? 'undef' : number_format($row['rating'], 1);?>"></div></div>
+ </div>
+<?php
+}
function draw_ad ($row) {
?>
<div class="job">
diff --git a/dash/headless.php b/dash/headless.php
index 516cfd5..0312f5d 100644
--- a/dash/headless.php
+++ b/dash/headless.php
@@ -29,6 +29,16 @@ if (isset($_GET['clicks'])) {
$db->query('DELETE FROM ads WHERE ads.id = '.intval($_GET['rmad']).' AND ads.uid = '.$b_user['id']) or die('ERR');
if ($db->affected_rows < 1) die('NOK');
die('OK');
+} else if (isset($_GET['rate'])) {
+ $uid = intval($_GET['rate']);
+ $jid = intval($_GET['jid']);
+ $val = intval($_GET['val']);
+ if ($uid < 1 || $jid < 1 || $val < 1) die('NOK');
+ $result = $db->query('SELECT ads.id FROM ads INNER JOIN responses ON responses.adid = ads.id AND responses.matched = 1 INNER JOIN users ON users.id = responses.uid LEFT JOIN ratings ON ratings.rated = users.id WHERE ads.id = '.$jid.' AND (ads.uid = '.$b_user['id'].' OR responses.uid = '.$b_user['id'].') AND NOT EXISTS (SELECT ratings.id FROM ratings WHERE ratings.rated = responses.uid AND ratings.job = ads.id AND ratings.rater = '.$b_user['id'].') GROUP BY responses.id LIMIT 1') or die('ERR');
+ if ($result->num_rows < 1) die('NOK');
+ $db->query('INSERT INTO ratings (rated, rater, job, stars) VALUES ('.$uid.', '.$b_user['id'].', '.$jid.', '.$val.')') or die('ERR');
+ if ($db->affected_rows < 1) die('NOK');
+ die('OK');
}
$db->close();
?>
diff --git a/dash/js/dash.js b/dash/js/dash.js
index 9d44802..7eb10c0 100644
--- a/dash/js/dash.js
+++ b/dash/js/dash.js
@@ -58,6 +58,27 @@ function serveratings ($spaces) {
}
});
}
+function ratewidget (idx, me) {
+ var $me = $(me);
+ var rating = parseFloat($me.attr('data-rating'));
+ if (!rating) rating = 0;
+ var html = '';
+ for (var i = 1; i <= rating; i++) html += '<img class="ratebtn" src="img/star_given.png" alt="Full Star" />';
+ if (rating-Math.floor(rating) >= 0.5) html += '<img class="ratebtn" src="img/star_half.png" alt="Half Star" />'
+ i += Math.round(rating-Math.floor(rating));
+ for (; i <= 5; i++) html += '<img class="ratebtn" src="img/star_empty.png" alt="No Star" />';
+ $me.html(html);
+ $.each($me.find('.ratebtn'), function (idx, obj) {
+ $(obj).click(function (e) {
+ e.preventDefault();
+ console.log('Clicked '+(idx+1));
+ $.get('headless.php?rate='+$me.attr('data-uid')+'&jid='+$me.attr('data-jid')+'&val='+(idx+1), function (data) {
+ if (data == 'OK') $me.parents().filter('.job').hide(250);
+ else window.alert('The server encountered an error submitting your rating. We\'re sorry for the inconvenience.');
+ });
+ });
+ });
+}
$(function() {
$('.jobxbtn').click(jxbtn);
@@ -65,4 +86,5 @@ $(function() {
$('.appcbtn').click(acbtn);
$('.adtrash').click(trashbtn);
serveratings($('.ratingdata'));
+ $.each($('.rate-widget'), ratewidget);
});
diff --git a/dash/rate.php b/dash/rate.php
new file mode 100644
index 0000000..767d4ba
--- /dev/null
+++ b/dash/rate.php
@@ -0,0 +1,24 @@
+<?php
+define('HEIRARCHY', 1);
+require('dash_common.php');
+
+$title = 'Rate / Bulletin';
+require('header.php');
+if ($b_user['type'] == 'EMPLOYER') {
+ $result = $db->query('SELECT users.id AS uid, users.name, ads.id AS adid, ads.title, ads.time, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads INNER JOIN responses ON responses.adid = ads.id AND responses.matched = 1 INNER JOIN users ON users.id = responses.uid LEFT JOIN ratings ON ratings.rated = users.id WHERE ads.uid = '.$b_user['id'].' AND NOT EXISTS (SELECT ratings.id FROM ratings WHERE ratings.rated = responses.uid AND ratings.job = ads.id AND ratings.rater = '.$b_user['id'].') GROUP BY responses.id') or dash_fatal($db->error);
+ if ($result->num_rows < 1) draw_norate_p();
+} else if ($b_user['type'] == 'EMPLOYEE') {
+ $result = $db->query('SELECT users.id AS uid, users.name, ads.id AS adid, ads.title, ads.time, SUM(ratings.stars) / COUNT(ratings.stars) AS rating FROM ads INNER JOIN responses ON responses.adid = ads.id AND responses.matched = 1 INNER JOIN users ON users.id = ads.uid LEFT JOIN ratings ON ratings.rated = users.id WHERE responses.uid = '.$b_user['id'].' AND NOT EXISTS (SELECT ratings.id FROM ratings WHERE ratings.rated = ads.uid AND ratings.job = ads.id AND ratings.rater = '.$b_user['id'].') GROUP BY responses.id') or dash_fatal($db->error);
+ if ($result->num_rows < 1) draw_norate_s();
+}
+else dash_fatal('Only job seekers and job providers can rate one another.');
+
+while ($row = $result->fetch_assoc()) {
+ draw_rate($row);
+}
+$result->free();
+?>
+
+<?php
+require('footer.php');
+?>