Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/ninja-fo.../assets/js/lib
File: summernote.js
}
[500] Fix | Delete
[501] Fix | Delete
// Chrome(v31.0), FF(v25.0.1) use DIV for paragraph
[502] Fix | Delete
return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());
[503] Fix | Delete
};
[504] Fix | Delete
[505] Fix | Delete
var isHeading = function (node) {
[506] Fix | Delete
return node && /^H[1-7]/.test(node.nodeName.toUpperCase());
[507] Fix | Delete
};
[508] Fix | Delete
[509] Fix | Delete
var isPre = makePredByNodeName('PRE');
[510] Fix | Delete
[511] Fix | Delete
var isLi = makePredByNodeName('LI');
[512] Fix | Delete
[513] Fix | Delete
var isPurePara = function (node) {
[514] Fix | Delete
return isPara(node) && !isLi(node);
[515] Fix | Delete
};
[516] Fix | Delete
[517] Fix | Delete
var isTable = makePredByNodeName('TABLE');
[518] Fix | Delete
[519] Fix | Delete
var isInline = function (node) {
[520] Fix | Delete
return !isBodyContainer(node) &&
[521] Fix | Delete
!isList(node) &&
[522] Fix | Delete
!isHr(node) &&
[523] Fix | Delete
!isPara(node) &&
[524] Fix | Delete
!isTable(node) &&
[525] Fix | Delete
!isBlockquote(node);
[526] Fix | Delete
};
[527] Fix | Delete
[528] Fix | Delete
var isList = function (node) {
[529] Fix | Delete
return node && /^UL|^OL/.test(node.nodeName.toUpperCase());
[530] Fix | Delete
};
[531] Fix | Delete
[532] Fix | Delete
var isHr = makePredByNodeName('HR');
[533] Fix | Delete
[534] Fix | Delete
var isCell = function (node) {
[535] Fix | Delete
return node && /^TD|^TH/.test(node.nodeName.toUpperCase());
[536] Fix | Delete
};
[537] Fix | Delete
[538] Fix | Delete
var isBlockquote = makePredByNodeName('BLOCKQUOTE');
[539] Fix | Delete
[540] Fix | Delete
var isBodyContainer = function (node) {
[541] Fix | Delete
return isCell(node) || isBlockquote(node) || isEditable(node);
[542] Fix | Delete
};
[543] Fix | Delete
[544] Fix | Delete
var isAnchor = makePredByNodeName('A');
[545] Fix | Delete
[546] Fix | Delete
var isParaInline = function (node) {
[547] Fix | Delete
return isInline(node) && !!ancestor(node, isPara);
[548] Fix | Delete
};
[549] Fix | Delete
[550] Fix | Delete
var isBodyInline = function (node) {
[551] Fix | Delete
return isInline(node) && !ancestor(node, isPara);
[552] Fix | Delete
};
[553] Fix | Delete
[554] Fix | Delete
var isBody = makePredByNodeName('BODY');
[555] Fix | Delete
[556] Fix | Delete
/**
[557] Fix | Delete
* returns whether nodeB is closest sibling of nodeA
[558] Fix | Delete
*
[559] Fix | Delete
* @param {Node} nodeA
[560] Fix | Delete
* @param {Node} nodeB
[561] Fix | Delete
* @return {Boolean}
[562] Fix | Delete
*/
[563] Fix | Delete
var isClosestSibling = function (nodeA, nodeB) {
[564] Fix | Delete
return nodeA.nextSibling === nodeB ||
[565] Fix | Delete
nodeA.previousSibling === nodeB;
[566] Fix | Delete
};
[567] Fix | Delete
[568] Fix | Delete
/**
[569] Fix | Delete
* returns array of closest siblings with node
[570] Fix | Delete
*
[571] Fix | Delete
* @param {Node} node
[572] Fix | Delete
* @param {function} [pred] - predicate function
[573] Fix | Delete
* @return {Node[]}
[574] Fix | Delete
*/
[575] Fix | Delete
var withClosestSiblings = function (node, pred) {
[576] Fix | Delete
pred = pred || func.ok;
[577] Fix | Delete
[578] Fix | Delete
var siblings = [];
[579] Fix | Delete
if (node.previousSibling && pred(node.previousSibling)) {
[580] Fix | Delete
siblings.push(node.previousSibling);
[581] Fix | Delete
}
[582] Fix | Delete
siblings.push(node);
[583] Fix | Delete
if (node.nextSibling && pred(node.nextSibling)) {
[584] Fix | Delete
siblings.push(node.nextSibling);
[585] Fix | Delete
}
[586] Fix | Delete
return siblings;
[587] Fix | Delete
};
[588] Fix | Delete
[589] Fix | Delete
/**
[590] Fix | Delete
* blank HTML for cursor position
[591] Fix | Delete
* - [workaround] old IE only works with  
[592] Fix | Delete
* - [workaround] IE11 and other browser works with bogus br
[593] Fix | Delete
*/
[594] Fix | Delete
var blankHTML = agent.isMSIE && agent.browserVersion < 11 ? '&nbsp;' : '<br>';
[595] Fix | Delete
[596] Fix | Delete
/**
[597] Fix | Delete
* @method nodeLength
[598] Fix | Delete
*
[599] Fix | Delete
* returns #text's text size or element's childNodes size
[600] Fix | Delete
*
[601] Fix | Delete
* @param {Node} node
[602] Fix | Delete
*/
[603] Fix | Delete
var nodeLength = function (node) {
[604] Fix | Delete
if (isText(node)) {
[605] Fix | Delete
return node.nodeValue.length;
[606] Fix | Delete
}
[607] Fix | Delete
[608] Fix | Delete
return node.childNodes.length;
[609] Fix | Delete
};
[610] Fix | Delete
[611] Fix | Delete
/**
[612] Fix | Delete
* returns whether node is empty or not.
[613] Fix | Delete
*
[614] Fix | Delete
* @param {Node} node
[615] Fix | Delete
* @return {Boolean}
[616] Fix | Delete
*/
[617] Fix | Delete
var isEmpty = function (node) {
[618] Fix | Delete
var len = nodeLength(node);
[619] Fix | Delete
[620] Fix | Delete
if (len === 0) {
[621] Fix | Delete
return true;
[622] Fix | Delete
} else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {
[623] Fix | Delete
// ex) <p><br></p>, <span><br></span>
[624] Fix | Delete
return true;
[625] Fix | Delete
} else if (list.all(node.childNodes, isText) && node.innerHTML === '') {
[626] Fix | Delete
// ex) <p></p>, <span></span>
[627] Fix | Delete
return true;
[628] Fix | Delete
}
[629] Fix | Delete
[630] Fix | Delete
return false;
[631] Fix | Delete
};
[632] Fix | Delete
[633] Fix | Delete
/**
[634] Fix | Delete
* padding blankHTML if node is empty (for cursor position)
[635] Fix | Delete
*/
[636] Fix | Delete
var paddingBlankHTML = function (node) {
[637] Fix | Delete
if (!isVoid(node) && !nodeLength(node)) {
[638] Fix | Delete
node.innerHTML = blankHTML;
[639] Fix | Delete
}
[640] Fix | Delete
};
[641] Fix | Delete
[642] Fix | Delete
/**
[643] Fix | Delete
* find nearest ancestor predicate hit
[644] Fix | Delete
*
[645] Fix | Delete
* @param {Node} node
[646] Fix | Delete
* @param {Function} pred - predicate function
[647] Fix | Delete
*/
[648] Fix | Delete
var ancestor = function (node, pred) {
[649] Fix | Delete
while (node) {
[650] Fix | Delete
if (pred(node)) { return node; }
[651] Fix | Delete
if (isEditable(node)) { break; }
[652] Fix | Delete
[653] Fix | Delete
node = node.parentNode;
[654] Fix | Delete
}
[655] Fix | Delete
return null;
[656] Fix | Delete
};
[657] Fix | Delete
[658] Fix | Delete
/**
[659] Fix | Delete
* find nearest ancestor only single child blood line and predicate hit
[660] Fix | Delete
*
[661] Fix | Delete
* @param {Node} node
[662] Fix | Delete
* @param {Function} pred - predicate function
[663] Fix | Delete
*/
[664] Fix | Delete
var singleChildAncestor = function (node, pred) {
[665] Fix | Delete
node = node.parentNode;
[666] Fix | Delete
[667] Fix | Delete
while (node) {
[668] Fix | Delete
if (nodeLength(node) !== 1) { break; }
[669] Fix | Delete
if (pred(node)) { return node; }
[670] Fix | Delete
if (isEditable(node)) { break; }
[671] Fix | Delete
[672] Fix | Delete
node = node.parentNode;
[673] Fix | Delete
}
[674] Fix | Delete
return null;
[675] Fix | Delete
};
[676] Fix | Delete
[677] Fix | Delete
/**
[678] Fix | Delete
* returns new array of ancestor nodes (until predicate hit).
[679] Fix | Delete
*
[680] Fix | Delete
* @param {Node} node
[681] Fix | Delete
* @param {Function} [optional] pred - predicate function
[682] Fix | Delete
*/
[683] Fix | Delete
var listAncestor = function (node, pred) {
[684] Fix | Delete
pred = pred || func.fail;
[685] Fix | Delete
[686] Fix | Delete
var ancestors = [];
[687] Fix | Delete
ancestor(node, function (el) {
[688] Fix | Delete
if (!isEditable(el)) {
[689] Fix | Delete
ancestors.push(el);
[690] Fix | Delete
}
[691] Fix | Delete
[692] Fix | Delete
return pred(el);
[693] Fix | Delete
});
[694] Fix | Delete
return ancestors;
[695] Fix | Delete
};
[696] Fix | Delete
[697] Fix | Delete
/**
[698] Fix | Delete
* find farthest ancestor predicate hit
[699] Fix | Delete
*/
[700] Fix | Delete
var lastAncestor = function (node, pred) {
[701] Fix | Delete
var ancestors = listAncestor(node);
[702] Fix | Delete
return list.last(ancestors.filter(pred));
[703] Fix | Delete
};
[704] Fix | Delete
[705] Fix | Delete
/**
[706] Fix | Delete
* returns common ancestor node between two nodes.
[707] Fix | Delete
*
[708] Fix | Delete
* @param {Node} nodeA
[709] Fix | Delete
* @param {Node} nodeB
[710] Fix | Delete
*/
[711] Fix | Delete
var commonAncestor = function (nodeA, nodeB) {
[712] Fix | Delete
var ancestors = listAncestor(nodeA);
[713] Fix | Delete
for (var n = nodeB; n; n = n.parentNode) {
[714] Fix | Delete
if ($.inArray(n, ancestors) > -1) { return n; }
[715] Fix | Delete
}
[716] Fix | Delete
return null; // difference document area
[717] Fix | Delete
};
[718] Fix | Delete
[719] Fix | Delete
/**
[720] Fix | Delete
* listing all previous siblings (until predicate hit).
[721] Fix | Delete
*
[722] Fix | Delete
* @param {Node} node
[723] Fix | Delete
* @param {Function} [optional] pred - predicate function
[724] Fix | Delete
*/
[725] Fix | Delete
var listPrev = function (node, pred) {
[726] Fix | Delete
pred = pred || func.fail;
[727] Fix | Delete
[728] Fix | Delete
var nodes = [];
[729] Fix | Delete
while (node) {
[730] Fix | Delete
if (pred(node)) { break; }
[731] Fix | Delete
nodes.push(node);
[732] Fix | Delete
node = node.previousSibling;
[733] Fix | Delete
}
[734] Fix | Delete
return nodes;
[735] Fix | Delete
};
[736] Fix | Delete
[737] Fix | Delete
/**
[738] Fix | Delete
* listing next siblings (until predicate hit).
[739] Fix | Delete
*
[740] Fix | Delete
* @param {Node} node
[741] Fix | Delete
* @param {Function} [pred] - predicate function
[742] Fix | Delete
*/
[743] Fix | Delete
var listNext = function (node, pred) {
[744] Fix | Delete
pred = pred || func.fail;
[745] Fix | Delete
[746] Fix | Delete
var nodes = [];
[747] Fix | Delete
while (node) {
[748] Fix | Delete
if (pred(node)) { break; }
[749] Fix | Delete
nodes.push(node);
[750] Fix | Delete
node = node.nextSibling;
[751] Fix | Delete
}
[752] Fix | Delete
return nodes;
[753] Fix | Delete
};
[754] Fix | Delete
[755] Fix | Delete
/**
[756] Fix | Delete
* listing descendant nodes
[757] Fix | Delete
*
[758] Fix | Delete
* @param {Node} node
[759] Fix | Delete
* @param {Function} [pred] - predicate function
[760] Fix | Delete
*/
[761] Fix | Delete
var listDescendant = function (node, pred) {
[762] Fix | Delete
var descendents = [];
[763] Fix | Delete
pred = pred || func.ok;
[764] Fix | Delete
[765] Fix | Delete
// start DFS(depth first search) with node
[766] Fix | Delete
(function fnWalk(current) {
[767] Fix | Delete
if (node !== current && pred(current)) {
[768] Fix | Delete
descendents.push(current);
[769] Fix | Delete
}
[770] Fix | Delete
for (var idx = 0, len = current.childNodes.length; idx < len; idx++) {
[771] Fix | Delete
fnWalk(current.childNodes[idx]);
[772] Fix | Delete
}
[773] Fix | Delete
})(node);
[774] Fix | Delete
[775] Fix | Delete
return descendents;
[776] Fix | Delete
};
[777] Fix | Delete
[778] Fix | Delete
/**
[779] Fix | Delete
* wrap node with new tag.
[780] Fix | Delete
*
[781] Fix | Delete
* @param {Node} node
[782] Fix | Delete
* @param {Node} tagName of wrapper
[783] Fix | Delete
* @return {Node} - wrapper
[784] Fix | Delete
*/
[785] Fix | Delete
var wrap = function (node, wrapperName) {
[786] Fix | Delete
var parent = node.parentNode;
[787] Fix | Delete
var wrapper = $('<' + wrapperName + '>')[0];
[788] Fix | Delete
[789] Fix | Delete
parent.insertBefore(wrapper, node);
[790] Fix | Delete
wrapper.appendChild(node);
[791] Fix | Delete
[792] Fix | Delete
return wrapper;
[793] Fix | Delete
};
[794] Fix | Delete
[795] Fix | Delete
/**
[796] Fix | Delete
* insert node after preceding
[797] Fix | Delete
*
[798] Fix | Delete
* @param {Node} node
[799] Fix | Delete
* @param {Node} preceding - predicate function
[800] Fix | Delete
*/
[801] Fix | Delete
var insertAfter = function (node, preceding) {
[802] Fix | Delete
var next = preceding.nextSibling, parent = preceding.parentNode;
[803] Fix | Delete
if (next) {
[804] Fix | Delete
parent.insertBefore(node, next);
[805] Fix | Delete
} else {
[806] Fix | Delete
parent.appendChild(node);
[807] Fix | Delete
}
[808] Fix | Delete
return node;
[809] Fix | Delete
};
[810] Fix | Delete
[811] Fix | Delete
/**
[812] Fix | Delete
* append elements.
[813] Fix | Delete
*
[814] Fix | Delete
* @param {Node} node
[815] Fix | Delete
* @param {Collection} aChild
[816] Fix | Delete
*/
[817] Fix | Delete
var appendChildNodes = function (node, aChild) {
[818] Fix | Delete
$.each(aChild, function (idx, child) {
[819] Fix | Delete
node.appendChild(child);
[820] Fix | Delete
});
[821] Fix | Delete
return node;
[822] Fix | Delete
};
[823] Fix | Delete
[824] Fix | Delete
/**
[825] Fix | Delete
* returns whether boundaryPoint is left edge or not.
[826] Fix | Delete
*
[827] Fix | Delete
* @param {BoundaryPoint} point
[828] Fix | Delete
* @return {Boolean}
[829] Fix | Delete
*/
[830] Fix | Delete
var isLeftEdgePoint = function (point) {
[831] Fix | Delete
return point.offset === 0;
[832] Fix | Delete
};
[833] Fix | Delete
[834] Fix | Delete
/**
[835] Fix | Delete
* returns whether boundaryPoint is right edge or not.
[836] Fix | Delete
*
[837] Fix | Delete
* @param {BoundaryPoint} point
[838] Fix | Delete
* @return {Boolean}
[839] Fix | Delete
*/
[840] Fix | Delete
var isRightEdgePoint = function (point) {
[841] Fix | Delete
return point.offset === nodeLength(point.node);
[842] Fix | Delete
};
[843] Fix | Delete
[844] Fix | Delete
/**
[845] Fix | Delete
* returns whether boundaryPoint is edge or not.
[846] Fix | Delete
*
[847] Fix | Delete
* @param {BoundaryPoint} point
[848] Fix | Delete
* @return {Boolean}
[849] Fix | Delete
*/
[850] Fix | Delete
var isEdgePoint = function (point) {
[851] Fix | Delete
return isLeftEdgePoint(point) || isRightEdgePoint(point);
[852] Fix | Delete
};
[853] Fix | Delete
[854] Fix | Delete
/**
[855] Fix | Delete
* returns wheter node is left edge of ancestor or not.
[856] Fix | Delete
*
[857] Fix | Delete
* @param {Node} node
[858] Fix | Delete
* @param {Node} ancestor
[859] Fix | Delete
* @return {Boolean}
[860] Fix | Delete
*/
[861] Fix | Delete
var isLeftEdgeOf = function (node, ancestor) {
[862] Fix | Delete
while (node && node !== ancestor) {
[863] Fix | Delete
if (position(node) !== 0) {
[864] Fix | Delete
return false;
[865] Fix | Delete
}
[866] Fix | Delete
node = node.parentNode;
[867] Fix | Delete
}
[868] Fix | Delete
[869] Fix | Delete
return true;
[870] Fix | Delete
};
[871] Fix | Delete
[872] Fix | Delete
/**
[873] Fix | Delete
* returns whether node is right edge of ancestor or not.
[874] Fix | Delete
*
[875] Fix | Delete
* @param {Node} node
[876] Fix | Delete
* @param {Node} ancestor
[877] Fix | Delete
* @return {Boolean}
[878] Fix | Delete
*/
[879] Fix | Delete
var isRightEdgeOf = function (node, ancestor) {
[880] Fix | Delete
while (node && node !== ancestor) {
[881] Fix | Delete
if (position(node) !== nodeLength(node.parentNode) - 1) {
[882] Fix | Delete
return false;
[883] Fix | Delete
}
[884] Fix | Delete
node = node.parentNode;
[885] Fix | Delete
}
[886] Fix | Delete
[887] Fix | Delete
return true;
[888] Fix | Delete
};
[889] Fix | Delete
[890] Fix | Delete
/**
[891] Fix | Delete
* returns whether point is left edge of ancestor or not.
[892] Fix | Delete
* @param {BoundaryPoint} point
[893] Fix | Delete
* @param {Node} ancestor
[894] Fix | Delete
* @return {Boolean}
[895] Fix | Delete
*/
[896] Fix | Delete
var isLeftEdgePointOf = function (point, ancestor) {
[897] Fix | Delete
return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);
[898] Fix | Delete
};
[899] Fix | Delete
[900] Fix | Delete
/**
[901] Fix | Delete
* returns whether point is right edge of ancestor or not.
[902] Fix | Delete
* @param {BoundaryPoint} point
[903] Fix | Delete
* @param {Node} ancestor
[904] Fix | Delete
* @return {Boolean}
[905] Fix | Delete
*/
[906] Fix | Delete
var isRightEdgePointOf = function (point, ancestor) {
[907] Fix | Delete
return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);
[908] Fix | Delete
};
[909] Fix | Delete
[910] Fix | Delete
/**
[911] Fix | Delete
* returns offset from parent.
[912] Fix | Delete
*
[913] Fix | Delete
* @param {Node} node
[914] Fix | Delete
*/
[915] Fix | Delete
var position = function (node) {
[916] Fix | Delete
var offset = 0;
[917] Fix | Delete
while ((node = node.previousSibling)) {
[918] Fix | Delete
offset += 1;
[919] Fix | Delete
}
[920] Fix | Delete
return offset;
[921] Fix | Delete
};
[922] Fix | Delete
[923] Fix | Delete
var hasChildren = function (node) {
[924] Fix | Delete
return !!(node && node.childNodes && node.childNodes.length);
[925] Fix | Delete
};
[926] Fix | Delete
[927] Fix | Delete
/**
[928] Fix | Delete
* returns previous boundaryPoint
[929] Fix | Delete
*
[930] Fix | Delete
* @param {BoundaryPoint} point
[931] Fix | Delete
* @param {Boolean} isSkipInnerOffset
[932] Fix | Delete
* @return {BoundaryPoint}
[933] Fix | Delete
*/
[934] Fix | Delete
var prevPoint = function (point, isSkipInnerOffset) {
[935] Fix | Delete
var node, offset;
[936] Fix | Delete
[937] Fix | Delete
if (point.offset === 0) {
[938] Fix | Delete
if (isEditable(point.node)) {
[939] Fix | Delete
return null;
[940] Fix | Delete
}
[941] Fix | Delete
[942] Fix | Delete
node = point.node.parentNode;
[943] Fix | Delete
offset = position(point.node);
[944] Fix | Delete
} else if (hasChildren(point.node)) {
[945] Fix | Delete
node = point.node.childNodes[point.offset - 1];
[946] Fix | Delete
offset = nodeLength(node);
[947] Fix | Delete
} else {
[948] Fix | Delete
node = point.node;
[949] Fix | Delete
offset = isSkipInnerOffset ? 0 : point.offset - 1;
[950] Fix | Delete
}
[951] Fix | Delete
[952] Fix | Delete
return {
[953] Fix | Delete
node: node,
[954] Fix | Delete
offset: offset
[955] Fix | Delete
};
[956] Fix | Delete
};
[957] Fix | Delete
[958] Fix | Delete
/**
[959] Fix | Delete
* returns next boundaryPoint
[960] Fix | Delete
*
[961] Fix | Delete
* @param {BoundaryPoint} point
[962] Fix | Delete
* @param {Boolean} isSkipInnerOffset
[963] Fix | Delete
* @return {BoundaryPoint}
[964] Fix | Delete
*/
[965] Fix | Delete
var nextPoint = function (point, isSkipInnerOffset) {
[966] Fix | Delete
var node, offset;
[967] Fix | Delete
[968] Fix | Delete
if (nodeLength(point.node) === point.offset) {
[969] Fix | Delete
if (isEditable(point.node)) {
[970] Fix | Delete
return null;
[971] Fix | Delete
}
[972] Fix | Delete
[973] Fix | Delete
node = point.node.parentNode;
[974] Fix | Delete
offset = position(point.node) + 1;
[975] Fix | Delete
} else if (hasChildren(point.node)) {
[976] Fix | Delete
node = point.node.childNodes[point.offset];
[977] Fix | Delete
offset = 0;
[978] Fix | Delete
} else {
[979] Fix | Delete
node = point.node;
[980] Fix | Delete
offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;
[981] Fix | Delete
}
[982] Fix | Delete
[983] Fix | Delete
return {
[984] Fix | Delete
node: node,
[985] Fix | Delete
offset: offset
[986] Fix | Delete
};
[987] Fix | Delete
};
[988] Fix | Delete
[989] Fix | Delete
/**
[990] Fix | Delete
* returns whether pointA and pointB is same or not.
[991] Fix | Delete
*
[992] Fix | Delete
* @param {BoundaryPoint} pointA
[993] Fix | Delete
* @param {BoundaryPoint} pointB
[994] Fix | Delete
* @return {Boolean}
[995] Fix | Delete
*/
[996] Fix | Delete
var isSamePoint = function (pointA, pointB) {
[997] Fix | Delete
return pointA.node === pointB.node && pointA.offset === pointB.offset;
[998] Fix | Delete
};
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function