Merge branch 'aragonc-1.10.x' into 1.10.x

1.10.x
Yannick Warnier 10 years ago
commit a55f8d50ba
  1. 103
      app/Resources/public/css/base.css
  2. BIN
      main/img/session_default_small.png
  3. BIN
      main/img/statusoffline.png
  4. BIN
      main/img/statusonline.png
  5. 22
      main/inc/lib/javascript/chat/css/chat.css
  6. 17
      main/inc/lib/javascript/chat/js/chat.js
  7. 16
      main/inc/lib/javascript/chat/video.php
  8. 109
      main/inc/lib/social.lib.php
  9. 4
      main/inc/lib/template.lib.php
  10. 6
      main/social/profile.php
  11. 24
      main/template/default/agenda/month.tpl
  12. 47
      main/template/default/chat/video.tpl
  13. 41
      main/template/default/social/profile.tpl
  14. 25
      main/template/default/social/user_block.tpl

@ -394,8 +394,12 @@ ul#navigation .report a {
margin: 30px 0 0 0;
padding: 0 0 0 10px;
}
#simple-dialog-form{
font-size: 12px;
}
#simple-dialog-form .control-label{
padding-top: 0;
}
/* ---------------------------------------------------
styles for the agenda (day, week, month view)
-----------------------------------------------------*/
@ -4778,7 +4782,7 @@ i.size-32.icon-new-work{
}
.social-avatar .social-profile{
text-align: center;
padding-top: 10px;
padding-top: 20px;
}
.social-avatar .social-profile .img-responsive{
display: inline-block;
@ -4922,7 +4926,6 @@ i.size-32.icon-new-work{
}
.top-mediapost .user-image .avatar-thumb,
.sub-mediapost .user-image .avatar-thumb{
padding: 2px;
border: 1px solid #dddddd;
margin-bottom: 5px;
margin-right: 5px;
@ -6276,6 +6279,98 @@ a.sessionView {
#gradebook_list .centered .badge-group {
width: auto;
}
/* video chat */
#chat-local-video video,
#chat-remote-video video{
border-radius: 5px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
box-shadow: 0 2px 3px #C8C8C8;
border: 1px solid #e6e6e6;
background-color:#fff;
padding: 5px;
}
#chat-local-video video,
#chat-remote-video video{
width: 100%;
min-width: 100%;
display: block;
}
#chat-video-panel .username-local{
text-align: center;
padding-bottom: 5px;
padding-top:5px;
margin-top:10px;
margin-bottom:10px;
color: #666666;
}
#chat-video-panel .chat-user-remote{
text-align: center;
padding-bottom: 5px;
padding-top:5px;
color: #666666;
}
#chat-video-panel .title{
display: block;
color: #52606F;
padding: 0;
margin: 0;
margin-bottom: 20px;
padding-bottom: 10px;
font-size: 20px;
border-bottom: 1px solid #E5E5E5;
}
#listFriends .list-group-item{
border: none;
padding: 6px;
font-size: 12px;
}
#listFriends a{
display: block;
text-overflow: ellipsis;
}
#listFriends a .username{
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
width: 120px;
}
#chat-video-panel #listFriends a .username{
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
width: 180px;
}
#listFriends .status{
float: right;
}
#listFriends .user-image{
width: 32px;
height: 32px;
margin-right: 5px;
}
#course-block .list-group .list-group-item{
padding: 5px;
border:none;
font-size: 12px;
line-height: 17px;
color:#666666;
}
#course-block .list-group .img-default{
float: left;
margin-right: 5px;
}
#course-block .list-group .list-group-item .img-course{
width: 70px;
float: left;
margin-right: 5px;
}
#course-block .list-group .list-group-item .title{
display: block;
}
/* CSS NEW TOP ******************************************************************************/
/* CSS Responsive */
@media (min-width: 1025px) and (max-width: 1200px) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

