diff -urN rc1/application/config/config.php rc1a/application/config/config.php --- rc1/application/config/config.php 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/application/config/config.php 2025-12-12 15:06:46.000000000 +0000 @@ -362,4 +362,4 @@ /* End of file config.php */ -/* Location: ./application/config/config.php */ \ No newline at end of file +/* Location: ./application/config/config.php */ diff -urN rc1/application/controllers/manager/ad.php rc1a/application/controllers/manager/ad.php --- rc1/application/controllers/manager/ad.php 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/application/controllers/manager/ad.php 2025-12-12 15:06:46.000000000 +0000 @@ -371,7 +371,7 @@ // delete the file if resize fails debug('resize failed - deleting original file - upload failed'); unlink('./uploads/ads/images/' . $orig_file_name); - $data['upload_error'] = $this->image_lib->display_errors() . 'snerf' . lang('manager_review_form_remote_image_fail'); + $data['upload_error'] = $this->image_lib->display_errors() . lang('manager_review_form_remote_image_fail'); $file_error = 1; } else { // delete the temporary resized image file diff -urN rc1/application/controllers/manager/ads.php rc1a/application/controllers/manager/ads.php --- rc1/application/controllers/manager/ads.php 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/application/controllers/manager/ads.php 2025-12-12 15:06:46.000000000 +0000 @@ -44,7 +44,7 @@ class Ads extends CI_Controller { /* - * Articles controller class constructor + * Ads controller class constructor */ function Ads() { diff -urN rc1/application/controllers/review.php rc1a/application/controllers/review.php --- rc1/application/controllers/review.php 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/application/controllers/review.php 2025-12-12 15:06:46.000000000 +0000 @@ -42,24 +42,23 @@ * @link http://OpenReviewScript.org */ class Review extends CI_Controller { - /* * Review controller class constructor */ function Review() { - parent::__construct(); - $this->load->model('Review_model'); - $this->load->model('Review_feature_model'); - $this->load->model('Review_rating_model'); - $this->load->model('Category_model'); - $this->load->model('Comment_model'); - $this->load->model('Ad_model'); - $this->load->library('form_validation'); - $this->load->helper('captcha'); - $this->load->helper('Date'); - // load all settings into an array - $this->setting = $this->Setting_model->getEverySetting(); + parent::__construct(); + $this->load->model('Review_model'); + $this->load->model('Review_feature_model'); + $this->load->model('Review_rating_model'); + $this->load->model('Category_model'); + $this->load->model('Comment_model'); + $this->load->model('Ad_model'); + $this->load->library('form_validation'); + $this->load->helper('captcha'); + $this->load->helper('Date'); + // load all settings into an array + $this->setting = $this->Setting_model->getEverySetting(); } /* @@ -69,106 +68,106 @@ */ function show($requested_review_title) { - debug('review page | show function'); - //load data for view - $data['featured_count'] = $this->setting['featured_count']; - $approval_required = $this->setting['review_approval']; - $data['featured'] = $this->Review_model->getFeaturedReviews($data['featured_count'], 0, $approval_required); - $data['featured_minimum'] = $this->setting['featured_minimum']; - $data['featured_reviews'] = $this->setting['featured_section_review'] == 1 ? count($data['featured']) : 0; - $data['show_search'] = $this->setting['search_sidebar']; - $data['show_recent'] = $this->setting['recent_review_sidebar']; - $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; - $data['captcha_verification'] = $this->setting['captcha_verification']; - $approval_required = $this->setting['review_approval']; - if ($data['show_recent'] == 1) { - $data['recent'] = $this->Review_model->getLatestReviews($this->setting['number_of_reviews_sidebar'], 0, $approval_required); - } else { - $data['recent'] = FALSE; - } - // load the review - $data['review'] = $this->Review_model->getReviewBySeoTitle($requested_review_title); - // check if a manager level user is logged in - $managerLoggedIn = $this->secure->isManagerLoggedIn($this->session); - $data['sidebar_ads'] = $this->Ad_model->getAds($this->setting['max_ads_review_sidebar'], 3); - $data['categories'] = $this->Category_model->getAllCategories(0); - $data['show_categories'] = $this->setting['categories_sidebar']; - if ($this->setting['tag_cloud_sidebar'] > 0) { - // prepare Tag Cloud - $data['tagcloud'] = $this->Review_model->getTagCloudArray(); - foreach ($data['tagcloud'] as $key => $value) { - $tagcount[$key] = $value[0]; - } - $data['cloudmax'] = max($tagcount); - $data['cloudmin'] = min($tagcount); - } - $data['keywords'] = ''; - if ($data['review']) { - debug('loaded review'); - // review exists - if (($data['review']->approved > 0) OR ($managerLoggedIn) OR ($approval_required == 0)) { - // the review has been approved OR the user is a manager level user current logged in - debug('review is approved (or manager is logged in)'); - $data['ratings'] = $this->Review_rating_model->getReviewRatingsForReviewById($data['review']->id); - $data['review_ads'] = $this->Ad_model->getAds(1, 2); - $data['features'] = $this->Review_feature_model->getReviewFeaturesForReviewById($data['review']->id); - $data['features_count'] = !$data['features'] ? 0 : count($data['features']); - $data['lightbox'] = $this->setting['thumbnail_is_link'] == 0; - $data['social_bookmarks'] = // create the Social bookmark bar - $data['keywords'] = ''; - // if this review is not approved but the user is a manager - // show a message warning the manager that the review is not visible to visitors yet - $data['message'] = (($managerLoggedIn) && ($data['review']->approved == 0) && ($approval_required == 1)) ? lang('review_visible_because_manager') : ''; - // set page title, meta keywords and description - $data['page_title'] = $this->setting['site_name'] . ' - ' . lang('page_title_review') . ' - ' . $data['review']->title; - if (trim($data['review']->meta_keywords) !== '') { - $data['meta_keywords'] = trim($data['review']->meta_keywords); - } else { - $data['meta_keywords'] = str_replace('"', '', $data['review']->tags); - } - if (trim($data['review']->meta_description) !== '') { - $data['meta_description'] = $this->setting['site_name'] . ' - ' . strip_tags($this->setting['site_summary_title']) . ' - ' . trim($data['review']->meta_description); - } else { - $data['meta_description'] = $this->setting['site_name'] . ' - ' . strip_tags($this->setting['site_summary_title']) . ' - ' . str_replace('"', '', character_limiter(strip_tags($data['review']->description, 155))); - } - // set up config for captcha images - $vals = array( - 'img_path' => './uploads/captcha/', - 'img_url' => site_url() . 'uploads/captcha/' - ); - $cap = create_captcha($vals); - $cap_data = array( - 'captcha_time' => $cap['time'], - 'ip_address' => $this->input->ip_address(), - 'word' => $cap['word'] - ); - // insert temporary captcha data - $query = $this->db->insert_string('captcha', $cap_data); - $this->db->query($query); - $data['captcha_image'] = $cap['image']; - // count the 'page view' for this review - $this->Review_model->addView($data['review']->id); - // show the review page - debug('loading "review/review_content" view'); - $sections = array('content' => 'site/' . $this->setting['current_theme'] . '/template/review/review_content', 'sidebar' => 'site/' . $this->setting['current_theme'] . '/template/review/review_sidebar'); - $this->template->load('site/' . $this->setting['current_theme'] . '/template/template.tpl', $sections, $data); - } else { - // review is not approved and the user is not a manager - debug('review is not approved and user is not a manager'); - $data['title'] = $data['review']->title; - $data['page_title'] = $this->setting['site_name'] . ' - Review - ' . $data['review']->title; - $data['meta_keywords'] = str_replace('"', '', $this->setting['site_name']); - $data['meta_description'] = str_replace('"', '', $data['review']->title); - // show the review pending page - debug('loading "review/review_pending" view'); - $sections = array('content' => 'site/' . $this->setting['current_theme'] . '/template/review/review_pending', 'sidebar' => 'site/' . $this->setting['current_theme'] . '/template/review/review_sidebar'); - $this->template->load('site/' . $this->setting['current_theme'] . '/template/template.tpl', $sections, $data); - } - } else { - // review not found so show not found page - debug('review not found - show 404 not found page'); - show_404(); - } + debug('review page | show function'); + //load data for view + $data['featured_count'] = $this->setting['featured_count']; + $approval_required = $this->setting['review_approval']; + $data['featured'] = $this->Review_model->getFeaturedReviews($data['featured_count'], 0, $approval_required); + $data['featured_minimum'] = $this->setting['featured_minimum']; + $data['featured_reviews'] = $this->setting['featured_section_review'] == 1 ? count($data['featured']) : 0; + $data['show_search'] = $this->setting['search_sidebar']; + $data['show_recent'] = $this->setting['recent_review_sidebar']; + $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; + $data['captcha_verification'] = $this->setting['captcha_verification']; + $approval_required = $this->setting['review_approval']; + if ($data['show_recent'] == 1) { + $data['recent'] = $this->Review_model->getLatestReviews($this->setting['number_of_reviews_sidebar'], 0, $approval_required); + } else { + $data['recent'] = FALSE; + } + // load the review + $data['review'] = $this->Review_model->getReviewBySeoTitle($requested_review_title); + // check if a manager level user is logged in + $managerLoggedIn = $this->secure->isManagerLoggedIn($this->session); + $data['sidebar_ads'] = $this->Ad_model->getAds($this->setting['max_ads_review_sidebar'], 3); + $data['categories'] = $this->Category_model->getAllCategories(0); + $data['show_categories'] = $this->setting['categories_sidebar']; + if ($this->setting['tag_cloud_sidebar'] > 0) { + // prepare Tag Cloud + $data['tagcloud'] = $this->Review_model->getTagCloudArray(); + foreach ($data['tagcloud'] as $key => $value) { + $tagcount[$key] = $value[0]; + } + $data['cloudmax'] = max($tagcount); + $data['cloudmin'] = min($tagcount); + } + $data['keywords'] = ''; + if ($data['review']) { + debug('loaded review'); + // review exists + if (($data['review']->approved > 0) OR ($managerLoggedIn) OR ($approval_required == 0)) { + // the review has been approved OR the user is a manager level user current logged in + debug('review is approved (or manager is logged in)'); + $data['ratings'] = $this->Review_rating_model->getReviewRatingsForReviewById($data['review']->id); + $data['review_ads'] = $this->Ad_model->getAds(1, 2); + $data['features'] = $this->Review_feature_model->getReviewFeaturesForReviewById($data['review']->id); + $data['features_count'] = !$data['features'] ? 0 : count($data['features']); + $data['lightbox'] = $this->setting['thumbnail_is_link'] == 0; + $data['social_bookmarks'] = // create the Social bookmark bar + $data['keywords'] = ''; + // if this review is not approved but the user is a manager + // show a message warning the manager that the review is not visible to visitors yet + $data['message'] = (($managerLoggedIn) && ($data['review']->approved == 0) && ($approval_required == 1)) ? lang('review_visible_because_manager') : ''; + // set page title, meta keywords and description + $data['page_title'] = $this->setting['site_name'] . ' - ' . lang('page_title_review') . ' - ' . $data['review']->title; + if (trim($data['review']->meta_keywords) !== '') { + $data['meta_keywords'] = trim($data['review']->meta_keywords); + } else { + $data['meta_keywords'] = str_replace('"', '', $data['review']->tags); + } + if (trim($data['review']->meta_description) !== '') { + $data['meta_description'] = $this->setting['site_name'] . ' - ' . strip_tags($this->setting['site_summary_title']) . ' - ' . trim($data['review']->meta_description); + } else { + $data['meta_description'] = $this->setting['site_name'] . ' - ' . strip_tags($this->setting['site_summary_title']) . ' - ' . str_replace('"', '', character_limiter(strip_tags($data['review']->description, 155))); + } + // set up config for captcha images + $vals = array( + 'img_path' => './uploads/captcha/', + 'img_url' => site_url() . 'uploads/captcha/' + ); + $cap = create_captcha($vals); + $cap_data = array( + 'captcha_time' => $cap['time'], + 'ip_address' => $this->input->ip_address(), + 'word' => $cap['word'] + ); + // insert temporary captcha data + $query = $this->db->insert_string('captcha', $cap_data); + $this->db->query($query); + $data['captcha_image'] = $cap['image']; + // count the 'page view' for this review + $this->Review_model->addView($data['review']->id); + // show the review page + debug('loading "review/review_content" view'); + $sections = array('content' => 'site/' . $this->setting['current_theme'] . '/template/review/review_content', 'sidebar' => 'site/' . $this->setting['current_theme'] . '/template/review/review_sidebar'); + $this->template->load('site/' . $this->setting['current_theme'] . '/template/template.tpl', $sections, $data); + } else { + // review is not approved and the user is not a manager + debug('review is not approved and user is not a manager'); + $data['title'] = $data['review']->title; + $data['page_title'] = $this->setting['site_name'] . ' - Review - ' . $data['review']->title; + $data['meta_keywords'] = str_replace('"', '', $this->setting['site_name']); + $data['meta_description'] = str_replace('"', '', $data['review']->title); + // show the review pending page + debug('loading "review/review_pending" view'); + $sections = array('content' => 'site/' . $this->setting['current_theme'] . '/template/review/review_pending', 'sidebar' => 'site/' . $this->setting['current_theme'] . '/template/review/review_sidebar'); + $this->template->load('site/' . $this->setting['current_theme'] . '/template/template.tpl', $sections, $data); + } + } else { + // review not found so show not found page + debug('review not found - show 404 not found page'); +// show_404(); + } } /* @@ -179,21 +178,21 @@ */ function display_comments($id) { - debug('review page | display_comments function'); - // check if comment approval is required - if ($this->setting['comment_approval'] == 1) { - // load only approved comments for the review - $data['comments'] = $this->Comment_model->getApprovedCommentsForReviewById($id); - } else { - // load all comments for the review - $data['comments'] = $this->Comment_model->getCommentsForReviewById($id); - } - $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; - $data['comments_count'] = !$data['comments'] ? 0 : count($data['comments']); - $data['visitor_rating_image'] = $this->Comment_model->GetVisitorRatingForReviewById($id); - // show the review comments - debug('loading "review/review_comments" view'); - $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/review_comments', $data); + debug('review page | display_comments function'); + // check if comment approval is required + if ($this->setting['comment_approval'] == 1) { + // load only approved comments for the review + $data['comments'] = $this->Comment_model->getApprovedCommentsForReviewById($id); + } else { + // load all comments for the review + $data['comments'] = $this->Comment_model->getCommentsForReviewById($id); + } + $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; + $data['comments_count'] = !$data['comments'] ? 0 : count($data['comments']); + $data['visitor_rating_image'] = $this->Comment_model->GetVisitorRatingForReviewById($id); + // show the review comments + debug('loading "review/review_comments" view'); + $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/review_comments', $data); } /* @@ -204,113 +203,113 @@ */ function comment_submit($id) { - debug('review page | comment_submit function'); - // prepare data for - $comment->quotation = ''; - $comment->source = ''; - $comment->site_link = ''; - $data['comment'] = $comment; - // check review id has been provided - if ($id) { - // load the review - $review = $this->Review_model->getReviewById($id); - if ($review) { - // review exists - if ($this->input->post('comment_submitted') == 1) { - debug('comment submitted'); - // form data submitted - $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; - $quotation = trim($this->input->post('comment')); - $source = trim($this->input->post('name')); - $rating = $this->input->post('rating'); - $captcha = trim($this->input->post('captcha')); - $captcha_required = $this->setting['captcha_verification']; - $auto_approve = $this->setting['comment_auto']; - $comment_approval = $this->setting['comment_approval']; - $approval_status = ($comment_approval == 0) OR ($auto_approve == 1) ? 1 : 0; - if (($quotation !== '') && ($source !== '') && (($captcha !== '') OR ($captcha_required == 0))) { - if (!$this->Comment_model->doesCommentExist($quotation, $source)) { - // comment is not a duplicate... prevents user submitting the same comment more than once - if ($captcha_required == 1) { - debug('check captcha'); - // comments form is using captcha - // set captcha data to expire after 5 minutes - $expiration = time() - 300; - // delete 'old' captcha data - if we didn't do this the captcha table would keep growing - $this->db->query('DELETE FROM captcha WHERE captcha_time < ' . $expiration); - // - $sql = 'SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?'; - $binds = array($captcha, $this->input->ip_address(), $expiration); - $query = $this->db->query($sql, $binds); - $row = $query->row(); - $captcha_success = $row->count > 0; - if ($row->count > 0) { - // captcha code was entered successfully - // add the comment - $addComment = $this->Comment_model->addComment($id, $quotation, $source, '', $approval_status, $rating); - if ($approval_status == 0) { - // if not approved tell user their comment will appear when manager has approved it - debug('comment not approved yet - display message'); - $data['message'] = lang('review_comment_submitted_pending'); - } else { - // comment is approved... show message to user - debug('comment approved - display message'); - $data['message'] = lang('review_comment_submitted_success'); - } - // delete this captcha item from the database - $this->db->query("DELETE FROM captcha WHERE word = '" . $captcha . "'"); - // hide the form - $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/hide_form', $data); - } else { - // user failed to enter correct captcha code - $data['message'] = lang('review_comment_captcha_fail'); - } - } else { - // captcha not required so just add the comment - debug('captcha not required'); - $addComment = $this->Comment_model->addComment($id, $quotation, $source, '', $approval_status, $rating); - if ($approval_status == 0) { - // if not approved tell user their comment will appear when manager has approved it - debug('comment not approved yet - display message'); - $data['message'] = lang('review_comment_submitted_pending'); - } else { - // comment is approved... show message to user - debug('comment approved - display message'); - $data['message'] = lang('review_comment_submitted_success'); - } - // hide the form - $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/hide_form', $data); - } - } else { - // exact same comment already posted by same user... display a message - debug('same comment already posted by same user - display message'); - $data['message'] = lang('review_comment_exists_fail'); - } - } else { - // form not completed... display a message - debug('form not completed - display message'); - $data['message'] = lang('review_comment_incomplete_fail'); - } - } - } - } - // reload comments - if ($this->setting['comment_approval'] == 1) { - debug('reload approved comments'); - $data['comments'] = $this->Comment_model->getApprovedCommentsForReviewById($id); - } else { - debug('reload comments'); - $data['comments'] = $this->Comment_model->getCommentsForReviewById($id); - } - $data['comments_count'] = !$data['comments'] ? 0 : count($data['comments']); - // get visitor rating for this review - $data['visitor_rating_image'] = $this->Comment_model->GetVisitorRatingForReviewById($id); - // show comments - debug('show comments'); - $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/review_comments', $data); + debug('review page | comment_submit function'); + // prepare data for + $comment->quotation = ''; + $comment->source = ''; + $comment->site_link = ''; + $data['comment'] = $comment; + // check review id has been provided + if ($id) { + // load the review + $review = $this->Review_model->getReviewById($id); + if ($review) { + // review exists + if ($this->input->post('comment_submitted') == 1) { + debug('comment submitted'); + // form data submitted + $data['show_visitor_rating'] = $this->setting['show_visitor_rating']; + $quotation = trim($this->input->post('comment')); + $source = trim($this->input->post('name')); + $rating = $this->input->post('rating'); + $captcha = trim($this->input->post('captcha')); + $captcha_required = $this->setting['captcha_verification']; + $auto_approve = $this->setting['comment_auto']; + $comment_approval = $this->setting['comment_approval']; + $approval_status = ($comment_approval == 0) OR ($auto_approve == 1) ? 1 : 0; + if (($quotation !== '') && ($source !== '') && (($captcha !== '') OR ($captcha_required == 0))) { + if (!$this->Comment_model->doesCommentExist($quotation, $source)) { + // comment is not a duplicate... prevents user submitting the same comment more than once + if ($captcha_required == 1) { + debug('check captcha'); + // comments form is using captcha + // set captcha data to expire after 5 minutes + $expiration = time() - 300; + // delete 'old' captcha data - if we didn't do this the captcha table would keep growing + $this->db->query('DELETE FROM captcha WHERE captcha_time < ' . $expiration); + // + $sql = 'SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?'; + $binds = array($captcha, $this->input->ip_address(), $expiration); + $query = $this->db->query($sql, $binds); + $row = $query->row(); + $captcha_success = $row->count > 0; + if ($row->count > 0) { + // captcha code was entered successfully + // add the comment + $addComment = $this->Comment_model->addComment($id, $quotation, $source, '', $approval_status, $rating); + if ($approval_status == 0) { + // if not approved tell user their comment will appear when manager has approved it + debug('comment not approved yet - display message'); + $data['message'] = lang('review_comment_submitted_pending'); + } else { + // comment is approved... show message to user + debug('comment approved - display message'); + $data['message'] = lang('review_comment_submitted_success'); + } + // delete this captcha item from the database + $this->db->query("DELETE FROM captcha WHERE word = '" . $captcha . "'"); + // hide the form + $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/hide_form', $data); + } else { + // user failed to enter correct captcha code + $data['message'] = lang('review_comment_captcha_fail'); + } + } else { + // captcha not required so just add the comment + debug('captcha not required'); + $addComment = $this->Comment_model->addComment($id, $quotation, $source, '', $approval_status, $rating); + if ($approval_status == 0) { + // if not approved tell user their comment will appear when manager has approved it + debug('comment not approved yet - display message'); + $data['message'] = lang('review_comment_submitted_pending'); + } else { + // comment is approved... show message to user + debug('comment approved - display message'); + $data['message'] = lang('review_comment_submitted_success'); + } + // hide the form + $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/hide_form', $data); + } + } else { + // exact same comment already posted by same user... display a message + debug('same comment already posted by same user - display message'); + $data['message'] = lang('review_comment_exists_fail'); + } + } else { + // form not completed... display a message + debug('form not completed - display message'); + $data['message'] = lang('review_comment_incomplete_fail'); + } + } + } + } + // reload comments + if ($this->setting['comment_approval'] == 1) { + debug('reload approved comments'); + $data['comments'] = $this->Comment_model->getApprovedCommentsForReviewById($id); + } else { + debug('reload comments'); + $data['comments'] = $this->Comment_model->getCommentsForReviewById($id); + } + $data['comments_count'] = !$data['comments'] ? 0 : count($data['comments']); + // get visitor rating for this review + $data['visitor_rating_image'] = $this->Comment_model->GetVisitorRatingForReviewById($id); + // show comments + debug('show comments'); + $this->load->view('site/' . $this->setting['current_theme'] . '/template/review/review_comments', $data); } } /* End of file review.php */ -/* Location: ./application/controllers/review.php */ \ No newline at end of file +/* Location: ./application/controllers/review.php */ diff -urN rc1/index.php rc1a/index.php --- rc1/index.php 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/index.php 2025-12-12 15:06:46.000000000 +0000 @@ -224,4 +224,4 @@ require_once BASEPATH.'core/CodeIgniter.php'; /* End of file index.php */ -/* Location: ./index.php */ \ No newline at end of file +/* Location: ./index.php */ diff -urN rc1/README rc1a/README --- rc1/README 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/README 2025-12-12 23:46:12.000000000 +0000 @@ -1,5 +1,5 @@ -OpenReviewScript ©2011 - Version 1.0rc1 ---------------------------------------- +OpenReviewScript ©2011 - Version 1.0rc1a +---------------------------------------- OpenReviewScript is free, open source software for creating product or service review websites, written in PHP using the CodeIgniter framework (http://codeigniter.com) and released under the GPLv2 license (see the 'LICENSE' file for more details). Contact us at: help@openreviewscript.org or http://openreviewscript.org/contact @@ -20,4 +20,4 @@ Installation ============ -For installation instructions, go to http://openreviewscript.org/install \ No newline at end of file +For installation instructions, go to http://openreviewscript.org/install diff -urN rc1/themes/site/blue_black/design/style.css rc1a/themes/site/blue_black/design/style.css --- rc1/themes/site/blue_black/design/style.css 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/themes/site/blue_black/design/style.css 2025-12-12 15:06:46.000000000 +0000 @@ -54,6 +54,7 @@ margin:10px auto 10px auto; background:#ffffff; min-height:120px; + height:120px } #sidebar { width:250px; @@ -92,7 +93,7 @@ text-decoration:underline; } #sidebar form.tagform { - display: inline; + float:right; padding:10px 5px 10px 5px; line-height:200%; cursor:pointer; @@ -131,17 +132,21 @@ padding: 0px; list-style: none; line-height: normal; + height:80px; } #navbar li { float: right; + height: 80px; + border:0px; } #navbar a { - display: block; height: 80px; + min-height:80px; margin-right: 1px; padding: 32px 40px 0px 40px; + display:inline-block; text-decoration: none; text-align: center; text-transform: uppercase; @@ -154,17 +159,19 @@ } #navbar a:hover { + height:80px; background: url(images/navbar_background_slice_light.png) repeat-x left top; text-decoration: none; color: #FFFFFF; } #navbar li p { - + height:80px; float:left; margin:0; padding:0; - background: #ffffff url(images/navbar_item_separator.png) no-repeat; - width:2px; + border:0px; + background: #ff0000 url(images/navbar_item_separator.png) no-repeat; + width:1px; min-height:80px; } #footer { @@ -357,7 +364,7 @@ text-decoration: underline; } #featured { - width:680px; + width:700px; display:block; height:200px; padding:0px; @@ -374,11 +381,11 @@ display:block; margin-left:5px; margin-right:10px; - padding:10px; background: url(images/featured_background.png) no-repeat; } .featured_block p { margin:0px; + padding:10px; } .featured_block .read_more { width: 90px; @@ -400,7 +407,7 @@ } .featured_block .featured_title { line-height: 130%; - padding:0px 5px 0px 5px; + padding:3px 15px 0px 15px; } .featured_block .featured_description { line-height: 13px; @@ -688,10 +695,11 @@ text-align:center; font-size:20px; margin:0px; - padding:10px 0px 0px 0px; + padding:5px 0px 0px 0px; } #search form { - padding-top:10px; + margin:0px; + padding:5px 0px 0px 0px; text-align:center; } #search-text { @@ -726,4 +734,4 @@ #error { color:#ff0000; font-weight: bold; -} \ No newline at end of file +} diff -urN rc1/themes/site/blue_black/template/contact/form.tpl rc1a/themes/site/blue_black/template/contact/form.tpl --- rc1/themes/site/blue_black/template/contact/form.tpl 2025-11-24 14:29:40.000000000 +0000 +++ rc1a/themes/site/blue_black/template/contact/form.tpl 2025-12-17 22:48:30.000000000 +0000 @@ -69,10 +69,10 @@