Subversion-Projekte lars-tiefland.ci

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
776 lars 1
/**
2
Core script to handle the entire theme and core functions
3
**/
4
var QuickSidebar = function () {
5
 
6
    // Handles quick sidebar toggler
7
    var handleQuickSidebarToggler = function () {
8
        // quick sidebar toggler
9
        $('.dropdown-quick-sidebar-toggler a, .page-quick-sidebar-toggler, .quick-sidebar-toggler').click(function (e) {
10
            $('body').toggleClass('page-quick-sidebar-open');
11
        });
12
    };
13
 
14
    // Handles quick sidebar chats
15
    var handleQuickSidebarChat = function () {
16
        var wrapper = $('.page-quick-sidebar-wrapper');
17
        var wrapperChat = wrapper.find('.page-quick-sidebar-chat');
18
 
19
        var initChatSlimScroll = function () {
20
            var chatUsers = wrapper.find('.page-quick-sidebar-chat-users');
21
            var chatUsersHeight;
22
 
23
            chatUsersHeight = wrapper.height() - wrapper.find('.nav-tabs').outerHeight(true);
24
 
25
            // chat user list
26
            App.destroySlimScroll(chatUsers);
27
            chatUsers.attr("data-height", chatUsersHeight);
28
            App.initSlimScroll(chatUsers);
29
 
30
            var chatMessages = wrapperChat.find('.page-quick-sidebar-chat-user-messages');
31
            var chatMessagesHeight = chatUsersHeight - wrapperChat.find('.page-quick-sidebar-chat-user-form').outerHeight(true);
32
            chatMessagesHeight = chatMessagesHeight - wrapperChat.find('.page-quick-sidebar-nav').outerHeight(true);
33
 
34
            // user chat messages
35
            App.destroySlimScroll(chatMessages);
36
            chatMessages.attr("data-height", chatMessagesHeight);
37
            App.initSlimScroll(chatMessages);
38
        };
39
 
40
        initChatSlimScroll();
41
        App.addResizeHandler(initChatSlimScroll); // reinitialize on window resize
42
 
43
        wrapper.find('.page-quick-sidebar-chat-users .media-list > .media').click(function () {
44
            wrapperChat.addClass("page-quick-sidebar-content-item-shown");
45
        });
46
 
47
        wrapper.find('.page-quick-sidebar-chat-user .page-quick-sidebar-back-to-list').click(function () {
48
            wrapperChat.removeClass("page-quick-sidebar-content-item-shown");
49
        });
50
 
51
        var handleChatMessagePost = function (e) {
52
            e.preventDefault();
53
 
54
            var chatContainer = wrapperChat.find(".page-quick-sidebar-chat-user-messages");
55
            var input = wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control');
56
 
57
            var text = input.val();
58
            if (text.length === 0) {
59
                return;
60
            }
61
 
62
            var preparePost = function(dir, time, name, avatar, message) {
63
                var tpl = '';
64
                tpl += '<div class="post '+ dir +'">';
65
                tpl += '<img class="avatar" alt="" src="' + Layout.getLayoutImgPath() + avatar +'.jpg"/>';
66
                tpl += '<div class="message">';
67
                tpl += '<span class="arrow"></span>';
68
                tpl += '<a href="#" class="name">Bob Nilson</a>&nbsp;';
69
                tpl += '<span class="datetime">' + time + '</span>';
70
                tpl += '<span class="body">';
71
                tpl += message;
72
                tpl += '</span>';
73
                tpl += '</div>';
74
                tpl += '</div>';
75
 
76
                return tpl;
77
            };
78
 
79
            // handle post
80
            var time = new Date();
81
            var message = preparePost('out', (time.getHours() + ':' + time.getMinutes()), "Bob Nilson", 'avatar3', text);
82
            message = $(message);
83
            chatContainer.append(message);
84
 
85
            chatContainer.slimScroll({
86
                scrollTo: '1000000px'
87
            });
88
 
89
            input.val("");
90
 
91
            // simulate reply
92
            setTimeout(function(){
93
                var time = new Date();
94
                var message = preparePost('in', (time.getHours() + ':' + time.getMinutes()), "Ella Wong", 'avatar2', 'Lorem ipsum doloriam nibh...');
95
                message = $(message);
96
                chatContainer.append(message);
97
 
98
                chatContainer.slimScroll({
99
                    scrollTo: '1000000px'
100
                });
101
            }, 3000);
102
        };
103
 
104
        wrapperChat.find('.page-quick-sidebar-chat-user-form .btn').click(handleChatMessagePost);
105
        wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control').keypress(function (e) {
106
            if (e.which == 13) {
107
                handleChatMessagePost(e);
108
                return false;
109
            }
110
        });
111
    };
112
 
113
    // Handles quick sidebar tasks
114
    var handleQuickSidebarAlerts = function () {
115
        var wrapper = $('.page-quick-sidebar-wrapper');
116
 
117
        var initAlertsSlimScroll = function () {
118
            var alertList = wrapper.find('.page-quick-sidebar-alerts-list');
119
            var alertListHeight;
120
 
121
            alertListHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight();
122
 
123
            // alerts list
124
            App.destroySlimScroll(alertList);
125
            alertList.attr("data-height", alertListHeight);
126
            App.initSlimScroll(alertList);
127
        };
128
 
129
        initAlertsSlimScroll();
130
        App.addResizeHandler(initAlertsSlimScroll); // reinitialize on window resize
131
    };
132
 
133
    // Handles quick sidebar settings
134
    var handleQuickSidebarSettings = function () {
135
        var wrapper = $('.page-quick-sidebar-wrapper');
136
 
137
        var initSettingsSlimScroll = function () {
138
            var settingsList = wrapper.find('.page-quick-sidebar-settings-list');
139
            var settingsListHeight;
140
 
141
            settingsListHeight = wrapper.height() - 80 - wrapper.find('.nav-justified > .nav-tabs').outerHeight();
142
 
143
            // alerts list
144
            App.destroySlimScroll(settingsList);
145
            settingsList.attr("data-height", settingsListHeight);
146
            App.initSlimScroll(settingsList);
147
        };
148
 
149
        initSettingsSlimScroll();
150
        App.addResizeHandler(initSettingsSlimScroll); // reinitialize on window resize
151
    };
152
 
153
    return {
154
 
155
        init: function () {
156
            //layout handlers
157
            handleQuickSidebarToggler(); // handles quick sidebar's toggler
158
            handleQuickSidebarChat(); // handles quick sidebar's chats
159
            handleQuickSidebarAlerts(); // handles quick sidebar's alerts
160
            handleQuickSidebarSettings(); // handles quick sidebar's setting
161
        }
162
    };
163
 
164
}();
165
 
166
if (App.isAngularJsApp() === false) {
167
    jQuery(document).ready(function() {
168
       QuickSidebar.init(); // init metronic core componets
169
    });
170
}