|
思想:
修改portal页面调用的webpage.class.inc.php,在这里面加入我们想要的什么按钮啊,图片啊,表单啊
表单参数传给修改语言的脚本
完成后,自动跳转到portal页面
附件:
图标元素:中国国旗logo,美国国旗logo
vim main.php
vim conf.php
下载图标元素到itop的images:
1
2
3
4
5
| root@itsm:/home/itsm# cd /var/www/html/images/
wget
wget
mv chn.png chinese.jpg
mv usa.png english.jpg
|
修改webpage.class.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| root@itsm:/var/www/html/images# cd ../application/
root@itsm:/var/www/html/application# cp webpage.class.inc.php webpage.class.inc.php.0418
root@itsm:/var/www/html/application# vim webpage.class.inc.php
root@itsm:/var/www/html/portal/language# vim conf.php 修改itop 的url
if (class_exists('MetaModel') && MetaModel::GetConfig())
{
echo "<link rel=\"shortcut icon\" href=\"".utils::GetAbsoluteUrlAppRoot()."images/favicon.ico?itopversion=".ITOP_VERSION."\" />\n";
}
$myUserID = UserRights::GetUserId();
if (Dict::GetUserLanguage()=="EN US"){$mylanguage = "ZH";$lanuage_logo ="../images/chinese.jpg";$title="切换到中文";}
if (Dict::GetUserLanguage()=="ZH CN"){$mylanguage = "EN";$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=\"32\" heigth=\"32\" 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.jpg\" style=\"position:absolute;right:0px;top:00px\"></a> ";
$logo2 .= "</div> ";
$myhtml = self::FilterXSS($this->s_content);
echo str_replace($logo1,$logo2,$myhtml);
if (trim($s_captured_output) != "")
{
echo "<div class=\"raw_output\">".self::FilterXSS($s_captured_output)."</div>\n";
}
|
被调用的php脚本
1
2
3
4
5
6
7
8
9
10
11
| root@demo:/var/www/html/itop.new/portal/language# vim conf.php
<?php
//itop的webseervice 接口
define("URL", "https://itsmtest.logo.cn:11443/itop.new/webservices/rest.php");
#define("URL", "https://itsm-uat.logo.cn/webservices/rest.php");
#define("URL", "https://itsm.logo.cn/webservices/rest.php");
$aConfig = array(
'itop_user' => 'admin',
'itop_pass' => 'password',
);
?>
|
主程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| root@demo:/var/www/html/itop.new/portal/language# vim 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 (){
$url = URL;
$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 = URL;
$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_id = $_POST['user_id'];
$ldap_lang = $_POST['lang'];
if($ldap_lang == "EN"){$fields="\"language\": \"EN US\"";}
if($ldap_lang == "ZH"){$fields="\"language\": \"ZH CN\"";}
Action_update('UserLDAP',$ldap_id,$fields) ;
header("Location: ../index.php");
?>
|
访问测试:https://itsm.logo.cn/portal/index.php
|
|
|