Archive for the '笔记' Category

用Eclipse3.5+axis2搭建web services 开发和发布环境

xtykc 07月 14th, 2010

常用的Webservices 框架有axis2XfireApache CXF等,我们选择了比较简单的axis2。axis2目前最新的版本是1.5.1,
不仅支持SOAP 1.1和SOAP 1.2,还支持 REST。
选择axis2的一个重要理由是它有两个非常管用的Eclipse插件(Axis Eclipse Plug-in):代码生成工具(Axis2 code ge
nerator)和服务打包工具(Axis2 service archiver),前者在生成客户端测试代码时用,后者在打包发布时非常好用。
曾经尝试用MyEclipse7.0+axis2,但安装好的插件却怎么也不好使,遂放弃。
1.下载并安装Eclipse3.5
将下载到的Eclipse解压缩到一个目录,命名为“eclipse”或任何其他名称,打开该目录,找到一个名为eclipse.exe的可执行
文件,双击它,即可运行eclipse开发环境,eclipse是无需安装的,相比于MyEclipse,这点真是太重要了。
2.下载并安装Axis Eclipse Plug-in
在搜索引擎上输入“axis2 eclipse plug-in”这几个关键词,即可找到插件的下载地址,选取一个较为成熟稳定的版本下载,
我选择了1.3。将得到的两个压缩文件解压缩,得到Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0两个
文件夹,放到eclipse\plugins目录下,进入D:\eclipse\links目录,如果没有links目录就自己新建一个,在links目录下
新建link文档命名为”axis-eclipse-plugin.link”,编辑该文档,写上path=D:\eclipse\plugins,保存,好了,重启
eclipse,在菜单上依次点击file-new-other,如果看到以下画面,恭喜你,插件安装成功了!

3.下载Axis2并在Tomcat上部署Axis2
这里的axis2即是web services的开发包和框架(或者说容器)。在搜索引擎上输入“axis2 下载”,找到axis2的下载页面,
选择一个和上面安装的插件相同的版本下载,我的是1.3,下载到axis2-1.3-bin.zip和axis2-1.3-war.zip这两个压缩文
件,bin.zip是开发包,解压缩后得到一大堆jar文件,war.zip是部署在tomcat上的web services 容器,解压缩后得到
axis2.war,将axis2.war文件包放在tomcat的webapps下,重启tomcat,tomcat的webapps下会出现一个axis2的文件夹,在浏
览器上输入http://localhost:8080/axis,如果看到以下界面,就说明这个容器部署好了。

4.业务代码打包和发布
在eclipse上建一个工程,在Build Path里面导入上述bin.zip解压缩后得到的jar包,编写好业务代码和web services接
口,接口里面应该有一些public的方法以供调用。代码写好了之后,可以打包发布了,菜单file-new-other-Axis2
service archiver,出现如下界面,正确选择你的web services接口编译后的.class文件所在的目录,应该是最上层的
package所在的根目录,不包括package,如:D:\workspace\syncData\WebRoot\WEB-INF\classes。

然后一路next下去直到如下图所示:

在class name栏填写好类名和它的package名如:syncdata.syncShLibMyLibResult(syncdata为package名,syncShLibMyLibResult为类名),点击load,即可看到该类所有的public方法,选择好需要发布的方法,再点next,得到如下图所示的界面:

上图中output file location的地址(D:\Tomcat\webapps\axis2\WEB-INF\services)即为web services接口的发布地址,填写好后点击finish,弹出成功窗口,同时会在D:\Tomcat\webapps\axis2\WEB-INF\services目录下发现打包好的.aar文件,axis2默认支持热发布,这时该接口以及发布完成。也可以任意指定output file location的地址,只要发布时将得到的.aar文件拷贝到D:\Tomcat\webapps\axis2\WEB-INF\services下即可。在浏览器上输入http://localhost:8080/axis2/services/listServices,即可看到已经发布成功的web services接口和方法,如有发布不成功的情况,也可以在此页面上看到。

注意:当重新发布相同的web services接口时,需要删除tomcat/webapps下的整个axis2目录,将之前下载到的axis2.war包重新部署,再重新打包发布web services接口,即使将axis2的配置参数改为支持热更新也不行,尚不知何故。

Drupal & Library (二):万物皆“模块”

xtykc 11月 24th, 2009

模块的概念是Drupal最大的特色之一,有人把Drupal比喻成一个操作系统,模块则相当于应用软件,需要扩展什么功能,都可以通过模块的即插即用来达成。

