{"id":9085,"date":"2023-11-15T19:54:41","date_gmt":"2023-11-15T14:24:41","guid":{"rendered":"https:\/\/mgt.sjp.ac.lk\/bec\/?page_id=9085"},"modified":"2026-07-28T17:02:09","modified_gmt":"2026-07-28T11:32:09","slug":"publication-by-lecturers","status":"publish","type":"page","link":"https:\/\/mgt.sjp.ac.lk\/bec\/publication-by-lecturers\/","title":{"rendered":"Publications by Academic Staff"},"content":{"rendered":"\n<!-- BEC Research Outputs: Google Sheet powered publication page -->\n<div id=\"bec-research-directory\" class=\"bec-research-directory\">\n\n  <div class=\"bec-research-introduction\">\n    <div class=\"bec-research-main-title\">Research Outputs<\/div>\n    <p>\n      Explore research outputs published by the academic staff of the Department of Business Economics.\n    <\/p>\n  <\/div>\n\n  <div class=\"bec-research-controls\" aria-label=\"Research output filters\">\n    <div class=\"bec-research-search-wrap\">\n      <label for=\"bec-research-search\">Search publications<\/label>\n      <input\n        type=\"search\"\n        id=\"bec-research-search\"\n        placeholder=\"Search by title, author, publication, or year\"\n        autocomplete=\"off\"\n      >\n    <\/div>\n\n    <div class=\"bec-research-year-wrap\">\n      <label for=\"bec-research-year\">Publication year<\/label>\n      <select id=\"bec-research-year\">\n        <option value=\"\">All years<\/option>\n      <\/select>\n    <\/div>\n  <\/div>\n\n  <div\n    id=\"bec-research-tabs\"\n    class=\"bec-research-tabs\"\n    role=\"tablist\"\n    aria-label=\"Research output categories\"\n  ><\/div>\n\n  <div id=\"bec-research-status\" class=\"bec-research-status\" role=\"status\" aria-live=\"polite\">\n    <span class=\"bec-research-spinner\" aria-hidden=\"true\"><\/span>\n    Loading research outputs&#8230;\n  <\/div>\n\n  <div id=\"bec-research-results\" class=\"bec-research-results\" aria-live=\"polite\"><\/div>\n\n<\/div>\n\n<style>\n.bec-research-directory,\n.bec-research-directory * {\n  box-sizing: border-box;\n}\n\n.bec-research-directory {\n  font-family: Arial, sans-serif;\n  color: #222;\n}\n\n.bec-research-introduction {\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-radius: 12px;\n  padding: 20px;\n  margin-bottom: 20px;\n  line-height: 1.7;\n  color: #444;\n}\n\n.bec-research-introduction p {\n  margin: 0;\n}\n\n.bec-research-main-title {\n  color: #4E0205;\n  font-size: 24px;\n  font-weight: bold;\n  margin-bottom: 8px;\n}\n\n.bec-research-controls {\n  display: grid;\n  grid-template-columns: minmax(0, 2fr) minmax(180px, 1fr);\n  gap: 16px;\n  align-items: end;\n  background: #fafafa;\n  border: 1px solid #e5e5e5;\n  border-left: 4px solid #8A0007;\n  border-radius: 14px;\n  padding: 16px;\n  margin-bottom: 18px;\n}\n\n.bec-research-controls label {\n  display: block;\n  color: #4E0205;\n  font-size: 14px;\n  font-weight: bold;\n  margin-bottom: 7px;\n}\n\n.bec-research-controls input,\n.bec-research-controls select {\n  width: 100%;\n  min-height: 44px;\n  background: #fff;\n  color: #222;\n  border: 1px solid #d7d7d7;\n  border-radius: 9px;\n  padding: 10px 12px;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  outline: none;\n  transition: border-color 0.25s ease, box-shadow 0.25s ease;\n}\n\n.bec-research-controls input:focus,\n.bec-research-controls select:focus {\n  border-color: #8A0007;\n  box-shadow: 0 0 0 3px rgba(138,0,7,0.12);\n}\n\n.bec-research-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  margin-bottom: 18px;\n}\n\n.bec-research-tab {\n  flex: 1 1 190px;\n  min-height: 50px;\n  padding: 12px 16px;\n  background: #fafafa;\n  color: #4E0205;\n  border: 1px solid #e5e5e5;\n  border-bottom: 3px solid #8A0007;\n  border-radius: 10px;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  font-weight: bold;\n  line-height: 1.35;\n  text-align: center;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.bec-research-tab:hover {\n  background: #f5eeee;\n  box-shadow: 0 5px 12px rgba(0,0,0,0.10);\n  transform: translateY(-2px);\n}\n\n.bec-research-tab[aria-selected=\"true\"] {\n  background: #4E0205;\n  color: #fff;\n  border-color: #4E0205;\n  box-shadow: 0 5px 12px rgba(78,2,5,0.20);\n}\n\n.bec-research-tab-count {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-width: 24px;\n  min-height: 24px;\n  margin-left: 6px;\n  padding: 2px 7px;\n  background: rgba(78,2,5,0.09);\n  border-radius: 999px;\n  font-size: 12px;\n}\n\n.bec-research-tab[aria-selected=\"true\"] .bec-research-tab-count {\n  background: rgba(255,255,255,0.18);\n}\n\n.bec-research-results-heading {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  gap: 16px;\n  margin: 0 0 14px 0;\n}\n\n.bec-research-results-title {\n  color: #4E0205;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1.35;\n}\n\n.bec-research-results-count {\n  flex: 0 0 auto;\n  color: #777;\n  font-size: 13px;\n}\n\n.bec-research-grid {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 18px;\n}\n\n.bec-research-card {\n  display: flex;\n  flex-direction: column;\n  background: #fafafa;\n  border: 1px solid #e5e5e5;\n  border-left: 4px solid #8A0007;\n  border-radius: 14px;\n  padding: 18px;\n  box-shadow: 0 3px 10px rgba(0,0,0,0.06);\n  transition: all 0.35s ease;\n}\n\n.bec-research-card:hover {\n  transform: translateY(-4px);\n  box-shadow: 0 10px 20px rgba(0,0,0,0.12);\n}\n\n.bec-research-card-title {\n  color: #4E0205;\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 1.45;\n  margin-bottom: 12px;\n}\n\n.bec-research-card-details {\n  color: #444;\n  font-size: 15px;\n  line-height: 1.6;\n}\n\n.bec-research-card-details p {\n  margin: 5px 0;\n}\n\n.bec-research-card-details strong {\n  color: #333;\n}\n\n.bec-research-links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 9px;\n  margin-top: auto;\n  padding-top: 15px;\n}\n\n.bec-research-link {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 38px;\n  padding: 8px 13px;\n  background: #4E0205;\n  color: #fff !important;\n  border: 1px solid #4E0205;\n  border-radius: 8px;\n  font-size: 13px;\n  font-weight: bold;\n  line-height: 1.2;\n  text-decoration: none !important;\n  transition: all 0.25s ease;\n}\n\n.bec-research-link:hover {\n  background: #8A0007;\n  border-color: #8A0007;\n  box-shadow: 0 4px 10px rgba(78,2,5,0.18);\n  transform: translateY(-1px);\n}\n\n.bec-research-link-secondary {\n  background: #fff;\n  color: #4E0205 !important;\n}\n\n.bec-research-link-secondary:hover {\n  background: #f5eeee;\n  color: #8A0007 !important;\n}\n\n.bec-research-status,\n.bec-research-empty {\n  background: #fafafa;\n  color: #555;\n  border: 1px solid #e5e5e5;\n  border-left: 4px solid #8A0007;\n  border-radius: 12px;\n  padding: 18px;\n  line-height: 1.6;\n}\n\n.bec-research-status {\n  display: flex;\n  align-items: center;\n  gap: 11px;\n}\n\n.bec-research-status.bec-research-error {\n  color: #6f0005;\n  background: #fff8f8;\n}\n\n.bec-research-spinner {\n  width: 20px;\n  height: 20px;\n  flex: 0 0 20px;\n  border: 3px solid #eadcdd;\n  border-top-color: #8A0007;\n  border-radius: 50%;\n  animation: bec-research-spin 0.8s linear infinite;\n}\n\n@keyframes bec-research-spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n@media (max-width: 768px) {\n  .bec-research-controls,\n  .bec-research-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .bec-research-tabs {\n    flex-direction: column;\n  }\n\n  .bec-research-tab {\n    flex: 1 1 auto;\n    width: 100%;\n  }\n\n  .bec-research-results-heading {\n    align-items: flex-start;\n    flex-direction: column;\n    gap: 4px;\n  }\n\n  .bec-research-main-title {\n    font-size: 22px;\n  }\n\n  .bec-research-results-title {\n    font-size: 19px;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .bec-research-directory *,\n  .bec-research-directory *::before,\n  .bec-research-directory *::after {\n    scroll-behavior: auto !important;\n    transition: none !important;\n  }\n\n  .bec-research-spinner {\n    animation-duration: 1.6s;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  'use strict';\n\n  var FEED_URL =\n    'https:\/\/script.google.com\/macros\/s\/AKfycbwHAIWay3_fWV7-8vtEP0F3l4oHQdwUVjljQwG6SM-BSraEbXku_5WtAHF0uIh4wDK3\/exec';\n  var CALLBACK_NAME = 'becResearchFeedCallback';\n  var LOAD_TIMEOUT_MS = 40000;\n\n  var root = document.getElementById('bec-research-directory');\n\n  if (!root) {\n    return;\n  }\n\n  var tabsElement = document.getElementById('bec-research-tabs');\n  var statusElement = document.getElementById('bec-research-status');\n  var resultsElement = document.getElementById('bec-research-results');\n  var searchElement = document.getElementById('bec-research-search');\n  var yearElement = document.getElementById('bec-research-year');\n\n  var state = {\n    publications: [],\n    categories: [],\n    activeCategory: '',\n    search: '',\n    year: ''\n  };\n\n  var loadTimer = window.setTimeout(function () {\n    showError(\n      'The research outputs are taking longer than expected to load. Please refresh the page and try again.'\n    );\n  }, LOAD_TIMEOUT_MS);\n\n  window[CALLBACK_NAME] = function (payload) {\n    window.clearTimeout(loadTimer);\n\n    if (!payload || payload.ok !== true || !Array.isArray(payload.publications)) {\n      showError(\n        payload && payload.message\n          ? payload.message\n          : 'The research output feed could not be loaded.'\n      );\n      return;\n    }\n\n    state.publications = payload.publications.filter(isValidPublication);\n    state.categories = getCategories(payload.categories, state.publications);\n    state.activeCategory = state.categories.length ? state.categories[0] : '';\n\n    populateYears();\n    renderTabs();\n    renderResults();\n\n    statusElement.style.display = 'none';\n  };\n\n  searchElement.addEventListener('input', function () {\n    state.search = normalise(searchElement.value);\n    renderTabs();\n    renderResults();\n  });\n\n  yearElement.addEventListener('change', function () {\n    state.year = yearElement.value;\n    renderTabs();\n    renderResults();\n  });\n\n  function isValidPublication(publication) {\n    return Boolean(\n      publication &&\n      cleanText(publication.title) &&\n      cleanText(publication.authors) &&\n      cleanText(publication.category)\n    );\n  }\n\n  function getCategories(feedCategories, publications) {\n    var categories = [];\n\n    if (Array.isArray(feedCategories)) {\n      feedCategories.forEach(function (category) {\n        addUnique(categories, cleanText(category));\n      });\n    }\n\n    publications.forEach(function (publication) {\n      addUnique(categories, cleanText(publication.category));\n    });\n\n    return categories;\n  }\n\n  function addUnique(items, value) {\n    if (value && items.indexOf(value) === -1) {\n      items.push(value);\n    }\n  }\n\n  function populateYears() {\n    var years = [];\n\n    state.publications.forEach(function (publication) {\n      var year = cleanText(publication.year);\n      if (year && years.indexOf(year) === -1) {\n        years.push(year);\n      }\n    });\n\n    years.sort(function (first, second) {\n      return getYearNumber(second) - getYearNumber(first);\n    });\n\n    years.forEach(function (year) {\n      var option = document.createElement('option');\n      option.value = year;\n      option.textContent = year;\n      yearElement.appendChild(option);\n    });\n  }\n\n  function getYearNumber(value) {\n    var match = String(value || '').match(\/\\b(19|20)\\d{2}\\b\/);\n    return match ? Number(match[0]) : 0;\n  }\n\n  function renderTabs() {\n    tabsElement.innerHTML = '';\n\n    state.categories.forEach(function (category, index) {\n      var button = document.createElement('button');\n      var count = getFilteredPublications(category).length;\n      var isActive = category === state.activeCategory;\n\n      button.type = 'button';\n      button.className = 'bec-research-tab';\n      button.id = 'bec-research-tab-' + index;\n      button.setAttribute('role', 'tab');\n      button.setAttribute('aria-selected', isActive ? 'true' : 'false');\n      button.setAttribute('aria-controls', 'bec-research-results');\n      button.innerHTML =\n        '<span>' + escapeHtml(category) + '<\/span>' +\n        '<span class=\"bec-research-tab-count\">' + count + '<\/span>';\n\n      button.addEventListener('click', function () {\n        state.activeCategory = category;\n        renderTabs();\n        renderResults();\n      });\n\n      tabsElement.appendChild(button);\n    });\n  }\n\n  function renderResults() {\n    if (!state.publications.length) {\n      resultsElement.innerHTML =\n        '<div class=\"bec-research-empty\">' +\n        'No approved research outputs are currently available.' +\n        '<\/div>';\n      return;\n    }\n\n    var publications = getFilteredPublications(state.activeCategory);\n\n    if (!publications.length) {\n      resultsElement.innerHTML =\n        '<div class=\"bec-research-results-heading\">' +\n          '<div class=\"bec-research-results-title\">' +\n            escapeHtml(state.activeCategory) +\n          '<\/div>' +\n          '<div class=\"bec-research-results-count\">0 publications<\/div>' +\n        '<\/div>' +\n        '<div class=\"bec-research-empty\">' +\n          'No research outputs match the selected filters.' +\n        '<\/div>';\n      return;\n    }\n\n    var cards = publications.map(createPublicationCard).join('');\n    var countLabel =\n      publications.length === 1 ? '1 publication' : publications.length + ' publications';\n\n    resultsElement.innerHTML =\n      '<div class=\"bec-research-results-heading\">' +\n        '<div class=\"bec-research-results-title\">' +\n          escapeHtml(state.activeCategory) +\n        '<\/div>' +\n        '<div class=\"bec-research-results-count\">' +\n          escapeHtml(countLabel) +\n        '<\/div>' +\n      '<\/div>' +\n      '<div class=\"bec-research-grid\">' + cards + '<\/div>';\n  }\n\n  function getFilteredPublications(category) {\n    return state.publications.filter(function (publication) {\n      if (cleanText(publication.category) !== category) {\n        return false;\n      }\n\n      if (state.year && cleanText(publication.year) !== state.year) {\n        return false;\n      }\n\n      if (!state.search) {\n        return true;\n      }\n\n      var searchableText = [\n        publication.title,\n        publication.authors,\n        publication.outputType,\n        publication.hostTitle,\n        publication.publisher,\n        publication.year,\n        publication.additionalInformation\n      ].map(cleanText).join(' ');\n\n      return normalise(searchableText).indexOf(state.search) !== -1;\n    });\n  }\n\n  function createPublicationCard(publication) {\n    var details = [];\n    var links = [];\n\n    details.push(createDetail('Author(s)', publication.authors));\n    details.push(createDetail('Research output type', publication.outputType));\n    details.push(createDetail('Published in', publication.hostTitle, true));\n    details.push(createDetail('Publisher \/ Organiser', publication.publisher));\n    details.push(createDetail('Year', publication.year));\n    details.push(createDetail('Additional information', publication.additionalInformation));\n\n    if (isSafeHttpUrl(publication.doi)) {\n      links.push(\n        '<a class=\"bec-research-link\" href=\"' +\n        escapeAttribute(publication.doi) +\n        '\" target=\"_blank\" rel=\"noopener noreferrer\">View DOI<\/a>'\n      );\n    }\n\n    if (\n      isSafeHttpUrl(publication.otherUrl) &&\n      publication.otherUrl !== publication.doi\n    ) {\n      links.push(\n        '<a class=\"bec-research-link bec-research-link-secondary\" href=\"' +\n        escapeAttribute(publication.otherUrl) +\n        '\" target=\"_blank\" rel=\"noopener noreferrer\">View Publication<\/a>'\n      );\n    }\n\n    return (\n      '<article class=\"bec-research-card\">' +\n        '<div class=\"bec-research-card-title\">' +\n          escapeHtml(publication.title) +\n        '<\/div>' +\n        '<div class=\"bec-research-card-details\">' +\n          details.join('') +\n        '<\/div>' +\n        (links.length\n          ? '<div class=\"bec-research-links\">' + links.join('') + '<\/div>'\n          : '') +\n      '<\/article>'\n    );\n  }\n\n  function createDetail(label, value, italicise) {\n    var text = cleanText(value);\n\n    if (!text) {\n      return '';\n    }\n\n    return (\n      '<p><strong>' + escapeHtml(label) + ':<\/strong> ' +\n      (italicise ? '<em>' + escapeHtml(text) + '<\/em>' : escapeHtml(text)) +\n      '<\/p>'\n    );\n  }\n\n  function cleanText(value) {\n    return String(value || '').replace(\/\\s+\/g, ' ').trim();\n  }\n\n  function normalise(value) {\n    return cleanText(value).toLowerCase();\n  }\n\n  function isSafeHttpUrl(value) {\n    return \/^https?:\\\/\\\/[^\\s]+$\/i.test(String(value || ''));\n  }\n\n  function escapeHtml(value) {\n    return String(value || '')\n      .replace(\/&\/g, '&amp;')\n      .replace(\/<\/g, '&lt;')\n      .replace(\/>\/g, '&gt;')\n      .replace(\/\"\/g, '&quot;')\n      .replace(\/'\/g, '&#039;');\n  }\n\n  function escapeAttribute(value) {\n    return escapeHtml(value);\n  }\n\n  function showError(message) {\n    window.clearTimeout(loadTimer);\n    statusElement.className = 'bec-research-status bec-research-error';\n    statusElement.innerHTML = escapeHtml(message);\n    resultsElement.innerHTML = '';\n  }\n\n  var feedScript = document.createElement('script');\n  feedScript.src =\n    FEED_URL +\n    '?prefix=' +\n    encodeURIComponent(CALLBACK_NAME) +\n    '&cache=' +\n    new Date().getTime();\n  feedScript.async = true;\n  feedScript.onerror = function () {\n    showError(\n      'The research output feed could not be loaded. Please refresh the page and try again.'\n    );\n  };\n\n  document.body.appendChild(feedScript);\n}());\n<\/script>\n\n\n\n<p class=\"has-vivid-purple-color has-text-color has-medium-font-size\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Research Outputs Explore research outputs published by the academic staff of the Department of Business Economics. Search publications Publication year All years Loading research outputs&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9085","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P7odTZ-2mx","_links":{"self":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/pages\/9085"}],"collection":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/comments?post=9085"}],"version-history":[{"count":16,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/pages\/9085\/revisions"}],"predecessor-version":[{"id":12773,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/pages\/9085\/revisions\/12773"}],"wp:attachment":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/media?parent=9085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}