@ -36,13 +36,11 @@
cursor:pointer;
}
.user_status_main {
width:30px;
width:18px;
display:inline;
float:left;
padding: 0px 4px 0px 4px;
}
.chatbox {
position: fixed;
position:expression("absolute");
@ -50,23 +48,27 @@
display:none;
z-index: 9000;
}
.user_status {
width:16px;
display:inline;
float:left;
width:8px;
display:inline-block;
margin-right: 5px;
}
.chatimage{
display: inline-block;
margin-right: 5px;
}
.chatboxtitle {
font-weight: normal;
float: left;
font-size: 12px;
width: 130px;
display: inline-block;
font-size: 10px;
width: 100px;
cursor:pointer;
overflow: hidden;
padding-left: 2px;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 10px;
}
.chatboxhead {

@ -325,8 +325,8 @@ function restructureChatBoxes() {
* @param status
*
**/
function chatWith(user_id, user_name, status) {
createChatBox(user_id, user_name, 0, status);
function chatWith(user_id, user_name, status, userImage) {
createChatBox(user_id, user_name, 0, status, userImage);
$("#chatbox_"+user_id+" .chatboxtextarea").focus();
}
@ -340,7 +340,7 @@ function chatNotYetWith(message) {
/**
* Creates a div
*/
function createChatBox(user_id, chatboxtitle, minimizeChatBox, online) {
function createChatBox(user_id, chatboxtitle, minimizeChatBox, online, userImage) {
if ($("#chatbox_"+user_id).length > 0) {
if ($("#chatbox_"+user_id).css('display') == 'none') {
$("#chatbox_"+user_id).css('display','block');
@ -350,7 +350,7 @@ function createChatBox(user_id, chatboxtitle, minimizeChatBox, online) {
return;
}
user_is_online = return_online_user(user_id, online);
user_is_online = return_online_user(user_id, online, userImage);
var chatbox = $('<div>')
.attr({
@ -363,11 +363,18 @@ function createChatBox(user_id, chatboxtitle, minimizeChatBox, online) {
.addClass('chatboxhead')
.append(user_is_online);
$('<div>')
.addClass('chatimage')
.append('<img src="'+userImage+'"/>')
.appendTo(chatboxHead);
$('<div>')
.addClass('chatboxtitle')
.append(chatboxtitle)
.appendTo(chatboxHead);
var chatboxoptions = $('<div>')
.addClass('chatboxoptions')
.appendTo(chatboxHead);
@ -508,7 +515,7 @@ function createChatBox(user_id, chatboxtitle, minimizeChatBox, online) {
* @param int user id
* @param int status 1 or 0
*/
function return_online_user(user_id, status) {
function return_online_user(user_id, status, userImage) {
var div_wrapper = $("<div />" );
var new_div = $("<div />" );

@ -14,6 +14,12 @@ if ($room === false) {
Header::location(api_get_path(WEB_PATH));
}
$friend_html = SocialManager::listMyFriendsBlock(
$user_id,
$link_shared,
$show_full_profile
);
$isSender = $room['from_user'] == api_get_user_id();
$isReceiver = $room['to_user'] == api_get_user_id();
@ -26,18 +32,22 @@ if ($isSender) {
} elseif ($isReceiver) {
$chatUser = api_get_user_info($room['from_user']);
}
$idUserLocal = api_get_user_id();
$userLocal = api_get_user_info($idUserLocal, true);
$htmlHeadXtra[] = '<script type="text/javascript" src="'
. api_get_path(WEB_PATH) . 'web/assets/simplewebrtc/latest.js'
. '"></script>' . "\n";
$template = new Template();
$template->assign('room_name', $room['room_name']);
$template->assign('room', $room);
$template->assign('chat_user', $chatUser);
$template->assign('user_local', $userLocal);
$template->assign('block_friends', $friend_html);
$content = $template->fetch('default/chat/video.tpl');
$template->assign('header', $room['room_name']);
//$template->assign('header', $room['room_name']);
$template->assign('content', $content);
$template->assign('message', Display::return_message(get_lang('BroswerDoesNotSupportWebRTC'), 'warning'));
$template->display_one_col_template();
//$template->display_no_layout_template();

@ -457,30 +457,48 @@ class SocialManager extends UserManager
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$course_code = $my_course['code'];
$course_directory = $my_course['course_info']['directory'];
$course_title = $my_course['course_info']['title'];
$course_access_settings = CourseManager :: get_access_settings($course_code);
$course_visibility = $course_access_settings['visibility'];
$user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_code);
$s_htlm_status_icon = Display::return_icon('course.gif', get_lang('Course'));
//$valor = api_get_settings_params();
$course_path = api_get_path(SYS_COURSE_PATH).$course_directory; // course path
if (api_get_setting('course_images_in_courses_list') === 'true') {
if (file_exists($course_path.'/course-pic85x85.png')) {
$image = $my_course['course_info']['course_image'];
$imageCourse = Display::img($image, $course_title, array('class'=>'img-course'));
} else {
$imageCourse = Display::return_icon('session_default_small.png', $course_title, array('class' => 'img-course'));
}
} else {
$imageCourse = Display::return_icon('course.png', get_lang('Course'), array('class' => 'img-default'));
}
//$imageCourse = Display::return_icon('course.png', get_lang('Course'));
//display course entry
$result .= '<div id="div_'.$count.'">';
$result .= $s_htlm_status_icon;
if (api_get_setting('course_images_in_courses_list') === 'true') {
$result .= '<li id="course_'.$count.'" class="list-group-item" style="min-height:65px;">';
} else {
$result .= '<li id="course_'.$count.'" class="list-group-item" style="min-height:44px;">';
}
$result .= $imageCourse;
//show a hyperlink to the course, unless the course is closed and user is not course admin
if ($course_visibility != COURSE_VISIBILITY_HIDDEN &&
($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER)
) {
$result .= $course_title;
$result .= '<span class="title">' . $course_title . '<span>';
} else {
$result .= $course_title." "." ".get_lang('CourseClosed')."";
}
$result .= '</h3>';
$result .= '</li>';
$result .= '</div>';
$session = '';
$active = false;
@ -591,13 +609,14 @@ class SocialManager extends UserManager
),
'normal' => UserManager::getUserPicture(
$user_id,
USER_IMAGE_SIZE_ORIGINAL
USER_IMAGE_SIZE_MEDIUM
)
]
);
}
$skillBlock = $template->get_template('social/avatar_block.tpl');
return $template->fetch($skillBlock);
}
@ -753,7 +772,7 @@ class SocialManager extends UserManager
// Chat
//@todo check if user is online and if it's a friend to show the chat link
if (api_is_global_chat_enabled()) {
/*if (api_is_global_chat_enabled()) {
$user_name = $user_info['complete_name'];
if ($user_friend_relation == USER_RELATION_TYPE_FRIEND) {
@ -787,7 +806,7 @@ class SocialManager extends UserManager
}
}
}
}
}*/
$html .= '</ul></div></div>';
@ -1524,7 +1543,7 @@ class SocialManager extends UserManager
}
$userInfo = api_get_user_info($userId, true, false, true);
$template->assign('user', $userInfo);
$template->assign('socialAvatarBlock', $socialAvatarBlock);
$template->assign('profileEditionLink', $profileEditionLink);
@ -1537,7 +1556,9 @@ class SocialManager extends UserManager
$template->assign('gamification_points', $gamificationPoints);
}
$chatEnabled = api_is_global_chat_enabled();
$templateName = $template->assign('chat_enabled', $chatEnabled);
$templateName = $template->get_template('social/user_block.tpl');
if (in_array($groupBlock, ['groups', 'group_edit', 'member_list'])) {
@ -1613,6 +1634,68 @@ class SocialManager extends UserManager
return $friendHtml;
}
/**
* @param int $user_id
* @param $link_shared
* @param $show_full_profile
* @return string
*/
public static function listMyFriendsBlock($user_id, $link_shared, $show_full_profile)
{
//SOCIALGOODFRIEND , USER_RELATION_TYPE_FRIEND, USER_RELATION_TYPE_PARENT
$friends = SocialManager::get_friends($user_id, USER_RELATION_TYPE_FRIEND);
$number_of_images = 30;
$number_friends = count($friends);
$friendHtml = '';
if ($number_friends != 0) {
$friendHtml.= '<ul class="list-group">';
$j = 1;
for ($k=0; $k < $number_friends; $k++) {
if ($j > $number_of_images) break;
if (isset($friends[$k])) {
$friend = $friends[$k];
$name_user = api_get_person_name($friend['firstName'], $friend['lastName']);
$user_info_friend = api_get_user_info($friend['friend_user_id'], true);
if ($user_info_friend['user_is_online']) {
$statusIcon = Display::return_icon('statusonline.png',get_lang('Online'));
$status=1;
} else {
$statusIcon = Display::return_icon('statusoffline.png',get_lang('Offline'));
$status=0;
}
$friendHtml.= '<li class="list-group-item">';
$friendAvatarMedium = UserManager::getUserPicture($friend['friend_user_id'], USER_IMAGE_SIZE_MEDIUM);
$friendAvatarSmall = UserManager::getUserPicture($friend['friend_user_id'], USER_IMAGE_SIZE_SMALL);
$friend_avatar = '<img src="'.$friendAvatarMedium.'" id="imgfriend_'.$friend['friend_user_id'].'" title="'.$name_user.'" class="user-image"/>';
if (api_is_global_chat_enabled()){
$friendHtml .= '<a onclick="javascript:chatWith(\''.$friend['friend_user_id'].'\', \''.$name_user.'\', \''.$status.'\',\''.$friendAvatarSmall.'\')" href="javascript:void(0);">';
$friendHtml .= $friend_avatar.' <span class="username">' . $name_user . '</span>';
$friendHtml .= '<span class="status">' . $statusIcon . '</span>';
} else {
$link_shared = (empty($link_shared)) ? '' : '&'.$link_shared;
$friendHtml .= '<a href="profile.php?' .'u=' . $friend['friend_user_id'] . $link_shared . '">';
$friendHtml .= $friend_avatar.' <span class="username-all">' . $name_user . '</span>';
}
$friendHtml .= '</a>';
$friendHtml.= '</li>';
}
$j++;
}
$friendHtml.='</ul>';
} else {
$friendHtml.= '<div class="">'.get_lang('NoFriendsInYourContactList').'<br />'
.'<a class="btn btn-primary" href="'.api_get_path(WEB_PATH).'whoisonline.php"><i class="fa fa-search"></i> '. get_lang('TryAndFindSomeFriends').'</a></div>';
}
return $friendHtml;
}
/**
* @return string
*/

@ -729,8 +729,8 @@ class Template
}
}
$this->assign('online_button', Display::return_icon('online.png'));
$this->assign('offline_button',Display::return_icon('offline.png'));
$this->assign('online_button', Display::return_icon('statusonline.png'));
$this->assign('offline_button',Display::return_icon('statusoffline.png'));
// Get language iso-code for this page - ignore errors
$this->assign('document_language', api_get_language_isocode());

@ -255,7 +255,7 @@ foreach ($sessionList as $session) {
}
// My friends
$friend_html = SocialManager::listMyFriends(
$friend_html = SocialManager::listMyFriendsBlock(
$user_id,
$link_shared,
$show_full_profile
@ -478,15 +478,15 @@ if ($show_full_profile) {
// Courses without sessions
$my_course = '';
$i = 1;
foreach ($list as $key => $value) {
if ( empty($value[2]) ) { //if out of any session
$my_courses .= $value[1];
$my_courses .= '<div id="social_content'.$i.'" class="course_social_content" style="display:none" >s</div>';
$i++;
}
}
$social_course_block .= $my_courses;
$social_course_block = Display::panel($my_courses, get_lang('MyCourses'));
//$social_course_block = Display::panel($my_courses, get_lang('MyCourses'));
}
//Block Social Sessions

@ -455,8 +455,8 @@ $(document).ready(function() {
}
if (calEvent.course_name) {
$("#calendar_course_info_simple").html(
'<div class="form-group"><label class="col-sm-2 control-label">{{ 'Course' | get_lang }}</label>' +
'<div class="col-sm-8">' + calEvent.course_name+"</div></div>"
'<div class="form-group"><label class="col-sm-3 control-label">{{ 'Course' | get_lang }}</label>' +
'<div class="col-sm-9">' + calEvent.course_name+"</div></div>"
);
} else {
$("#calendar_course_info_simple").html('');
@ -464,8 +464,8 @@ $(document).ready(function() {
if (calEvent.session_name) {
$("#calendar_session_info").html(
'<div class="form-group"><label class="col-sm-2 control-label">{{ 'Session' | get_lang }}</label>' +
'<div class="col-sm-8">' + calEvent.session_name+"</div></div>"
'<div class="form-group"><label class="col-sm-3 control-label">{{ 'Session' | get_lang }}</label>' +
'<div class="col-sm-9">' + calEvent.session_name+"</div></div>"
);
} else {
@ -536,36 +536,36 @@ $(document).ready(function() {
<span id="calendar_course_info_simple"></span>
<span id="calendar_session_info"></span>
<div class="form-group">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
<b>{{ "Date" |get_lang}}</b>
</label>
<div class="col-sm-8">
<div class="col-sm-9">
<span id="simple_start_date"></span>
<span id="simple_end_date"></span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
<b>{{ "Title" |get_lang}}</b>
</label>
<div class="col-sm-8">
<div class="col-sm-9">
<div id="simple_title"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
<b>{{ "Description" |get_lang}}</b>
</label>
<div class="col-sm-8">
<div class="col-sm-9">
<div id="simple_content"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
<b>{{ "Comment" |get_lang}}</b>
</label>
<div class="col-sm-8">
<div class="col-sm-9">
<div id="simple_comment"></div>
</div>
</div>

@ -1,15 +1,46 @@
<p class="lead">{{ "ChatWithXUser"|get_lang|format(chat_user.complete_name) }}</p>
<div class="row" id="chat-video-panel">
<div class="col-sm-3">
<div class="thumbnail">
<video id="chat-local-video" class="skip"></video>
<div id="chat-video-panel">
<div class="row">
<div class="col-md-12">
<h3 class="title"><i class="fa fa-video-camera"></i> {{ room.room_name }} </h3>
</div>
</div>
<div class="col-sm-9">
<div class="thumbnail" id="chat-remote-video"></div>
<div class="row">
<div class="col-md-4">
<div id="chat-local-video"></div>
<div class="username-local">
{% if user_local.user_is_online_in_chat == 1 %}
<img src="{{ 'online.png' | icon(16) }}" />
{% else %}
<img src="{{ 'offline.png' | icon(16) }}" />
{% endif %}
{{ user_local.complete_name }} ( {{ user_local.username }} )
</div>
<div class="chat-friends">
<div class="panel-group" id="blocklistFriends" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#blocklistFriends" href="#listFriends" aria-expanded="true" aria-controls="listFriends">
{{ "SocialFriend" | get_lang }}
</a>
</h4>
</div>
<div id="listFriends" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
{{ block_friends }}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-8">
<div class="user-from" id="chat-remote-video"></div>
<div class="chat-user-remote">{{ "ChatWithXUser"|get_lang|format(chat_user.complete_name) }}</div>
</div>
</div>
</div>
<script>
(function() {
var VideoChat = {

@ -4,8 +4,7 @@
<div class="row">
<div class="col-md-3">
{{ social_avatar_block }}
{{ social_extra_info_block }}
{{ social_friend_block }}
{{ social_extra_info_block }}
<div class="social-menu">
{{ social_menu_block }}
</div>
@ -16,9 +15,45 @@
{{ social_auto_extend_link }}
</div>
<div class="col-md-3">
<div class="chat-friends">
<div class="panel-group" id="blocklistFriends" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#blocklistFriends" href="#listFriends" aria-expanded="true" aria-controls="listFriends">
{{ "SocialFriend" | get_lang }}
</a>
</h4>
</div>
<div id="listFriends" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
{{ social_friend_block }}
</div>
</div>
</div>
</div>
</div>
{{ social_skill_block }}
{{ social_group_info_block }}
{{ social_course_block }}
<div class="panel-group" id="course-block" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#course-block" href="#courseList" aria-expanded="true" aria-controls="courseList">
{{ "MyCourses" | get_lang }}
</a>
</h4>
</div>
<div id="courseList" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
<ul class="list-group">
{{ social_course_block }}
</ul>
</div>
</div>
</div>
</div>
{{ social_session_block }}
{{ social_rss_block }}
{{ social_right_information }}

@ -9,18 +9,21 @@
<img src="{{ "instant_message.png" | icon }}" atl="{{ "Email" | get_lang }}">
{{ user.email}}
</div>
{% if user.user_is_online_in_chat != 0 %}
<div class="social-avatar-chat">
<img src="{{ "online.png" | icon }}" alt="{{ "Online" | get_lang }}">
{{ "Chat" | get_lang }} ({{ "Online" | get_lang }})
</div>
{% else %}
<div class="social-avatar-chat">
<img src="{{ "offline.png" | icon }}" alt="{{ "Online" | get_lang }}">
{{ "Chat" | get_lang }} ({{ "Offline" | get_lang }})
</div>
{% if chat_enabled == 1 %}
{% if user.user_is_online_in_chat != 0 %}
<div class="social-avatar-chat">
<a onclick="javascript:chatWith('{{ user.id }}', '{{ user.complete_name }}', '{{ user.user_is_online }}','{{ user.avatar_small }}')" href="javascript:void(0);">
<img src="{{ "online.png" | icon }}" alt="{{ "Online" | get_lang }}">
{{ "Chat" | get_lang }} ({{ "Online" | get_lang }})
</a>
</div>
{% else %}
<div class="social-avatar-chat">
<img src="{{ "offline.png" | icon }}" alt="{{ "Online" | get_lang }}">
{{ "Chat" | get_lang }} ({{ "Offline" | get_lang }})
</div>
{% endif %}
{% endif %}
{% if not profileEditionLink is empty %}
<p>
<a class="btn btn-link" href="{{ profileEditionLink }}">

Loading…
Cancel
Save