Drupal具有博客、论坛、协同写作、评论、标签、投票、RSS订阅、RSS输出等功能,这些功能都是以模块化的方式管理的,每种特定的功能都作为独立的模块存在,Drupal的新功能通常都是通过模块(module)的方式来导入。管理员可以通过启用或关闭某一模块来决定某一功能是否可用。

Drupal的功能模块分为核心的功能模块、基本的功能模块和扩展的功能模块。核心功能模块是必需的,安装后即默认开启,不能关闭,包括区块(Block)、过滤器(Filter)、节点(Node)、系统管理(System)、用户管理(User);基本的功能模块也是Drupal安装后自带的,默认为关闭,需要管理员开启后才可用(据说Drupal7已经将cck和views作为基本的模块了,这两个模块结合起来,基本上能实现所有一般性的内容管理的需求);扩展的功能模块可以到Drupal官方网站下载。这些模块都可以免费下载,安装配置和卸载都异常简单,每个模块解压缩后都是一个文件夹,安装就是将该文件夹拷贝到Drupal安装目录下的modules文件夹中即可,管理员经过简单的配置,用户就可以使用,要卸载该模块只需从modules文件夹中删除该文件夹。

这种简单易用性降低了其使用的门槛,这种灵活性使得其应用范围非常广泛,可以架设单一功能的平台,如博客,wiki,bbs,也可以集数种功能于一站。

时至今日,我们已经习惯了那些能够把功能分解成一个一个独立的模块,可以即插即用的软件;而那些紧密耦合的系统,不仅禁锢了自己的发展,也绑架了他人(用户)的自由,这也和LIB2.0的精神如出一辙:开放、互动、互惠。图书馆存在的理由,就是被读者所需要,人又何尝不是?我们不过是花花世界里的一张拼图,或者是上帝棋盘上的一颗棋子,有自己的颜色,也有自己的位置。

这是一个拥挤的世界

没有人能带着尖锐的棱角生存

你孤芳自赏,闭紧了窗,关上了门

总有一天你会发现

所有你想进入的门窗都已消失不见,也许,除了博物馆

荣幸地做一个模块吧

磨光你的棱角,融入他人,波泽他人,也被他人惠及

你将无处不在,也不能不在。

开源OPAC2.O资料

xtykc 11月 17th, 2009

从收集到的资料来看,2009年,OPAC2.0好像集体失语了。难道和LIB2.0一样,已经是明日黄花了吗?还是大家都埋头苦干去了?

1.scriblio:

Posted February 25, 2009 by Casey Bisson Scriblio 2.7 Released
05.09.2008 Classic Resplendent 2008數位典藏國際會議心得—”The Social Life of Archives”
02.27.2008 Matt Mullenweg:Scriblio for Libraries
05.10.2008 编目精灵:香港科技大学的Scriblio实验目录
10.08.2007 钱涂无量: Scriblio:基于Wordpress的图书馆应用
2007 黄田青:Scriblio 给我们的启示
December 11, 2007 by Casey Bisson Scriblio 2.3 v4 Released
February 9, 2006 by Casey Bisson WPopac: An OPAC 2.0 Testbed
  • 例子:

Lamson Library of Plymouth state University普利茅斯州立大学

Cook Memorial Library

