themes/enanium/js/inlinerename.js
author Dan
Thu, 17 Dec 2009 04:27:50 -0500
changeset 1168 277a9cdead3e
parent 958 3dafe0969e5a
child 1300 1f97ee3ec614
permissions -rw-r--r--
Namespace_Default: added a workaround for an inconsistency in SQL. Basically, if you join the same table multiple times under multiple aliases, COUNT() always uses the first instance. Was affecting the comment counter in the "discussion" button.

// Sidebar collapse
function enanium_toggle_sidebar(side)
{
  if ( document.getElementById('enanium_sidebar_' + side).style.display == 'none' )
  {
    // show
    document.getElementById('enanium_sidebar_' + side).style.display = 'block';
    document.getElementById('enanium_sidebar_' + side + '_hidden').style.display = 'none';
    createCookie(side + '_sidebar', 'open', 365);
  }
  else
  {
    // hide
    document.getElementById('enanium_sidebar_' + side).style.display = 'none';
    document.getElementById('enanium_sidebar_' + side + '_hidden').style.display = 'block';
    createCookie(side + '_sidebar', 'collapsed', 365);
  }
}

function enanium_toggle_sidebar_right()
{
  enanium_toggle_sidebar('right');
}

function enanium_toggle_sidebar_left()
{
  enanium_toggle_sidebar('left');
}

addOnloadHook(function()
  {
    if ( readCookie('left_sidebar') == 'collapsed' )
    {
      document.getElementById('enanium_sidebar_left').style.display = 'none';
      document.getElementById('enanium_sidebar_left_hidden').style.display = 'block';
    }
    
    if ( readCookie('right_sidebar') == 'collapsed' )
    {
      document.getElementById('enanium_sidebar_right').style.display = 'none';
      document.getElementById('enanium_sidebar_right_hidden').style.display = 'block';
    }
  });

// Inline rename

function ajaxRenameInline()
{
  if ( KILL_SWITCH || IE )
    return false;
  // This trick is _so_ vBulletin...
  elem = document.getElementById('h2PageName');
  if(!elem) return;
  elem.style.display = 'none';
  name = elem.firstChild.nodeValue;
  textbox = document.createElement('input');
  textbox.type = 'text';
  textbox.value = name;
  textbox.id = 'pageheading';
  textbox.size = name.length + 7;
  textbox.onkeyup = function(e) { if(!e) return; if(e.keyCode == 13) ajaxRenameInlineSave(); if(e.keyCode == 27) ajaxRenameInlineCancel(); };
  textbox.oldname = name;
  elem.parentNode.insertBefore(textbox, elem);
  document.onclick = ajaxRenameInlineCancel;
  
  load_component(['l10n', 'fadefilter', 'messagebox']);
  textbox.focus();
  textbox.select();
}

function ajaxRenameInlineSave()
{
  elem1 = document.getElementById('h2PageName');
  elem2 = document.getElementById('pageheading');
  if(!elem1 || !elem2) return;
  value = elem2.value;
  elem2.parentNode.removeChild(elem2); // just destroy the thing
  elem1.removeChild(elem1.firstChild);
  elem1.appendChild(document.createTextNode(value));
  elem1.style.display = 'block';
  if(!value || value=='' || value==elem2.oldname) return;
  setAjaxLoading();
  ajaxPost(stdAjaxPrefix+'&_mode=rename', 'newtitle='+ajaxEscape(value), function() {
    if ( ajax.readyState == 4 )
    {
      unsetAjaxLoading();
      var response = String(ajax.responseText);
      if ( !check_json_response(response) )
      {
        handle_invalid_json(response);
        return false;
      }
      response = parseJSON(response);
      if ( response.success )
      {
        new MessageBox( MB_OK|MB_ICONINFORMATION, $lang.get('ajax_rename_success_title'), $lang.get('ajax_rename_success_body', { page_name_new: value }) );
      }
      else
      {
        alert(response.error);
      }
    }
  });
}

function ajaxRenameInlineCancel(e)
{
  if ( typeof(e) != 'object' && IE )
    e = window.event;
  elem1 = document.getElementById('h2PageName');
  elem2 = document.getElementById('pageheading');
  if(!elem1 || !elem2) return;
  if ( typeof(e) == 'object' && e.target )
  {
    if(e.target == elem2)
      return;
  }
  //value = elem2.value;
  elem2.parentNode.removeChild(elem2); // just destroy the thing
  //elem1.innerHTML = value;
  elem1.style.display = 'block';
  document.onclick = null;
}

if ( window.auth_rename )
{
  addOnloadHook(function()
    {
      var h2 = document.getElementById('h2PageName');
      if ( h2 )
      {
        h2.ondblclick = function()
        {
          ajaxRenameInline();
        }
      }
    });
}