itop portal 页面语言切换图标按钮,界面跳转按钮,完美解决

主要修改:
修改类文件,webpage.class.inc.php 加入变量,函数,功能改写
修改language 配置文件,不再需要手动修改itop webservice的url,前提是itop自己的配置文件,root_url后面带有/符号

修改application/webpage.class.inc.php

在56行下面
添加

    protected $s_userid;
    protected $s_userlanguage;

修改application/webpage.class.inc.php
在112行添加2个函数

 public function set_userid($s_userid)
    {
        $this->s_userid = $s_userid;
    }
    public function set_userlanguage($s_userlanguage)
    {
        $this->s_userlanguage = $s_userlanguage;
    }

修改application/webpage.class.inc.php
搜索  (class_exists(‘MetaModel‘) && MetaModel::GetConfig()),改成下面

        if (class_exists(‘MetaModel‘) && MetaModel::GetConfig())
        {
                        echo "<link rel=\"shortcut icon\" href=\"".utils::GetAbsoluteUrlAppRoot()."images/favicon.ico?itopversion=".ITOP_VERSION."\" />\n";
        }
        /*     需要修改的区域   ,在portal页面的顶部,添加跳转   */
        $myUserID = $this->s_userid;
        $mylanguage=‘‘;
        $lanuage_logo=‘‘;
        $title=‘‘;
        if ($this->s_userlanguage=="EN US"){$mylanguage = "ZH CN";$lanuage_logo ="../images/chinese.jpg";$title="切换到中文";}
        if ($this->s_userlanguage=="ZH CN"){$mylanguage = "EN US";$lanuage_logo ="../images/english.jpg";$title="switch to English";}
        echo "</head>\n";
        echo "<body>\n";
        $logo1 = ‘<div id="logo"></div>‘;
        $logo2 = " <div id=\"logo\">  ";
        $logo2 .= " <form action=language/main.php method=\"post\"> ";
        $logo2 .= "<input type=\"hidden\" value=\"{$myUserID}\" name=\"user_id\" />";
        $logo2 .= " <input type=\"hidden\" value=\"{$mylanguage}\" name=\"lang\" />";
        $logo2 .= " <input type=\"image\" src={$lanuage_logo} width=\"45\"  title=\"{$title}\" onclick=\"this.submit()\" style=\"position:absolute;right:30px;top:00px\" />";
        $logo2 .= "</form>";
        $logo2 .= "<a href=‘../‘><img width=\"22\" heigth=\"22\"  title=\"Go to console\"  src=\"../images/switch.png\" style=\"position:absolute;right:0px;top:00px\"></a> ";
        $logo2 .= "</div> ";
        $myhtml =  self::FilterXSS($this->s_content);
        echo str_replace($logo1,$logo2,$myhtml);
        /*     需要修改的区域     */
        //改成上面
        if (class_exists(‘DBSearch‘))

============================
在portal/index.php"
只需要修改

                                case ‘show_ongoing‘:
                                default:
                                $oP->set_title(Dict::S(‘Portal:ShowOngoing‘));
                                DisplayMainMenu($oP);
                                ShowOngoingTickets($oP);
                        }
                }
        }
        $oP->set_userid(UserRights::GetUserId());
        $oP->set_userlanguage(Dict::GetUserLanguage());
        $oP->output();
=================================

在portal/index.php  加入

//
// Main program
//
///////////////////////////////////////////////////////////////////////////////
try
{
        require_once(‘popup.php‘);
=========================================

popup.php 文件位置与内容

所使用的jquery下载

wget http://libs.baidu.com/jquery/2.0.0/jquery.min.js
[email protected]:/var/www/html$ cat portal/popup.php
<script src="jquery.min.js"></script>
<?php
$str_op_china = <<< EOT
<div id="op1" role="tooltip" class="ui-tooltip ui-widget ui-corner-all ui-widget-content form_field_error">
    <div class="ui-tooltip-content">
<b>高</b>
- 业务服务、系统、网络、应用,影响客户可见<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 重要的内部应用且影响到公司层面<br><br> 
<b>中</b>
- 业务服务、系统、网络、应用,影响客户不可见<br>&nbsp;&nbsp;&nbsp;&nbsp; - 重要的内部应用且影响到部门层面<br><br>
<b>低</b>- 非关键服务、系统、网络、应用,影响范围小且严重程度低<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 影响一个或少数内部员工<br>
</div>
</div>
<div id="op2" role="tooltip" class="ui-tooltip ui-widget ui-corner-all ui-widget-content form_field_error">
    <div class="ui-tooltip-content">
<b>紧急:已经产生影响</b> <br>
<b>高&nbsp;&nbsp;&nbsp;&nbsp;: 几小时内即将产生影响 </b><br>
<b>中&nbsp;&nbsp;&nbsp;&nbsp;: 可能一周内产生影响</b> <br>
<b>低&nbsp;&nbsp;&nbsp;&nbsp;: 在一周内不会产生影响</b>
</div>
</div>
EOT;
$str_op_english = <<< EOT
<div id="op1" role="tooltip" class="ui-tooltip ui-widget ui-corner-all ui-widget-content form_field_error">
    <div class="ui-tooltip-content">
<b>high</b><br>
 - Business service, system, network or application of which the impacts are visible to business clients <br>
 - Internal critical service, system, network or application with impact at corporate level<br>
<b>meduim </b><br>
- Business service, system, network or application of which the impacts are invisible to business clients<br>
- Internal service, system, network or application with impact at functional level<br>
<b>low</b><br>
- None critical service, system, network or application of which impacts are limited<br>
- A single or a few internal users are impacted<br>
</div>
</div>
<div id="op2" role="tooltip" class="ui-tooltip ui-widget ui-corner-all ui-widget-content form_field_error">
    <div class="ui-tooltip-content">
<b>Urgent</b> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Substantial impact in place <br>
<b>high</b> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Imminent impact within hours <br>
<b>Medium</b> 
&nbsp;&nbsp;- Possible impact within days<br>
<b>Low</b> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Possible impact a week later
</div>
</div>
EOT;
if (Dict::GetUserLanguage()=="EN US")
{
echo ($str_op_english);
}
else
{
echo ($str_op_china);
}
?> 
<script type="text/javascript">
$(document).ready(function() {
    $(‘#op1,#op2‘).hide();
 
 
    var attr = $(‘select#attr_impact‘).offset().left + $(‘select#attr_impact‘).width();
 
    $(‘select#attr_impact‘).mouseover(function() {
 
        $(‘#op1‘).show();
        $("div#op1").offset({
            top: $(‘select#attr_impact‘).offset().top,
            left: attr
        });
    });
 
 
    $(‘select#attr_urgency‘).mouseover(function() {
        $(‘#op2‘).show();
        $("div#op2").offset({
            top: $(‘select#attr_urgency‘).offset().top,
            left: attr
        });
    });
    $(‘select,option‘).mouseout(function() {
        $(‘#op1,#op2‘).hide();
    });
 
 
});
</script>

========================================================

[email protected]:/var/www/html/itop.new/portal/language# cat conf.php 
<?php
require "../../conf/production/config-itop.php";
$itop_webservice = $MySettings[‘app_root_url‘].‘webservices/rest.php‘;
$aConfig = array(
                ‘itop_user‘        => ‘admin‘,                        
                ‘itop_pass‘        => ‘asset$IT‘,                     
                ‘itop_webservice‘  => "$itop_webservice",                     
 );
?>
[email protected]:/var/www/html/itop.new/portal/language# 
[email protected]:/var/www/html/itop.new/portal/language# 
[email protected]:/var/www/html/itop.new/portal/language# 
[email protected]:/var/www/html/itop.new/portal/language# cat main.php 
<?php
function request_post($url, $param) {
  if (empty($url) || empty($param)) return false;
  $postUrl = $url;
  $curlPost = $param;
  $ch = curl_init();                              //初始化curl
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  curl_setopt($ch, CURLOPT_URL,$postUrl);          //抓取指定网页
  curl_setopt($ch, CURLOPT_HEADER, 0);             //设置header
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     //要求结果为字符串且输出到屏幕上
  curl_setopt($ch, CURLOPT_POST, 1);               //post提交方式
  curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  $data = curl_exec($ch);                          //运行curl
  curl_close($ch);
    return json_decode($data,true);                  //把返回的数据转换成json格式
}
//检查与itop通信是否正常
function check_itop_network (){
    global $aConfig;
    $url = $aConfig[‘itop_webservice‘];
    $get1 = request_post($url,"test");
    $get=$get1[‘message‘];
    if(!strstr($get,"Missing parameter" )){
    echo "与 itop 连接失败!\n";
    exit;
    }
}
//itop 的 webservice 接口,可以对itop中符合Data Model进行增删改查
function Action_update($class,$key,$fields){
  global $aConfig;
  $url = $aConfig[‘itop_webservice‘];
  $post_data[‘version‘]  = ‘1.0‘;
  $post_data[‘auth_user‘]= $aConfig[‘itop_user‘];
  $post_data[‘auth_pwd‘] = $aConfig[‘itop_pass‘];
  $post_data[‘json_data‘]= "{
     \"operation\": \"core/update\",
     \"class\": \"{$class}\",
     \"key\": $key,
     \"output_fields\": \"*\",
     \"fields\": { $fields } ,
     \"comment\": \"\"    
     }";
return request_post($url, $post_data);
}
#********************************************************************************
#       Main
#********************************************************************************
require "conf.php";
//检查与itop联络状态
check_itop_network();
//接收用户的ldap_user id
$ldap_id   = $_POST[‘user_id‘];
//接收用户想要改成什么语言  EN US  ,ZH CN
$ldap_lang = $_POST[‘lang‘];
$fields="\"language\": \"{$ldap_lang}\"";
Action_update(‘UserLDAP‘,$ldap_id,$fields) ;
header("Location: ../index.php");
?>

[email protected]:/var/www/html/itop.new/portal/language#

==============================================
排版修改
[email protected]:/var/www/html$ sudo vim portal/portal.css

 78 a.button , a.button:visited {
 79 /*    line-height: 1.2em;  */
 80     color: #FFFFFF;
 81     font-size: 1.1em;
 82     font-weight: bold;
 83     text-decoration: none;
 84     display: inline;
 85     clear:both;
 86 }

可能遇到的问题,
按钮图标不显示:请核对路径,看看图片文件是否存在

时间: 2024-10-12 13:23:45

itop portal 页面语言切换图标按钮,界面跳转按钮,完美解决的相关文章

itop portal 页面添加中英文切换按钮

思想:修改portal页面调用的webpage.class.inc.php,在这里面加入我们想要的什么按钮啊,图片啊,表单啊表单参数传给修改语言的脚本完成后,自动跳转到portal页面 附件:图标元素:中国国旗logo,美国国旗logovim main.php vim conf.php 下载图标元素到itop的images: [email protected]:/home/itsm# cd /var/www/html/images/ wget http://php.chinaunix.net/i

C语言API编写窗体界面和按钮

        最近有个同学的程序需要用对话框的方式实现,但前面都是通过黑框形式完成的,老师突然让增加一个界面,本来准备采用MFC完成的,但后来一想,该程序核心东西是体现在它的算法上,控制台的程序并非不好.转念一想,如果使用MFC这样的方法好像需要再倒腾一遍,想到了大一在"C语言能干大事"中的东西,所以就准备采用这种形式直接完成,投机取巧的方法. 主要是通过调用Windows API界面的CreateWindows函数完成,同时也能创建按钮,把参数设置为button,如果想响应该按钮,

如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载

可视化项目中经常用到ecahrt,各种异步加载,连接socket,多语言切换等问题,现在汇总一下: Ecahrt初始化,全局统一init,可以初始化为0,等待后续数据操作 1.如果是api重新请求,数据手动获取这种方式,直接setOption; 2. 如果是socket实时数据传输展示,直接setOption,但是有tab切换等引起找不到dom的宽高,可以监听切换的事件,在正确的index下resize(); 3. 如果是地图数据,第一次也是手动加载: import i18n from '@/a

Android--ViewPager多页面滑动切换以及动画效果

背景                                                                                           ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换.这个附加包是android-support-v4.jar. 根据屏幕的分辨率和图片的宽度计算动画移动的偏移量 代码                                                   

【Android 多语言切换简单实例分享】

一.Android多语言切换 Android应用的开发不可能只针对某一个国家或者区域使用,各国间语言文化各不相同,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决方式,在res目录下通过values+语言编码来实现多国语言的支持(中间采用连字符号-连接),例如:values-es代表英文,如果你决定了你的应用要支持多国语言,那么你就必须新建多种values-XXX的多语言支持文件,下面通过一个例子来看看基本的使用方式,先看下效果图: 1.工程结构 注:主要看下

Android应用内语言切换实现

自定义控件系列结束了,打个回马枪,补上前段时间埋下的一个坑---"应用内语言切换".APP语言改变是一个Configuration,但是这个Configuration和android手机屏幕旋转有点不大一样.屏幕旋转的时候,会destroy当前页面,并进行重新绘制.而切换语言后不会重新绘制页面,所以这种情况的出现造成了网上的一知半解小伙伴们哀声一片,不是在咒骂api的坑爹,就是在卖力的另辟蹊径想尽办法解决问题.思路都是很好的,目的也是坚决的,可是方向是错误的,把哥哥我也给带进了坑了,爬

iOS应用内语言切换功能

? 添加关注 作者 FarmGuo 2016.01.27 15:36* 写了6453字,被44人关注,获得了56个喜欢 iOS应用内语言切换功能 字数1372 阅读681 评论7 喜欢7 当我们的应用仅仅面向国内用户群,一般仅支持一种语言--中文就可以了.当面向国外用户时就需要进行国际化了,不仅仅是语言的转变,也可能包括设计风格,页面布局.交互效果的转变,如微信,微博,QQ这类应用都有着切换语言的功能. iOS常用的国际化流程 1.建立strings文件.2.在Localization勾选支持的

多语言支持:系统界面以及用户产生内容

促使我们下决心真正支持多语言的驱动力是:中国的企业越做越大,我们的很多客户都在全球有业务,甚至并购了其他国家的公司,不支持多语言,就根本无法为客户提供服务,不支持多语言的门户产品功能再多也是个不能用的门户产品 多语言的支持听起来简单,但在企业里面并不简单,因为企业里多语言有两个含义:一是系统界面的多语言,二是客户产生内容的多语言 SharePoint原生支持系统界面的多语言,但有限制,另外SharePoint并不支持客户产生内容的多语言,鉴于此,光合信息的OpenShare对SharePoint

【大话QT之十四】QT实现多语言切换

功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言包. 实现方法: 为了支持国际化最关键的地方是制作多国语言包,然后再实现动态切换.QT里面既可以采用命令行也可以采用Qt Creator的界面操作来生成,这里我们利用Qt Creator来生成多国语言包.基本流程是,先生成ts文件,然后生成qm文件,最后通过QTranslator类来加载qm文件,实