Skip to content

Commit

Permalink
Fixed #285 -- Gerar widgets do dashboard de forma async
Browse files Browse the repository at this point in the history
  • Loading branch information
wilsonmoura committed Jan 14, 2023
1 parent 52ee726 commit fb00be9
Show file tree
Hide file tree
Showing 8 changed files with 302 additions and 126 deletions.
13 changes: 6 additions & 7 deletions client/business.php
Expand Up @@ -20,13 +20,12 @@
exit();
}
} else {
switch ( $_REQUEST['action'] ) {
case 'authentication': break;
case 'servicesplatform': break;
case 'mydocuments': if ( $public ) break;
case 'suggesteddocs': if ( $public ) break;
default: $_REQUEST["action"] = 'logout'; break;
}
$fl = true; // force logout
if ( $_REQUEST["action"] == 'authentication' ) $fl = false;
if ( $_REQUEST["action"] == 'servicesplatform' ) $fl = false;
if ( $_REQUEST["action"] == 'mydocuments' and $public ) $fl = false;
if ( $_REQUEST["action"] == 'suggesteddocs' and $public ) $fl = false;
if ( $fl ) $_REQUEST["action"] = 'logout';
}

switch($_REQUEST["action"]){
Expand Down
118 changes: 118 additions & 0 deletions client/business/suggesteddocs.php
Expand Up @@ -11,9 +11,11 @@
/*
* Edit this file in UTF-8 - Test String "áéíóú"
*/
require_once(dirname(__FILE__)."/../classes/Authentication.php");
require_once(dirname(__FILE__)."/../classes/DocsCollection.php");
require_once(dirname(__FILE__)."/../classes/MyProfiles.php");
require_once(dirname(__FILE__)."/../classes/SimilarDocs.php");
require_once(dirname(__FILE__)."/../../server/pub/include/professionalAreaLibrary.php");

if ($_REQUEST["task"] === null){
$_REQUEST["task"] = "list";
Expand Down Expand Up @@ -106,6 +108,122 @@
die("default");
}
break;
case "events":
$data = Authentication::getUserData($_SESSION["userTK"]);
$query_pt = $professionalArea['pt'][$data['professional_area']];
$query_es = $professionalArea['es'][$data['professional_area']];
$query_en = $professionalArea['en'][$data['professional_area']];
$query = '(' . $query_pt . ' OR ' . $query_es . ' OR ' . $query_en . ')';
$events = Events::get_events($query);

if ( $events ) {
$html = '<br />';
foreach ( $events as $event ) {
$month = (int) substr($event->start_date, 5, 2);
$month_name = Generic::month_name($month, true);
$start_date = substr($event->start_date, 8, 2);
$link = $DIREVE[$_SESSION['lang']] . 'resource/?id=' . $event->django_id;
// $link = ( $event->link ) ? $event->link[0] : $DIREVE[$_SESSION['lang']] . 'resource/?id=' . $event->django_id;

$html .= '<article class="event">';
$html .= ' <a href="'.$link.'" target="_blank">';
$html .= ' <div class="eventDate">';
$html .= ' <p class="eventMes">'.$month_name.'</p>';
$html .= ' <p class="eventDia">'.$start_date.'</p>';
$html .= ' </div>';
$html .= ' <div class="eventText">'.$event->title.'</div>';
$html .= ' <div class="clearfix"></div>';
$html .= ' </a>';
$html .= '</article>';
}
} else {
$html = '<br />';
$html .= $trans->getTrans('menu','EVENTS_NOT_FOUND');
}

die($html);
break;
case "multimedia":
$data = Authentication::getUserData($_SESSION["userTK"]);
$query_pt = $professionalArea['pt'][$data['professional_area']];
$query_es = $professionalArea['es'][$data['professional_area']];
$query_en = $professionalArea['en'][$data['professional_area']];
$query = '(' . $query_pt . ' OR ' . $query_es . ' OR ' . $query_en . ')';
$multimedia = Multimedia::get_media($query);

$html = '';
if ( $multimedia ) {
foreach ( $multimedia as $media ) {
$title = mb_substr($media->title, 0, 50);
$thumb = Multimedia::get_thumbnail($media);
$link = $MULTIMEDIA[$_SESSION['lang']] . 'resource/?id=' . $media->id;
// $link = ( $media->link ) ? $media->link[0] : $MULTIMEDIA[$_SESSION['lang']] . 'resource/?id=' . $media->id;

$html .= '<div class="col s12 m4">';
$html .= ' <a href="'.$link.'" target="_blank">';
$html .= ' <p>';
$html .= ' <span class="left"><img src="'.$thumb.'" alt="" style="padding: 0 20px 5px 0px"></span>';
if ( strlen($media->title) > 50 ) {
$html .= ' <b class="media-title">'.$title.'...</b>';
} else {
$html .= ' <b class="media-title">'.$media->title.'</b>';
}
$html .= ' </p>';
$html .= ' <div class="clearfix"></div>';
$html .= ' <div class="divider"></div>';
$html .= ' </a>';
$html .= '</div>';
}
$html .= '<div class="col s12 center-align" id="verMaisMidia">';
$html .= ' <a href="'.$MULTIMEDIA[$_SESSION['lang']].'?q='.urlencode($query).'" target="_blank">'.$trans->getTrans('menu','SEE_MORE').'</a>';
$html .= '</div>';
} else {
$html .= '<div class="col s12">'.$trans->getTrans('menu','MEDIA_NOT_FOUND').'</div>';
}

die($html);
break;
case "resources":
$data = Authentication::getUserData($_SESSION["userTK"]);
$query_pt = $professionalArea['pt'][$data['professional_area']];
$query_es = $professionalArea['es'][$data['professional_area']];
$query_en = $professionalArea['en'][$data['professional_area']];
$query = '(' . $query_pt . ' OR ' . $query_es . ' OR ' . $query_en . ')';
$oer_query = 'ti:'.$query.' OR mh:'.$query;
$resources = OER::get_resources($oer_query);

$html = '';
if ( $resources ) {
foreach ( $resources as $oer ) {
$title = mb_substr($oer->title, 0, 50);
$thumb = OER::get_thumbnail($oer);
$link = OER_DOMAIN . '/resource/' . $_SESSION['lang'] . '/oer-' . $oer->django_id;
// $link = ( $oer->link ) ? $oer->link[0] : OER_DOMAIN.'/resource/'.$_SESSION['lang'].'/oer-'.$oer->django_id;

$html .= '<div class="col s12 m4">';
$html .= ' <a href="'.$link.'" target="_blank">';
$html .= ' <p>';
$html .= ' <span class="left"><img src="'.$thumb.'" alt="" style="padding: 0 20px 5px 0px"></span>';
if ( strlen($oer->title) > 50 ) {
$html .= ' <b class="media-title">'.$title.'...</b>';
} else {
$html .= ' <b class="media-title">'.$oer->title.'</b>';
}
$html .= ' </p>';
$html .= ' <div class="clearfix"></div>';
$html .= ' <div class="divider"></div>';
$html .= ' </a>';
$html .= '</div>';
}
$html .= '<div class="col s12 center-align" id="verMaisMidia">';
$html .= ' <a href="'.OER_DOMAIN.'?q='.urlencode($oer_query).'" target="_blank">'.$trans->getTrans('menu','SEE_MORE').'</a>';
$html .= '</div>';
} else {
$html .= '<div class="col s12">'.$trans->getTrans('menu','OER_NOT_FOUND').'</div>';
}

die($html);
break;
default:
die("default");
break;
Expand Down
28 changes: 14 additions & 14 deletions client/business/widgets.php
Expand Up @@ -23,26 +23,26 @@
$params["widget"] = true;
$params["count"] = WIDGETS_ITEMS_LIMIT;

// My Links widget
//$links = MyLinks::getLinkList( $_SESSION["userTK"], $params );
//$totalLinks = MyLinks::getTotalItens( $_SESSION["userTK"] );

// Recent Activities widget
//$params["sort"] = 'date';
//$dataHistory = Tracking::getTraceList( $_SESSION["userTK"], $params );

// Suggested Documents widget
//$suggestedDocs = SimilarDocs::getRelatedDocs( $_SESSION["userTK"], $_COOKIE["related"] );

// My Collections widget
$collections = DocsCollection::listDocs( $_SESSION['userTK'], null, $params );
$collections = Generic::unique_list_docs($collections, 'docID');
$totalCollections = DocsCollection::getTotalDocs( $_SESSION["userTK"], null, true );

// My Links widget
$links = MyLinks::getLinkList( $_SESSION["userTK"], $params );
$totalLinks = MyLinks::getTotalItens( $_SESSION["userTK"] );

// Profile Documents widget
$profiles = MyProfiles::getProfileList( $_SESSION["userTK"], $params );
$totalProfiles = MyProfiles::getTotalItens( $_SESSION["userTK"] );

// Recent Activities widget
//$params["sort"] = 'date';
$dataHistory = Tracking::getTraceList( $_SESSION["userTK"], $params );

// Suggested Documents widget
$suggestedDocs = SimilarDocs::getRelatedDocs( $_SESSION["userTK"], $_COOKIE["related"] );

// Highlights widget
$highlights = Slider::get_highlights();

Expand All @@ -53,9 +53,9 @@
$query_en = $professionalArea['en'][$data['professional_area']];
$query = '(' . $query_pt . ' OR ' . $query_es . ' OR ' . $query_en . ')';
$oer_query = 'ti:'.$query.' OR mh:'.$query;
$events = Events::get_events($query);
$multimedia = Multimedia::get_media($query);
$resources = OER::get_resources($oer_query);
//$events = Events::get_events($query);
//$multimedia = Multimedia::get_media($query);
//$resources = OER::get_resources($oer_query);

// My Searches widget
$obj = new MySearches($_SESSION["userTK"]);
Expand Down
8 changes: 8 additions & 0 deletions client/css/default/style.css
Expand Up @@ -481,6 +481,14 @@ body.public-col footer {
#nav .action {
background: #eee;
}
#sd-widget .preloader-wrapper,
#events-widget .preloader-wrapper {
margin: 2em auto;
display: block;
}
.sd-alert {
display: none;
}

