Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Liferay's Social Office forums revamp
- // @namespace in.liferay.com brandizzi
- // @include https://in.liferay.com/*
- // @include https://dev.liferay.com/*
- // @version 1
- // @grant none
- // ==/UserScript==
- var fromCamelCaseToDashSeparated = function(str) {
- return str.replace(/([a-z][A-Z])/g, function (g) {
- return g[0] + '-' + g[1].toLowerCase();
- });
- }
- var GlobalStyleSheet = function() {
- this.title = Math.random().toString(36);
- this.element = document.createElement('style');
- this.element.title = this.title;
- getChildByTag(document, 'head').appendChild(this.element);
- for (var i in document.styleSheets) {
- var styleSheet = document.styleSheets[i];
- if (styleSheet.title == this.title) {
- this.styleSheet = styleSheet;
- this.styleSheet.disbled = false;
- }
- }
- }
- GlobalStyleSheet.prototype.addRule = function(selector, properties) {
- var rule = selector + ' {\n';
- for (var k in properties) {
- var value = properties[k];
- var property;
- if (k == 'cssFloat') {
- property = 'float';
- } else {
- property = fromCamelCaseToDashSeparated(k);
- }
- rule += ' ' + property + ': ' + value + ';\n';
- }
- rule += '}\n\n';
- this.styleSheet.insertRule(rule, this.styleSheet.cssRules.length);
- }
- var convertToSpan = function(item) {
- var span = document.createElement('span');
- while (item.childNodes.length > 0) {
- span.appendChild(item.childNodes[0]);
- }
- return span;
- }
- var getChildByClass = function(node, clazz, index) {
- if (typeof index == "undefined") {
- index = 0;
- }
- return node.getElementsByClassName(clazz)[index];
- }
- var getChildByTag = function(node, tag, index) {
- if (typeof index == "undefined") {
- index = 0;
- }
- return node.getElementsByTagName(tag)[index];
- }
- var setStyle = function(node, style) {
- for (var k in style) {
- node.style[k] = style[k];
- }
- }
- var deleteNode = function(node) {
- node.parentNode.removeChild(node);
- }
- var moveControls = function(destination, controls, acc) {
- for (var j=0; j<controls.length; j++) {
- var control = controls[j];
- var lis = control.getElementsByTagName('li');
- for (var k=0; k < lis.length; k++) {
- var li = lis[k];
- var span = getChildByTag(li, 'span');
- acc.push(span);
- destination.appendChild(span);
- }
- }
- }
- document.moveQuickReply = function(messageId) {
- var message = document.getElementById(messageId);
- var messageContainer = message.parentNode;
- var quickReplyDiv = document.getElementById('_19_addQuickReplyDiv');
- // There is an "a" element with the same id, should take the table.
- message = document.evaluate(
- ".//table[@id='" + messageId + "']",
- messageContainer, null, XPathResult.ANY_TYPE, null
- ).iterateNext();
- messageContainer.insertBefore(quickReplyDiv, message.nextElementSibling);
- }
- var messageContainers = document.getElementsByClassName('message-container');
- for (var i=0; i < messageContainers.length; i++) {
- var messageContainer = messageContainers[i];
- var message = getChildByClass(messageContainer, 'thread-message-view');
- var row = getChildByTag(message, 'tr');
- var userInfo = getChildByTag(row, 'td', 0);
- var content = getChildByTag(row, 'td', 1);
- var userActionItems = [];
- var threadTop = getChildByClass(message, 'thread-top');
- var feedbackControls = threadTop.getElementsByClassName('edit-controls');
- var feedbackDiv = document.createElement('div');
- moveControls(feedbackDiv, feedbackControls, userActionItems);
- var flags = getChildByClass(message, 'taglib-flags');
- var flagsSpan = getChildByTag(flags, 'span');
- userActionItems.push(flagsSpan);
- feedbackDiv.appendChild(flagsSpan);
- var thumbs = getChildByClass(message, 'thumbs');
- var rating = getChildByTag(thumbs, 'div');
- var ratingSpan = convertToSpan(rating)
- var ratingInputContainer = getChildByClass(ratingSpan, 'rating-input-container');
- var ratingLabel = getChildByClass(ratingSpan, 'rating-label');
- userActionItems.push(ratingSpan);
- feedbackDiv.appendChild(ratingSpan);
- var threadBottom = getChildByClass(message, 'thread-bottom');
- var editControls = threadBottom.getElementsByClassName('edit-controls');
- var editDiv = document.createElement('div');
- moveControls(editDiv, editControls, userActionItems);
- var subject = getChildByClass(threadTop, 'subject');
- var taglibUserDisplay = getChildByClass(userInfo, 'taglib-user-display');
- var userProfileImage = getChildByClass(taglibUserDisplay, 'user-profile-image');
- var avatar = getChildByClass(userProfileImage, 'avatar');
- var userName = getChildByClass(taglibUserDisplay, 'user-name');
- userInfo.appendChild(subject);
- userInfo.appendChild(feedbackDiv);
- userInfo.appendChild(editDiv);
- var messageAttachments = getChildByClass(content, 'message-attachments');
- if (typeof messageAttachments != "undefined") {
- var h3 = getChildByTag(messageAttachments, 'h3');
- h3.style.lineHeight = '1em';
- userInfo.appendChild(messageAttachments);
- }
- for (var j in userActionItems) {
- setStyle(userActionItems[j], {
- margin: '0.5em 1em 0 0',
- display: 'inline-block'
- });
- }
- setStyle(messageContainer, {borderStyle: 'none'});
- setStyle(message, {width: '70%', marginLeft: '10%'});
- setStyle(userInfo, {
- minWidth: '300px',
- width: '25%',
- minHeight: '280px',
- display: 'table-cell',
- position: 'relative',
- fontSize: '90%',
- marginLeft: '5%'
- });
- setStyle(userProfileImage, {
- display: 'block',
- maxWidth: '100%',
- height: 'auto',
- textAlign: 'left'
- });
- setStyle(userName, {
- display: 'block',
- position: 'relative',
- textAlign: 'left',
- marginLeft: '0',
- left: '0',
- top: '0'
- });
- setStyle(avatar, {width: '100px'});
- setStyle(ratingInputContainer, {display: 'none'});
- setStyle(ratingLabel, {display: 'inline-block'});
- setStyle(row, {display: 'table-row'});
- setStyle(subject, {marginTop: '1em'});
- setStyle(content, {
- display: 'table-cell',
- width: '70%',
- marginLeft: '5%',
- fontSize: '120%'
- });
- var globalStyleSheet = new GlobalStyleSheet();
- globalStyleSheet.addRule('#_19_addQuickReplyDiv', {
- width: '46%',
- marginLeft: '33%'
- });
- globalStyleSheet.addRule('#_19_addQuickReplyDiv .control-label', {
- display: 'none'
- });
- var floatContainer = getChildByClass(content, 'float-container');
- deleteNode(threadBottom);
- deleteNode(floatContainer);
- var hr = document.createElement('hr');
- messageContainer.appendChild(hr);
- /* // Some day, maybe...
- var quickReply = document.evaluate(
- ".//a[starts-with(@href, 'javascript:_19_addQuickReply')]",
- feedbackDiv, null, XPathResult.ANY_TYPE, null
- ).iterateNext();
- quickReply.href = quickReply.href.replace('javascript:',
- 'javascript:document.moveQuickReply("' + message.id + '");'
- );*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement