我有点像Plone的新手,我试图将DataGridField与Dexterity一起使用.目标是使用Plone 4.1在我们的Intranet上发布可用性研究的结果.我已经创建了一个自定义文档类型(称为交互),我想在其中一个字段中使用datagrid来建模一个包含两列显示结果摘要的表.
根据collective.z3cform.datagridfield中列出的说明,我已成功将collective.z3cform.datagrid egg添加到我的buildout中的egg列表中,我可以看到新的Add-on在我的附加组件列表中显示为Active对于我的网站.我已经创建了一个简单的模式Python模块,它描述了一个文档,显示了我正在记录的可用性研究的结果:
from five import grok
from zope import schema
from zope import interface
from plone.directives import form
from plonetheme.mytheme import InteractionMessageFactory as _
from plone.app.textfield import RichText
from z3c.form import field, button
from Products.CMFCore.interfaces import IFolderish
from collective.z3cform.datagridfield import DataGridFieldFactory, DictRow
class IFinding(interface.Interface):
summary = schema.TextLine(title=_(u"Summary"))
percentage = schema.TextLine(title=_(u"Percentage"))
class IInteraction(form.Schema):
findings = schema.List(
title=_(u"Overview of findings"),
required=False,
value_type=DictRow(
title=_(u"Finding"),
schema=IFinding
)
)
class EditForm(form.EditForm):
grok.context(IInteraction)
grok.require('zope2.View')
fields = field.Fields(IInteraction)
fields['findings'].widgetFactory = DataGridFieldFactory
Run Code Online (Sandbox Code Playgroud)
我通过在profiles/default/types.xml中添加一行来注册我的新交互内容类型:
<?xml …
Run Code Online (Sandbox Code Playgroud) 我有一个运行Plone 4.1的站点,它具有使用Dexterity 1.1开发的自定义内容类型.我的内容作者可以使用"分类"选项卡向基本Plone页面添加关键字,如果用户使用其中一个关键字进行搜索,则用户可以成功找到这些页面.
我的内容作者也使用我开发的Dexterity自定义内容类型制作了页面.这是使用基于Python的文件系统架构定义的.如果用户在敏捷内容类型的标题和描述中搜索术语,他们将在搜索结果中返回敏捷页面.如果他们在关键字字段中使用查询字词进行搜索,则无法获得任何结果.但是,在高级搜索表单下,如果他们突出显示标签列表中的相应标签,他们可以找到Dexterity页面.
我使用ZMI中的portal_catalog工具检查了搜索索引的内容.似乎关键字被添加到SearchableText字段中以获取基本内容类型(如Page),但对于基于Dexterity的自定义内容类型,它们不是.
我是否需要编写其他代码以将关键字字段的内容插入SearchableText索引?
我正在尝试将自助服务终端功能添加到Android应用程序中.我希望利用Lollipop的屏幕固定功能,一旦启动就自动固定应用程序.应用程序UI已经构建了几个不同的活动.我在入口点活动startLockTask()
的onCreate()
方法中调用一次,但是一旦我导航到应用程序中的另一个活动,它就会取消.
我需要startLockTask()
在每次活动中打电话onCreate()/onResume()
吗?这将产生糟糕的用户体验,因为每次我在应用程序中从一个活动移动到另一个活动时,将出现"屏幕固定"烤面包.
我正在开发运行Android 5.0.2的Moto E(第二代)上的应用程序.
我正在尝试使用Robolectric(3.0 RC2)为Android应用程序中的SyncAdapter实现编写一些离线测试.该应用程序将在将使用wifi连接的工厂中的无SIM卡手机上运行.所以我希望能够针对我的wifi连接检查代码编写测试.
我已经编写了一个简单的测试,基于我在网上找到的示例来影响ConnectionManager,以模拟在wifi上.但是,尽管将NetworkInfo设置为TYPE_WIFI,但连接管理器始终返回TYPE_MOBILE的NetworkInfo类型.所以我的testSimple的最终断言失败了.我错过了一步吗?
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import test.app.BuildConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowConnectivityManager;
import org.robolectric.shadows.ShadowNetworkInfo;
import java.io.IOException;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, manifest = "/src/main/AndroidManifest.xml")
public class DownloadSyncAdapterTest {
private ConnectivityManager connectivityManager;
private ShadowConnectivityManager shadowConnectivityManager;
private ShadowNetworkInfo shadowOfActiveNetworkInfo;
@Before
public void setUp() throws IOException {
connectivityManager = getConnectivityManager();
shadowConnectivityManager = Shadows.shadowOf(connectivityManager);
shadowOfActiveNetworkInfo = Shadows.shadowOf(connectivityManager.getActiveNetworkInfo());
}
@Test
public void testSimple() {
NetworkInfo …
Run Code Online (Sandbox Code Playgroud)