diff options
| author | Carson Fleming <cflems@cflems.net> | 2017-03-16 21:28:51 -0700 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2017-03-16 21:28:51 -0700 |
| commit | ca71122b9a343bacd6c0b2933ddf295ebcff4f07 (patch) | |
| tree | 595a998026e0182fc04c4d7ecc7cbc6e14a70455 /dash | |
| parent | 3d0d3a86106ece4ea298ab2f262b3af5ff8a7728 (diff) | |
| download | bulletin-ca71122b9a343bacd6c0b2933ddf295ebcff4f07.tar.gz | |
Final candidate for alpha version, moving to beta soon
Diffstat (limited to 'dash')
| -rw-r--r-- | dash/css/dash.css | 17 | ||||
| -rw-r--r-- | dash/dash_employee.php | 2 | ||||
| -rw-r--r-- | dash/dash_employer.php | 4 | ||||
| -rw-r--r-- | dash/dash_functions.php | 28 | ||||
| -rw-r--r-- | dash/headless.php | 10 | ||||
| -rw-r--r-- | dash/js/dash.js | 22 | ||||
| -rw-r--r-- | dash/rate.php | 24 |
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'); +?> |
