Code

Updated styles
[gosa.git] / gosa-core / include / functions.inc
index a543c7cf6360bc2d166976ac08af65ef08776504..dec99bbc2122eb6c8a77f587efdf0aae06637eae 100644 (file)
@@ -120,7 +120,7 @@ $REWRITE= array( "รค" => "ae",
  *
  *  \param  string 'class_name' The currently requested class
  */
-function __autoload($class_name) {
+function __gosa_autoload($class_name) {
     global $class_mapping, $BASE_DIR;
 
     if ($class_mapping === NULL){
@@ -135,6 +135,7 @@ function __autoload($class_name) {
       exit;
     }
 }
+spl_autoload_register('__gosa_autoload');
 
 
 /*! \brief Checks if a class is available. 
@@ -527,6 +528,7 @@ function ldap_login_user_htaccess ($username)
   /* Bail out if we have login restrictions set, for security reasons
      the message is the same than failed user/pw */
   if (!$ui->loginAllowed()){
+    new log("security","login","",array(),"Login restriction for user \"$username\", login not permitted");
     return (NULL);
   }
 
@@ -623,6 +625,7 @@ function ldap_login_user ($username, $password)
   /* Bail out if we have login restrictions set, for security reasons
      the message is the same than failed user/pw */
   if (!$ui->loginAllowed()){
+    new log("security","login","",array(),"Login restriction for user \"$username\", login not permitted");
     return (NULL);
   }
 
@@ -1243,7 +1246,7 @@ function print_sizelimit_warning()
 {
   if (session::global_is_set('size_limit') && session::global_get('size_limit') >= 10000000 ||
       (session::is_set('limit_exceeded') && session::get('limit_exceeded'))){
-    $config= "<input type='submit' name='edit_sizelimit' value="._("Configure").">";
+    $config= "<button type='submit' name='edit_sizelimit'>"._("Configure")."</button>";
   } else {
     $config= "";
   }
@@ -1626,15 +1629,7 @@ function gen_locked_message($user, $dn, $allow_readonly = FALSE)
   /* Prepare and show template */
   $smarty= get_smarty();
   $smarty->assign("allow_readonly",$allow_readonly);
-  if(is_array($dn)){
-    $msg = "<pre>";
-    foreach($dn as $sub_dn){
-      $msg .= "\n".$sub_dn.", ";
-    }
-    $msg = preg_replace("/, $/","</pre>",$msg);
-  }else{
-    $msg = $dn;
-  }
+  $msg= msgPool::buildList($dn);
 
   $smarty->assign ("dn", $msg);
   if ($remove){
@@ -1642,7 +1637,8 @@ function gen_locked_message($user, $dn, $allow_readonly = FALSE)
   } else {
     $smarty->assign ("action", _("Edit anyway"));
   }
-  $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry/entries %s"), "<b>".$msg."</b>", ""));
+
+  $smarty->assign ("message", _("These entries are currently locked:"). $msg);
 
   return ($smarty->fetch (get_template_path('islocked.tpl')));
 }
@@ -2439,11 +2435,64 @@ function compare_revision($revision_file, $revision)
  * \param int 'percentage' Value to display
  * \param int 'width' width of the resulting output
  * \param int 'height' height of the resulting output
- * \param boolean 'showvalue' weither to show the percentage in the progressbar or not
+ * \param boolean 'showtext' weither to show the percentage in the progressbar or not
  * */
-function progressbar($percentage,$width=100,$height=15,$showvalue=false)
+function progressbar($percentage, $width= 200, $height= 14, $showText= false, $colorize= true, $id= "")
 {
-  return("<img src='progress.php?x=$width&amp;y=$height&amp;p=$percentage'>");
+  $text= "";
+  $class= "";
+  $style= "width:${width}px;height:${height}px;";
+
+  // Fix percentage range
+  $percentage= floor($percentage);
+  if ($percentage > 100) {
+    $percentage= 100;
+  }
+  if ($percentage < 0) {
+    $percentage= 0;
+  }
+
+  // Only show text if we're above 10px height
+  if ($showText && $height>10){
+    $text= $percentage."%";
+  }
+
+  // Set font size
+  $style.= "font-size:".($height-3)."px;";
+
+  // Set color
+  if ($colorize){
+    if ($percentage < 70) {
+      $class= " progress-low";
+    } elseif ($percentage < 80) {
+      $class= " progress-mid";
+    } elseif ($percentage < 90) {
+      $class= " progress-high";
+    } else {
+      $class= " progress-full";
+    }
+  }
+  
+  // Apply gradients
+  $hoffset= floor($height / 2) + 4;
+  $woffset= floor(($width+5) * (100-$percentage) / 100);
+  foreach (array("-moz-box-shadow", "-webkit-box-shadow", "box-shadow") as $type) {
+    $style.="$type:
+                   0 0 2px rgba(255, 255, 255, 0.4) inset,
+                   0 4px 6px rgba(255, 255, 255, 0.4) inset,
+                   0 ".$hoffset."px 0 -2px rgba(255, 255, 255, 0.2) inset,
+                   -".$woffset."px 0 0 -2px rgba(255, 255, 255, 0.2) inset,
+                   -".($woffset+1)."px 0 0 -2px rgba(0, 0, 0, 0.6) inset,
+                   0pt ".($hoffset+1)."px 8px rgba(0, 0, 0, 0.3) inset,
+                   0pt 1px 0px rgba(0, 0, 0, 0.2);";
+  }
+
+  // Set ID
+  if ($id != ""){
+    $id= "id='$id'";
+  }
+
+  return "<div class='progress$class' $id style='$style'>$text</div>";
 }
 
 
@@ -2807,6 +2856,7 @@ function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FA
         "en_US" => "English",
         "nl_NL" => "Dutch",
         "pl_PL" => "Polish",
+        "pt_BR" => "Brazilian Portuguese",
         #"sv_SE" => "Swedish",
         "zh_CN" => "Chinese",
         "vi_VN" => "Vietnamese",
@@ -2820,6 +2870,7 @@ function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FA
         "en_US" => _("English"),
         "nl_NL" => _("Dutch"),
         "pl_PL" => _("Polish"),
+        "pt_BR" => _("Brazilian Portuguese"),
         #"sv_SE" => _("Swedish"),
         "zh_CN" => _("Chinese"),
         "vi_VN" => _("Vietnamese"),
@@ -3503,5 +3554,94 @@ function get_next_id_traditional($attrib, $dn)
 }
 
 
+/* Mark the occurance of a string with a span */
+function mark($needle, $haystack, $ignorecase= true)
+{
+  $result= "";
+
+  while (preg_match('/^(.*)('.preg_quote($needle).')(.*)$/i', $haystack, $matches)) {
+    $result.= $matches[1]."<span class='mark'>".$matches[2]."</span>";
+    $haystack= $matches[3];
+  }
+
+  return $result.$haystack;
+}
+
+
+/* Return an image description using the path */
+function image($path, $action= "", $title= "", $align= "middle")
+{
+  global $config;
+  global $BASE_DIR;
+  $label= null;
+
+  // Bail out, if there's no style file
+  if(!session::global_is_set("img-styles")){
+
+    // Get theme
+    if (isset ($config)){
+      $theme= $config->get_cfg_value("theme", "default");
+    } else {
+      # For debuging - avoid that there's no theme set
+      die("config not set!");
+      $theme= "default";
+    }
+
+    if (!file_exists("$BASE_DIR/ihtml/themes/$theme/img.styles")){
+      die ("No img.style for this theme found!");
+    }
+
+    session::global_set('img-styles', unserialize(file_get_contents("$BASE_DIR/ihtml/themes/$theme/img.styles")));
+  }
+  $styles= session::global_get('img-styles');
+
+  /* Extract labels from path */
+  if (preg_match("/\.png\[(.*)\]$/", $path, $matches)) {
+    $label= $matches[1];
+  }
+
+  $lbl= "";
+  if ($label) {
+    if (isset($styles["images/label-".$label.".png"])) {
+      $lbl= "<div style='".$styles["images/label-".$label.".png"]."'></div>";
+    } else {
+      die("Invalid label specified: $label\n");
+    }
+
+    $path= preg_replace("/\[.*\]$/", "", $path);
+  }
+
+  // Non middle layout?
+  if ($align == "middle") {
+    $align= "";
+  } else {
+    $align= ";vertical-align:$align";
+  }
+
+  // Clickable image or not?
+  if ($title != "") {
+    $title= "title='$title'";
+  }
+  if ($action == "") {
+    return "<div class='img' $title style='".$styles[$path]."$align'>$lbl</div>";
+  } else {
+    return "<input type='submit' class='img' id='$action' value='' name='$action' $title style='".$styles[$path]."$align'>";
+  }
+}
+
+/*! \brief    Encodes a complex string to be useable in HTML posts.
+ */
+function postEncode($str)
+{
+  return(preg_replace("/=/","_", base64_encode($str)));
+}
+
+/*! \brief    Decodes a string encoded by postEncode
+ */
+function postDecode($str)
+{
+  return(base64_decode(preg_replace("/_/","=", $str)));
+}
+
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>