/* SHARE ICONS */
.facebookIcon {
Expand Down
7 changes: 6 additions & 1 deletion client/js/functions.js
Expand Up @@ -26,7 +26,12 @@ function arrayLength(arr) {
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();

if (parts.length == 2) {
return parts.pop().split(";").shift();
} else {
return false;
}
}

function isJSON(str) {
Expand Down
121 changes: 108 additions & 13 deletions client/js/scripts.js
Expand Up @@ -442,6 +442,108 @@ $('.btn2Botoes a.related-docs, .btn2Buttons a.related-docs').click(
}
);

// Suggested Documents widget
$( document ).ready(function(){
if ( $('#sd-widget').length ) {
path = window.location.pathname;
parts = path.split("/controller/");
href = parts[0]+"/controller/suggesteddocs/control/business/task/related";

sentence = getCookie('related');
if ( sentence ) {
obj = new Object();
obj.sentence = $.trim(unescape(sentence));

$.post( href, obj, function(data) {
if (isJSON(data)){
response = $.parseJSON(data);
}else{
response = data;
}

if (typeof response == 'object') {
var html;
var before = '<ul class="lista1">';
var after = '</ul>';

html = before;
$.each(response, function(index, res) {
html += '<li><a href="'+res.docURL+'" target="_blank">'+res.title.replace(/\\/g, '')+'</a></li>';
});
html += after;

$('#sd-widget').find('.preloader-wrapper').hide();
$('#sd-widget').append(html);
} else {
$('#sd-widget').find('.preloader-wrapper').hide();
$('#sd-widget').find('.sd-alert').show();
}
});
} else {
$('#sd-widget').find('.preloader-wrapper').hide();
$('#sd-widget').find('.sd-alert').show();
}
}
});

// Events widget
$( document ).ready(function(){
if ( $('#events-widget').length ) {
path = window.location.pathname;
parts = path.split("/controller/");
href = parts[0]+"/controller/suggesteddocs/control/business/task/events";

$.post( href, function(data) {
$('#events-widget').find('.preloader-wrapper').hide();
$('#events-widget').append(data);
});
}
});

// Multimedia widget
$( document ).ready(function(){
if ( $('#multimedia-widget').length ) {
path = window.location.pathname;
parts = path.split("/controller/");
href = parts[0]+"/controller/suggesteddocs/control/business/task/multimedia";

$.post( href, function(data) {
var html;
var before = '<div class="row">';
var after = '</div>';

html = before;
html += data;
html += after;

$('#multimedia-widget').find('.row').remove();
$('#multimedia-widget').append(html);
});
}
});

// OER widget
$( document ).ready(function(){
if ( $('#oer-widget').length ) {
path = window.location.pathname;
parts = path.split("/controller/");
href = parts[0]+"/controller/suggesteddocs/control/business/task/resources";

$.post( href, function(data) {
var html;
var before = '<div class="row">';
var after = '</div>';

html = before;
html += data;
html += after;

$('#oer-widget').find('.row').remove();
$('#oer-widget').append(html);
});
}
});

/********** Bulk Actions Scripts **********/
$( document ).on('change', '.bulkactions', function(e) {
e.preventDefault();
Expand Down Expand Up @@ -470,19 +572,12 @@ $( document ).on('change', '.bulkactions', function(e) {
});

/********** VHL Search History Scripts **********/
$(document).on('click', function (e) {
operatorCombine();
portalPopup();
searchPopover();
combinePopover();

$('[data-toggle="popover"],[data-original-title]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
(($(this).popover('hide').data('bs.popover')||{}).inState||{}).click = false // fix for BS 3.3.6
}
});
$('[data-toggle="popover"],[data-original-title]').each(function () {
//the 'is' for buttons that trigger popups
//the 'has' for icons within a button that triggers a popup
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
(($(this).popover('hide').data('bs.popover')||{}).inState||{}).click = false // fix for BS 3.3.6
}
});

var operatorCombine = function () {
Expand Down

0 comments on commit fb00be9

Please sign in to comment.