Byond Brown Paper(图片档案馆

Boston University School of Theology’s History of Missionlogy collection,

香港科技大学图书馆

2.VuFind

  • 最新消息(2009.9.30):

National Library of Ireland, University of Michigan, Wake Forest, Colorado State, York University, London School of Economics, University of Georgia的VuFind上线了!

October 16, 2008,1.0版发布

  • 中文博客报道:
12.15.2008编目精灵:耶鲁大学的VuFind使用调查
12.11.2008编目精灵:再看国外流行的开源软件──第三届梅隆技术协作奖
09.15.2007高山流水: VuFind
07.23.2007编目精灵:开源OPAC发布:VuFind

耶鲁大学

National Library of Australia

Villanova University Library

3. sopac

  • 国外报道:

《图书馆杂志》:Darien Library’s Open Source SOPAC 2.0 Emphasizes Patron Content / Josh Hadro. Library Journal, 8/29/2008
Talis的访谈:Panlibus Blog: John Blyberg Talks with Talis about SOPAC 2.0 (1st September 2008)

  • 中文博客报道(部分由编目精灵整理):
01.22.09 数图研究笔记:2008图林十大技术进展(下)
30.09.08 编目精灵:开源OPAC前端软件SOPAC 2.0下载
(2008-09-02)冰城节日:热闹的“达连湾”图书馆
(2nd Sep 2008)圖書館觀點:SOPAC 2.0
(9月 1st, 2008)数图研究笔记:SOPAC2.0发布
(2nd Feb 2008) 圖書館觀點:Web 2.0 工具不是萬能靈丹 (xtykc注:对2.0的反思、反省,重点推荐!)
(2007-01-22)编目精灵:AADL的新版OPAC

07.15.09 PVLD Goes Live with SOPAC
09.25.08 SOPAC 2 Released. Thesocialopac.net Launched.
09.01.08 A new DarienLibrary.org
11.14.08 SOPAC for Sirsi? Yes we can.
08.16.08 SOPAC 2.0: What to Expect
01.17.08 Library 2.0 Debased.
01.25.07 SOPAC, 4 days later.
01.21.07 AADL.org Goes Social

其它:

[PDF]开放源代码OPAC系统的比较: Scriblio和VuFind

Drupal6.14在PHP5.3上安装问题的解决

xtykc 10月 27th, 2009

vmware虚拟机上装好了centos,再下载了一个xampp1.7.2,下载Drupal最新发布的6.14,安装时出现了以下报错:

Function ereg() is deprecated in … … \includes\file.inc on line 905

查了下,原来,Drupal6.x只适合于安装在PHP5.2上,我下载的xampp1.7.2是PHP5.3,解决办法可参照这里,修改\includes\file.inc文件的905行:

Change

elseif ($depth >= $min_depth && ereg($mask, $file)) {

to

elseif ($depth >= $min_depth && mb_ereg($mask, $file)) {

问题解决。

Drupal 搭上 Linked Data

xtykc 10月 20th, 2009

自从认识TA以来,我就一直觉得TA很时髦,而且这种时髦还跟我们有丝丝缕缕的联系,且不说之前TA就关注着RDFSemantic Web,这不,今年9月1-5日在巴黎召开的Drupal年会上,就有一个session,专门教你怎么用TA来发布和使用Linked Data。

Drupal有一些模块来支持Linked Data的发布和使用:

RDF CCK 模块让drupal网站管理员能够很容易地将内容和数据以RDF格式输出; 利用evoc模块,可以基于不同的RDF词表 (如:Dubin Core, FOAF, SIOC) 来描述网站的内容;新的RDF SPARQL Endpoint 模块能解析复杂的SPARQL请求,将这些基于RDF格式的内容输出给请求方。

利用 RDF Proxy 模块,Drupal也可以作为Linked Data的使用者,可以规定什么样的数据以何种方式整合到自己的站点中,这些数据不是一次性导入进来就完事了,而是实时同步更新的。

这些模块可以将互联网上的RDF站点,不论它们是Linked Data 的提供者还是使用者,都关联起来,形成Linked Data 云。(看起来挺美!)

如果真能利用Drupal的这些模块,简单方便地打造Linked Data站点,我觉着,TA不仅时髦,还挺实在的。

不过,可惜,这些模块尚在开发之中,关注吧!

相关:Bringing Linked Data to Drupal; bringing the Semantic Web to the world

为mediawiki添加页面黑名单功能

xtykc 09月 27th, 2009

因为wiki本来是秉承开发思想的,因而相比于drupal来说,在用户管理和权限控制方面就弱了很多。但也有基本的权限控制,但都要到配置文档Localsettings.php里面去设置,相比于drupal的完全基于web管理来说,实在是太不爽了。

mediawiki本身具备了白名单的功能,所谓的白名单,只是针对匿名用户的,如果你的wiki网站不希望匿名用户看到大部分内容,只允许看到少量指定的内容,那么就可以把允许匿名用户看到的页面加入到白名单中去。加入白名单的方法是:

先禁止匿名用户访问所有内容,在Localsettings.php中加入:

$wgGroupPermissions['*']['read'] = false;

再在白名单中加入允许匿名用户看到的页面,在Localsettings.php中加入:

$wgWhitelistRead = array (urldecode(”%E9%A6%96%E9%A1%B5″), “Special:Userlogin”, “Wikipedia:Help”);

注意,如果页面名称是中文的,就要用类似”%E9%A6%96%E9%A1%B5″这样的字符串代替,可打开页面后,从浏览器地址栏拷贝。

但如果想让匿名用户看到大部分的页面,而只有小部分的页面需要登录才能看到的话,就需要黑名单的功能。可惜mediawiki本身没有这个功能,但因为黑名单的功能与白名单的功能在逻辑上是相反的,只要找到实现白名单的那个函数,扩展黑名单功能也非难事。

用$wgBlacklistRead在google上搜一下,就会发现已经有人扩展了这个功能,提供了下面这个patch文档:

— ./includes/Title.php.orig   2006-06-12 18:04:36.902437448 +0200
+++ ./includes/Title.php        2006-06-12 18:16:32.427661080 +0200
@@ -999,6 +999,15 @@
                global $wgUser;

                if( $wgUser->isAllowed(’read’) ) {
+                       global $wgBlacklistRead;
+
+                       /** some pages are explicitly disallowed for
+                           anonymous users */
+                       $name = $this->getPrefixedText();
+                       if( !$wgUser->isLoggedIn() && $wgBlacklistRead && in_arr
ay( $name, $wgBlacklistRead ) ) {
+                               return false;
+                       }
+
                        return true;
                } else {
                        global $wgWhitelistRead;
— ./includes/DefaultSettings.php.orig 2006-06-12 17:42:23.769104520 +0200
+++ ./includes/DefaultSettings.php      2006-06-12 17:43:22.753137584 +0200
@@ -702,6 +702,7 @@
 # own risks.

 $wgWhitelistRead = false;      # Pages anonymous user may see, like: = array (
“Main Page”, “Special:Userlogin”, “Wikipedia:Help”);
+$wgBlacklistRead = false;      # Pages anonymous user may not see (set as above)

 $wgAllowAnonymousMinor = false; # Allow anonymous users to mark changes as ‘minor’

仔细看,原来是在实现白名单的那个funcion中,加上了一些代码。在wiki根目录下的includes目录下,打开Title.php,找到userCanRead()这个方法,在

if( $wgUser->isAllowed(’read’) ) {
return true;

之间下面添加上述文档中前面带“+”符号的代码。

这样就可以在LocalSettings.php中设置:
$wgBlacklistRead = array (urldecode(”%E4%B8%8A%E5%9B%BE%E4%BA%BA%E5%91%98%E5%8F%8A%E9%83%A8%E9%97%A8%E5%88%86%E5%B8%83%E6%A6%82%E8%A6%81″));

fckeditor for mediawiki1.10-

xtykc 09月 27th, 2009

在上图服务百科上安装好fckeditor好久了,记下备忘之。

FCKeditor一直被认为是一个庞大复杂的重量级可视化编辑器,可以用在各种CMS系统中,功能很强大,但初次安装起来都不会一帆风顺,drupal中的安装已经算是不够傻瓜,在mediawiki中则更为复杂,mediawiki1.10以上的版本可安装集成版的fckeditor for mediwiki,官网上有安装说明,比较简单。我安装的mediawiki是1.9.3的汉化版,安装好这个集成版的fckeditor for mediwiki后,出现了与当前版本不兼容的问题,只能自己手工来做这部分集成工作了,严格按照以下步骤进行,其实也很简单:

1:到fckeditor官网( http://www.fckeditor.net)下载最新版的FckEditor;

2:在MediaWiki根安装目录下新建文件夹FCKeditor,把FckEditor安装包解压到这个新文件夹中,注意FCKeditor文件夹的路径,一定要在mediawiki的根目录下,而不是在extensions目录下,否则在wiki网站的页面上启用了FCKeditor之后,页面上会报“FCKeditor未定义”的错误,这是一般是因为系统找不到FCKeditor安装包的正确路径;

3:在/FCKeditor/fckconfig.js末尾添加:

FCKConfig.ToolbarSets["Wiki"] = [
 ['Source','-','Save','NewPage','-'],
 ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
 ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
 ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
 ['OrderedList','UnorderedList','-','Outdent','Indent'],
 ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
 ['Link','Unlink','Anchor'],
 ['Image','Table','Rule','Smiley','SpecialChar','PageBreak'],
 ['Style','FontFormat','FontName','FontSize'],
 ['TextColor','BGColor'],
 ['About']
] ;

4:在mediawiki的extensions目录中添加FCKeditor.php文件。进入mediawiki根目录下extensions文件夹,新建文件命名为FCKeditor.php,编辑它,把http://codex.wordpress.org.cn/MediaWiki%E6%89%A9%E5%B1%95%EF%BC%9AFCKeditor#Extension_FCKeditor.php上的代码拷贝到该文件中保存。

5:引用FCKeditor.php,在localsetting.php末尾的?>之前添加:

/* Installing this extension may lead to security and technical problems
 * as well as data corruption.
 */
require_once(”extensions/FCKeditor.php”);

$wgFCKUseEditor          = false;      // When set to ‘true’ the FCKeditor is the default editor.
$wgFCKEditorDir          = “FCKeditor”;
$wgFCKEditorToken        = “__USE_EDITOR__”;
$wgFCKEditorToolbarSet   = “Wiki”;
$wgFCKEditorHeight       = “600″;
$wgFCKEditorAllow_a_tags      = false; // <a> </a>
$wgFCKEditorAllow_img_tags    = false; // <img />
$wgFCKexcludedNamespaces = array();    // eg. “8″ for disabling the editor within the MediaWiki namespace.

注意这一行$wgFCKEditorToken = “__USE_EDITOR__”;中的__USE_EDITOR__是在wiki页面中启用fckeditor的标识,可以修改,比如我就修改成了“–USEFCKEDITOR–”在上图服务百科上,新建一个页面,在页面开始处加上“–USEFCKEDITOR–”,就可以看到我们熟悉的FCKeditor那豪华的可视化编辑界面。

问题:对于mediawiki来说,如果在已有的页面上启用FCKeditor会有一定的风险,破坏原有的页面结构,因此最好在空白的新建页面上启用。

参考:http://hi.baidu.com/xletian/blog/item/ce618e0245c3b6094afb5167.html/cmtid/4bb56760b18a4a4feaf8f833

Fckeditor for Multisites of Drupal

xtykc 09月 27th, 2009

安装基本与单站点一样,安装后出现图片上传后无法显示的问题,这是因为config.php中配置的文件上传路径是绝对路径,但在多站点情况下,站点的域名是多样甚而未知的,应该修改为以变量($_SERVER["SERVER_NAME"])表示的相对路径。

修改:modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php

$Config['Enabled'] = true ;

// Path to user files relative to the document root.
$Config['UserFilesPath'] = ‘/sites/’.$_SERVER["SERVER_NAME"].’/files/’;

参考:http://drupal.org/node/231917

Tomcat 下定时任务的实现

xtykc 08月 15th, 2009

有时候,我们不希望由于断网和误操作等原因导致浏览器端执行的任务受到干扰或中断,因此希望由服务器承担一部分工作,反复扫描,定时处理,这时,就需要用到定时任务。

这里,我没有采用线程的方式,而是用到了两个类:ServletContextListener 和 TimerTask。前者实现定时器,后者实现我们的任务。

1.写一个类实现ServletContextListener接口,作为定时器。

———————————————————

package fund.yzz;

import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener{
private Timer timer = null;

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log(”定时器销毁”);
System.out.println(”停止创建预制卡程序……”);
}

public void contextInitialized(ServletContextEvent event) {
//在这里初始化监听器,在tomcat启动的时候监听器启动
timer = new Timer(true);
event.getServletContext().log(”定时器已启动”);//添加日志,可在tomcat日志(一般在localhost)中查看到
timer.schedule(new MyTask(event.getServletContext()),0,5*1000);//调用 exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
}
}

————————————————————————————

2.写一个类继承TimerTask, 覆写 public void run()方法,使之执行我们自己的代码

—————————————————————————-

package fund.yzz;

import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import fund.utility.*;
import fund.database.*;
public class MyTask extends TimerTask
{
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask(ServletContext context){

this.context = context;
}
public void run(){
Calendar c = Calendar.getInstance();

if(!isRunning){
if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))

isRunning = true;
context.log(”开始执行指定任务”);

//———————————————————————————-

//在这里放上我们自己的代码
createyzz cy=new createyzz();
String str;
str=cy.create();
context.log(str);

//———————————————————————————-
isRunning = false;
context.log(”指定任务执行结束”);
}else{
context.log(”上一次任务执行还未结束”);
}
}
}

————————————————————————————-

3.配置web.xml文件

在tomcat/webapps/工程名/WEB-INF下新建一个web.xml文件,如果没有web.xml文件的话。新建的xml文件只包含以下代码:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<web-app xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
version=”2.5″>

<listener>
<listener-class>fund.yzz.MyListener</listener-class>
</listener>

</web-app>

如果原来存在web.xml,就在<web-app></web-app>之间加上上面红色部分。

fund.yzz是包名,MyListener是实现ServletContextListener接口的类名。

tomcat在启动时会读入该web.xml文件,找到listener监听的定时器,按照其中的时间设置定时执行任务。定时器在tomcat启动时生效,在tomcat关闭时销毁。

4.注意:

在同一服务器上,不可以同时存在多个监听同一定时器的web.xml文件,也就是说同一个定时器只能单独存在于一个服务器上,否则会出错。

参考:http://www.javadn.com/simple/index.php?t430.html

Gallery2.3 + geturls 模块实现图片“外链”功能

xtykc 08月 15th, 2009

1.简介:

geturls 模块,为gallery图片网站用户提供简单易用的拷贝外链的途径(提供经过格式化的BBcode/HTML URL地址),目前有两个版本:geturls-0.9.2.zip (for Gallery 2.0.x)geturls-0.9.5.zip (For Gallery 2.1.x, 2.2.x)

2.版本兼容性

geturls模块属于“由用户贡献的模块”,不保证与gallery所有核心版本的兼容性,更新的及时性也无法保证。因此在模块安装/激活时会出现由于版本不兼容而失败的情况:

如:

 Incompatible module!
Core API Required: 4.1 (available: 5.1)
Module API Required: 0.9 (available: 0.10)

或:(gallery2.3+geturls 0.9.2)

模块不兼容!
核心API需要: 6.10 (7.54 可用)
模块API需要: 2.4 (3.9 可用)

按照geturls模块论坛上提供的方法 修改geturls/module.inc为
[Line 46]         $this->setRequiredCoreApi(array(7, 54));
[Line 47]         $this->setRequiredModuleApi(array(3, 9));

会导致网站管理/插件(SiteAdmin/plugins)页面白屏,在modules下直接删除geturls文件夹,重新在gallery2.3上安装0.9.5时,已不存在版本不兼容情况,但点击“安装”后出现错误页面:

Error Detail -

Error (ERROR_COLLISION) : Duplicate permission id: geturls.view

  • in modules/core/classes/helpers/GalleryPermissionHelper_advanced.class at line 762 (GalleryCoreApi::error)
  • in modules/core/classes/GalleryCoreApi.class at line 929 (GalleryPermissionHelper_advanced::registerPermission)
  • in modules/geturls/module.inc at line 58 (GalleryCoreApi::registerPermission)
  • in modules/core/classes/GalleryModule.class at line 175 (GetUrlsModule::upgrade)
  • in modules/core/PluginCallback.inc at line 230 (GalleryModule::installOrUpgrade)
  • in modules/core/PluginCallback.inc at line 67 (PluginCallbackView::handleCallback)
  • in main.php at line 450 (PluginCallbackView::renderImmediate)
  • in main.php at line 104
  • in main.php at line 88
这是因为上一个版本的geturls模块没有正常卸载,或者说是卸载不完全的原因。用phpmyadmin进入gallery的MySQL数据库,删除表g2_PermissionSetMap中与geturls相关的记录,重新安装即OK!
3. 配置
网站管理(SiteAdmin)/Formatted URLs可配置模块的使用选项。
进入相册根目录/编辑相册/主题,可设置该模块菜单的显示位置,如是否显示在相册页,是否显示在照片页。
4. 汉化
geturls模块在菜单上显示为“Get item URLs”,可修改moduls/geturls/module.inc文件的第113行:
array(’text’ => $this->translate(’Get item URLs’)
array(’text’ => $this->translate(’拷贝外链’)
在相册信息下显示为“Show URLs”,可修改modules/geturls/templates/GetUrls.tpl文件的第17行:
{g->text text=”Show URLs”}
{g->text text=”拷贝外链”}
保存上面修改过的文件,记得保存时要在您的文本编辑器里选择”高级保存选项“,编目一定要选择UTF-8,否则中文会显示为乱码。最后,不要忘记”网站管理-维护“中清除模板缓存,刷新后即可看到如下效果:

5.点评

正如某人所言,这种拷贝外链的功能的确很初级,自己在图片上点击右键-属性,拷贝图片的地址到您网页上的可视化编辑器中,用加入图片或超链接的方式即可实现,在没有可视化编辑器的情况下,如果您稍微有一点点html编码知识,加上< a >< img >等标签,也可以实现,但偶相信大部分人和偶一样懒,有总是聊胜于无了。

Next »