Commit 94094bee authored by Sebastien Robin's avatar Sebastien Robin

many updates on method names, ex:

  RemoteValue -> SubscriberValue
  LocalValue -> PublisherValue
  edit_Publications -> manage_editPublication
Added several methods:
  applySubscriberDocument
  applyPublisherDocument
  resolveContext


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@228 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 1ef01e23
...@@ -115,7 +115,7 @@ class ERP5Conduit(XMLSyncUtilsMixin): ...@@ -115,7 +115,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
This fucntion returns conflict_list, wich is of the form, This fucntion returns conflict_list, wich is of the form,
[conflict1,conflict2,...] where conclict1 is of the form : [conflict1,conflict2,...] where conclict1 is of the form :
[object.getPath(),keyword,local_and_actual_value,remote_value] [object.getPath(),keyword,local_and_actual_value,subscriber_value]
""" """
conflict_list = [] conflict_list = []
xml = self.convertToXml(xml) xml = self.convertToXml(xml)
...@@ -351,8 +351,8 @@ class ERP5Conduit(XMLSyncUtilsMixin): ...@@ -351,8 +351,8 @@ class ERP5Conduit(XMLSyncUtilsMixin):
#conflict_list += [Conflict(object_path=object.getPhysicalPath(), #conflict_list += [Conflict(object_path=object.getPhysicalPath(),
# keyword=keyword, # keyword=keyword,
# xupdate=string_io)] # xupdate=string_io)]
#local_value=current_data, # not needed any more #publisher_value=current_data, # not needed any more
#remote_value=data)] # not needed any more #subscriber_value=data)] # not needed any more
# We will now apply the argument with the method edit # We will now apply the argument with the method edit
if args != {} and (isConflict==0 or force): if args != {} and (isConflict==0 or force):
LOG('updateNode',0,'object._edit, args: %s' % str(args)) LOG('updateNode',0,'object._edit, args: %s' % str(args))
......
...@@ -39,19 +39,18 @@ class Conflict(SyncCode, Implicit): ...@@ -39,19 +39,18 @@ class Conflict(SyncCode, Implicit):
""" """
object_path : the path of the obect object_path : the path of the obect
keyword : an identifier of the conflict keyword : an identifier of the conflict
local_value : the value that we have locally publisher_value : the value that we have locally
remote_value : the value sent by the remote box subscriber_value : the value sent by the remote box
""" """
def __init__(self, object_path=None, keyword=None, xupdate=None, local_value=None,\ def __init__(self, object_path=None, keyword=None, xupdate=None, publisher_value=None,\
remote_value=None, domain=None, domain_id=None): subscriber_value=None, subscriber=None):
self.object_path=object_path self.object_path=object_path
self.keyword = keyword self.keyword = keyword
self.setLocalValue(local_value) self.setLocalValue(publisher_value)
self.setRemoteValue(remote_value) self.setRemoteValue(subscriber_value)
self.domain = domain self.subscriber = subscriber
self.resetXupdate() self.resetXupdate()
self.domain_id = domain_id
def getObjectPath(self): def getObjectPath(self):
""" """
...@@ -59,11 +58,11 @@ class Conflict(SyncCode, Implicit): ...@@ -59,11 +58,11 @@ class Conflict(SyncCode, Implicit):
""" """
return self.object_path return self.object_path
def getLocalValue(self): def getPublisherValue(self):
""" """
get the domain get the domain
""" """
return self.local_value return self.publisher_value
def getXupdateList(self): def getXupdateList(self):
""" """
...@@ -101,51 +100,67 @@ class Conflict(SyncCode, Implicit): ...@@ -101,51 +100,67 @@ class Conflict(SyncCode, Implicit):
get the domain get the domain
""" """
try: try:
self.local_value = value self.publisher_value = value
except TypeError: # It happens when we try to store StringIO except TypeError: # It happens when we try to store StringIO
self.local_value = None self.publisher_value = None
def getRemoteValue(self): def getSubscriberValue(self):
""" """
get the domain get the domain
""" """
return self.remote_value return self.subscriber_value
def setRemoteValue(self, value): def setRemoteValue(self, value):
""" """
get the domain get the domain
""" """
try: try:
self.remote_value = value self.subscriber_value = value
except TypeError: # It happens when we try to store StringIO except TypeError: # It happens when we try to store StringIO
self.remote_value = None self.subscriber_value = None
def applyLocalValue(self): def applyPublisherValue(self):
""" """
after a conflict resolution, we have decided after a conflict resolution, we have decided
to keep the local version of this object to keep the local version of this object
""" """
p_sync = getToolByName(self,'portal_synchronizations') p_sync = getToolByName(self,'portal_synchronizations')
p_sync.applyLocalValue(self) p_sync.applyPublisherValue(self)
def applyRemoteValue(self): def applyPublisherDocument(self):
"""
after a conflict resolution, we have decided
to keep the local version of this object
"""
p_sync = getToolByName(self,'portal_synchronizations')
p_sync.applyPublisherDocument(self)
def applySubscriberDocument(self):
"""
after a conflict resolution, we have decided
to keep the local version of this object
"""
p_sync = getToolByName(self,'portal_synchronizations')
p_sync.applySubscriberDocument(self)
def applySubscriberValue(self):
""" """
get the domain get the domain
""" """
p_sync = getToolByName(self,'portal_synchronizations') p_sync = getToolByName(self,'portal_synchronizations')
p_sync.applyRemoteValue(self) p_sync.applySubscriberValue(self)
def setDomain(self, domain): def setSubscriber(self, subscriber):
""" """
set the domain set the domain
""" """
self.domain = domain self.subscriber = subscriber
def getDomain(self): def getSubscriber(self):
""" """
get the domain get the domain
""" """
return self.domain return self.subscriber
def getKeyword(self): def getKeyword(self):
""" """
...@@ -153,17 +168,11 @@ class Conflict(SyncCode, Implicit): ...@@ -153,17 +168,11 @@ class Conflict(SyncCode, Implicit):
""" """
return self.keyword return self.keyword
def getDomainId(self): def getPropertyId(self):
"""
get the domain id
"""
return self.domain_id
def setDomainId(self, domain_id):
""" """
set the domain get the property id
""" """
self.domain_id = domain_id return self.keyword
class Signature(SyncCode): class Signature(SyncCode):
""" """
......
...@@ -107,8 +107,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -107,8 +107,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
managePublications = DTMLFile( 'dtml/managePublications', globals() ) managePublications = DTMLFile( 'dtml/managePublications', globals() )
security.declareProtected( CMFCorePermissions.ManagePortal security.declareProtected( CMFCorePermissions.ManagePortal
, 'addPublicationsForm' ) , 'manage_addPublicationForm' )
addPublicationsForm = DTMLFile( 'dtml/addPublications', globals() ) manage_addPublicationForm = DTMLFile( 'dtml/manage_addPublication', globals() )
security.declareProtected( CMFCorePermissions.ManagePortal security.declareProtected( CMFCorePermissions.ManagePortal
, 'manageSubsciptions' ) , 'manageSubsciptions' )
...@@ -119,8 +119,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -119,8 +119,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
manageConflicts = DTMLFile( 'dtml/manageConflicts', globals() ) manageConflicts = DTMLFile( 'dtml/manageConflicts', globals() )
security.declareProtected( CMFCorePermissions.ManagePortal security.declareProtected( CMFCorePermissions.ManagePortal
, 'addSubscriptionsForm' ) , 'manage_addSubscriptionForm' )
addSubscriptionsForm = DTMLFile( 'dtml/addSubscriptions', globals() ) manage_addSubscriptionForm = DTMLFile( 'dtml/manage_addSubscription', globals() )
security.declareProtected( CMFCorePermissions.ManagePortal security.declareProtected( CMFCorePermissions.ManagePortal
, 'editProperties' ) , 'editProperties' )
...@@ -141,8 +141,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -141,8 +141,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
+ '?manage_tabs_message=Tool+updated.' + '?manage_tabs_message=Tool+updated.'
) )
security.declareProtected(Permissions.ModifyPortalContent, 'addPublications') security.declareProtected(Permissions.ModifyPortalContent, 'manage_addPublication')
def addPublications(self, id, publication_url, destination_path, def manage_addPublication(self, id, publication_url, destination_path,
query, xml_mapping, RESPONSE=None): query, xml_mapping, RESPONSE=None):
""" """
create a new publication create a new publication
...@@ -155,8 +155,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -155,8 +155,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('managePublications') RESPONSE.redirect('managePublications')
security.declareProtected(Permissions.ModifyPortalContent, 'addSubscriptions') security.declareProtected(Permissions.ModifyPortalContent, 'manage_addSubscription')
def addSubscriptions(self, id, publication_url, subscription_url, def manage_addSubscription(self, id, publication_url, subscription_url,
destination_path, query, xml_mapping, RESPONSE=None): destination_path, query, xml_mapping, RESPONSE=None):
""" """
XXX should be renamed as addSubscription XXX should be renamed as addSubscription
...@@ -170,8 +170,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -170,8 +170,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('manageSubscriptions') RESPONSE.redirect('manageSubscriptions')
security.declareProtected(Permissions.ModifyPortalContent, 'editPublications') security.declareProtected(Permissions.ModifyPortalContent, 'manage_editPublication')
def editPublications(self, id, publication_url, destination_path, def manage_editPublication(self, id, publication_url, destination_path,
query, xml_mapping, RESPONSE=None): query, xml_mapping, RESPONSE=None):
""" """
modify a publication modify a publication
...@@ -182,8 +182,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -182,8 +182,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('managePublications') RESPONSE.redirect('managePublications')
security.declareProtected(Permissions.ModifyPortalContent, 'editSubscriptions') security.declareProtected(Permissions.ModifyPortalContent, 'manage_editSubscription')
def editSubscriptions(self, id, publication_url, subscription_url, def manage_editSubscription(self, id, publication_url, subscription_url,
destination_path, query, xml_mapping, RESPONSE=None): destination_path, query, xml_mapping, RESPONSE=None):
""" """
modify a subscription modify a subscription
...@@ -194,8 +194,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -194,8 +194,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('manageSubscriptions') RESPONSE.redirect('manageSubscriptions')
security.declareProtected(Permissions.ModifyPortalContent, 'deletePublications') security.declareProtected(Permissions.ModifyPortalContent, 'manage_deletePublication')
def deletePublications(self, id, RESPONSE=None): def manage_deletePublication(self, id, RESPONSE=None):
""" """
delete a publication delete a publication
""" """
...@@ -203,8 +203,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -203,8 +203,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('managePublications') RESPONSE.redirect('managePublications')
security.declareProtected(Permissions.ModifyPortalContent, 'deleteSubscriptions') security.declareProtected(Permissions.ModifyPortalContent, 'manage_deleteSubscription')
def deleteSubscriptions(self, id, RESPONSE=None): def manage_deleteSubscription(self, id, RESPONSE=None):
""" """
delete a subscription delete a subscription
""" """
...@@ -212,8 +212,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -212,8 +212,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('manageSubscriptions') RESPONSE.redirect('manageSubscriptions')
security.declareProtected(Permissions.ModifyPortalContent, 'ResetPublications') security.declareProtected(Permissions.ModifyPortalContent, 'manage_resetPublication')
def ResetPublications(self, id, RESPONSE=None): def manage_resetPublication(self, id, RESPONSE=None):
""" """
reset a publication reset a publication
""" """
...@@ -221,8 +221,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -221,8 +221,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('managePublications') RESPONSE.redirect('managePublications')
security.declareProtected(Permissions.ModifyPortalContent, 'ResetSubscriptions') security.declareProtected(Permissions.ModifyPortalContent, 'manage_resetSubscription')
def ResetSubscriptions(self, id, RESPONSE=None): def manage_resetSubscription(self, id, RESPONSE=None):
""" """
reset a subscription reset a subscription
XXX R -> r XXX R -> r
...@@ -258,8 +258,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -258,8 +258,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
return_list += [self.list_subscriptions[key]] return_list += [self.list_subscriptions[key]]
return return_list return return_list
security.declareProtected(Permissions.AccessContentsInformation,'getDomainList') security.declareProtected(Permissions.AccessContentsInformation,'')
def getDomainList(self): def getSynchronizationList(self):
""" """
Returns the list of subscriptions and publications Returns the list of subscriptions and publications
getSynchronizationList ? (mon choix) getSynchronizationList ? (mon choix)
...@@ -269,13 +269,14 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -269,13 +269,14 @@ class SynchronizationTool( UniqueObject, SimpleItem,
return self.getSubscriptionList() + self.getPublicationList() return self.getSubscriptionList() + self.getPublicationList()
security.declareProtected(Permissions.AccessContentsInformation,'getConflictList') security.declareProtected(Permissions.AccessContentsInformation,'getConflictList')
def getConflictList(self, path=None): def getConflictList(self, context=None):
""" """
Retrieve the list of all conflicts Retrieve the list of all conflicts
Here the list is as follow : Here the list is as follow :
[conflict_1,conflict2,...] where conflict_1 is like: [conflict_1,conflict2,...] where conflict_1 is like:
['publication',publication_id,object.getPath(),keyword,local_value,remote_value] ['publication',publication_id,object.getPath(),keyword,publisher_value,subscriber_value]
""" """
path = self.resolveContext(context)
conflict_list = [] conflict_list = []
for publication in self.getPublicationList(): for publication in self.getPublicationList():
for subscriber in publication.getSubscriberList(): for subscriber in publication.getSubscriberList():
...@@ -300,8 +301,17 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -300,8 +301,17 @@ class SynchronizationTool( UniqueObject, SimpleItem,
return new_list return new_list
return conflict_list return conflict_list
security.declareProtected(Permissions.AccessContentsInformation,'getDocumentConflictList')
def getDocumentConflictList(self, context=None):
"""
Retrieve the list of all conflicts for a given document
Well, this is the same thing as getConflictList with a path
"""
return self.getConflictList(context)
security.declareProtected(Permissions.AccessContentsInformation,'getSynchronizationState') security.declareProtected(Permissions.AccessContentsInformation,'getSynchronizationState')
def getSynchronizationState(self, path): def getSynchronizationState(self, context):
""" """
context : the context on which we are looking for state context : the context on which we are looking for state
...@@ -316,6 +326,7 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -316,6 +326,7 @@ class SynchronizationTool( UniqueObject, SimpleItem,
type -> '/titi/toto' or ('','titi', 'toto') or <Base instance 1562567> type -> '/titi/toto' or ('','titi', 'toto') or <Base instance 1562567>
object = self.resolveContext(context) (method to add) object = self.resolveContext(context) (method to add)
""" """
path = self.resolveContext(context)
conflict_list = self.getConflictList() conflict_list = self.getConflictList()
state_list= [] state_list= []
LOG('getSynchronizationState',0,'path: %s' % str(path)) LOG('getSynchronizationState',0,'path: %s' % str(path))
...@@ -323,7 +334,7 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -323,7 +334,7 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if conflict.getObjectPath() == path: if conflict.getObjectPath() == path:
LOG('getSynchronizationState',0,'found a conflict: %s' % str(conflict)) LOG('getSynchronizationState',0,'found a conflict: %s' % str(conflict))
state_list += [[conflict.getDomain(),self.CONFLICT]] state_list += [[conflict.getDomain(),self.CONFLICT]]
for domain in self.getDomainList(): for domain in self.getSynchronizationList():
destination = domain.getDestinationPath() destination = domain.getDestinationPath()
LOG('getSynchronizationState',0,'destination: %s' % str(destination)) LOG('getSynchronizationState',0,'destination: %s' % str(destination))
j_path = '/'.join(path) j_path = '/'.join(path)
...@@ -349,8 +360,8 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -349,8 +360,8 @@ class SynchronizationTool( UniqueObject, SimpleItem,
state_list += [[subscriber,state]] state_list += [[subscriber,state]]
return state_list return state_list
security.declareProtected(Permissions.ModifyPortalContent, 'applyLocalValue') security.declareProtected(Permissions.ModifyPortalContent, 'applyPublisherValue')
def applyLocalValue(self, conflict): def applyPublisherValue(self, conflict):
""" """
after a conflict resolution, we have decided after a conflict resolution, we have decided
to keep the local version of an object to keep the local version of an object
...@@ -372,8 +383,28 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -372,8 +383,28 @@ class SynchronizationTool( UniqueObject, SimpleItem,
if signature.getConflictList() == []: if signature.getConflictList() == []:
signature.setStatus(self.PUB_CONFLICT_MERGE) signature.setStatus(self.PUB_CONFLICT_MERGE)
security.declareProtected(Permissions.ModifyPortalContent, 'applyRemoteValue') security.declareProtected(Permissions.ModifyPortalContent, 'applyPublisherDocument')
def applyRemoteValue(self, conflict): def applyPublisherDocument(self, conflict):
"""
apply the publisher value for all conflict of the given document
"""
subscriber = conflict.getSubscriber()
for c in self.getConflictList(conflict.getObjectPath()):
if c.getSubscriber() == subscriber:
c.applyPublisherValue()
security.declareProtected(Permissions.ModifyPortalContent, 'applySubscriberDocument')
def applySubscriberDocument(self, conflict):
"""
apply the subscriber value for all conflict of the given document
"""
subscriber = conflict.getSubscriber()
for c in self.getConflictList(conflict.getObjectPath()):
if c.getSubscriber() == subscriber:
c.applySubscriberValue()
security.declareProtected(Permissions.ModifyPortalContent, 'applySubscriberValue')
def applySubscriberValue(self, conflict):
""" """
after a conflict resolution, we have decided after a conflict resolution, we have decided
to keep the local version of an object to keep the local version of an object
...@@ -398,7 +429,7 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -398,7 +429,7 @@ class SynchronizationTool( UniqueObject, SimpleItem,
the remote server the remote server
Suggestion: Suggestion:
manage_applyLocalValue XXX manage_applyPublisherValue XXX
Suggestion: Suggestion:
add global apply (not conflict per conflict) XXX add global apply (not conflict per conflict) XXX
...@@ -418,7 +449,7 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -418,7 +449,7 @@ class SynchronizationTool( UniqueObject, SimpleItem,
LOG('manageLocalValue',0,'found the keyword') LOG('manageLocalValue',0,'found the keyword')
if '/'.join(conflict.getObjectPath())==object_path: if '/'.join(conflict.getObjectPath())==object_path:
if conflict.getDomain().getSubscriptionUrl()==subscription_url: if conflict.getDomain().getSubscriptionUrl()==subscription_url:
conflict.applyLocalValue() conflict.applyPublisherValue()
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('manageConflicts') RESPONSE.redirect('manageConflicts')
...@@ -437,8 +468,26 @@ class SynchronizationTool( UniqueObject, SimpleItem, ...@@ -437,8 +468,26 @@ class SynchronizationTool( UniqueObject, SimpleItem,
LOG('manageLocalValue',0,'found the keyword') LOG('manageLocalValue',0,'found the keyword')
if '/'.join(conflict.getObjectPath())==object_path: if '/'.join(conflict.getObjectPath())==object_path:
if conflict.getDomain().getSubscriptionUrl()==subscription_url: if conflict.getDomain().getSubscriptionUrl()==subscription_url:
conflict.applyRemoteValue() conflict.applySubscriberValue()
if RESPONSE is not None: if RESPONSE is not None:
RESPONSE.redirect('manageConflicts') RESPONSE.redirect('manageConflicts')
def resolveContext(self, context):
"""
We try to return a path (like ('','erp5','foo') from the context.
Context can be :
- a path
- an object
- a string representing a path
"""
if context is None:
return context
elif type(context) is type(()):
return context
elif type(context) is type('a'):
return tuple(context.split('/'))
else:
return context.getPhysicalPath()
InitializeClass( SynchronizationTool ) InitializeClass( SynchronizationTool )
...@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<dtml-var manage_form_title> <dtml-var manage_form_title>
</dtml-let> </dtml-let>
<form action="addPublications" method="POST"> <form action="manage_addPublication" method="POST">
<table cellspacing="0" cellpadding="2" border="0"> <table cellspacing="0" cellpadding="2" border="0">
<tr> <tr>
<td align="left" valign="top"> <td align="left" valign="top">
......
...@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<dtml-var manage_form_title> <dtml-var manage_form_title>
</dtml-let> </dtml-let>
<form action="addSubscriptions" method="POST"> <form action="manage_addSubscription" method="POST">
<table cellspacing="0" cellpadding="2" border="0"> <table cellspacing="0" cellpadding="2" border="0">
<tr> <tr>
<td align="left" valign="top"> <td align="left" valign="top">
......
...@@ -34,21 +34,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -34,21 +34,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<tr> <tr>
<th align="left" valign="top"></th> <th align="left" valign="top"></th>
<th align="left" valign="top">Side</th> <th align="left" valign="top">Side</th>
<th align="left" valign="top">Id</th>
<th align="left" valign="top">Object path</th> <th align="left" valign="top">Object path</th>
<th align="left" valign="top">keyword</th> <th align="left" valign="top">Property Id</th>
<th align="left" valign="top">Local Value</th> <th align="left" valign="top">Local Value</th>
<th align="left" valign="top">Remote Value</th> <th align="left" valign="top">Remote Value</th>
</tr> </tr>
<dtml-in prefix="loop" expr="getConflictList()"> <dtml-in prefix="loop" expr="getConflictList()">
<tr> <tr>
<td align="left" valign="top"><a href="manageLocalValue?subscription_url=<dtml-var expr="loop_item.getDomain().getSubscriptionUrl()">&keyword=<dtml-var keyword>&object_path=<dtml-var "'/'.join(object_path)">">Local</a> <a href="manageRemoteValue?subscription_url=<dtml-var expr="loop_item.getDomain().getSubscriptionUrl()">&keyword=<dtml-var keyword>&object_path=<dtml-var "'/'.join(object_path)">">Remote</a></td> <td align="left" valign="top"><a href="manageLocalValue?subscription_url=<dtml-var expr="loop_item.getSubscriber().getSubscriptionUrl()">&property_id=<dtml-var expr="loop_item.getPropertyId()">&object_path=<dtml-var "'/'.join(object_path)">">Publisher</a> <a href="manageRemoteValue?subscription_url=<dtml-var expr="loop_item.getSubscriber().getSubscriptionUrl()">&property_id=<dtml-var expr="loop_item.getPropertyId()">&object_path=<dtml-var "'/'.join(object_path)">">Subscriber</a></td>
<td align="left" valign="top"><dtml-var expr="loop_item.getDomain().getSubscriptionUrl()"></td> <td align="left" valign="top"><dtml-var expr="loop_item.getSubscriber().getSubscriptionUrl()"></td>
<td align="left" valign="top"><dtml-var domain></td>
<td align="left" valign="top"><dtml-var "'/'.join(object_path)"></td> <td align="left" valign="top"><dtml-var "'/'.join(object_path)"></td>
<td align="left" valign="top"><dtml-var keyword></td> <td align="left" valign="top"><dtml-var expr="loop_item.getPropertyId()"></td>
<td align="left" valign="top"><dtml-var local_value></td> <td align="left" valign="top"><dtml-var expr="loop_item.getPublisherValue()"></td>
<td align="left" valign="top"><dtml-var remote_value></td> <td align="left" valign="top"><dtml-var expr="loop_item.getSubscriberValue()"></td>
</tr> </tr>
</dtml-in> </dtml-in>
</table> </table>
......
...@@ -29,13 +29,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -29,13 +29,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<dtml-var manage_page_header> <dtml-var manage_page_header>
<dtml-var manage_tabs> <dtml-var manage_tabs>
<form action="addPublicationsForm"> <form action="manage_addPublicationForm">
<input type="submit" name="addPublication:method" value="Add a publication"> <input type="submit" name="addPublication:method" value="Add a publication">
</form> </form>
<dtml-in getPublicationList> <dtml-in getPublicationList>
<h3>Publication <dtml-var sequence-index></br></h3> <h3>Publication <dtml-var sequence-index></br></h3>
<form action="editPublications" method="POST"> <form action="manage_editPublication" method="POST">
<table cellspacing="0" cellpadding="2" border="0"> <table cellspacing="0" cellpadding="2" border="0">
<tr> <tr>
<td align="left" valign="top"> <td align="left" valign="top">
...@@ -100,12 +100,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -100,12 +100,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
<!--input type="hidden" name="subscription" value="<dtml-var getSubscriptionList>" --> <!--input type="hidden" name="subscription" value="<dtml-var getSubscriptionList>" -->
</form> </form>
<form action="ResetPublications" method="POST"> <form action="manage_resetPublication" method="POST">
<td align="left" valign="top"> <td align="left" valign="top">
<input type="submit" value=" Reset "> <input type="submit" value=" Reset ">
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
</form> </form>
<form action="deletePublications" method="POST"> <form action="manage_deletePublication" method="POST">
<td align="left" valign="top"> <td align="left" valign="top">
<input type="submit" value=" Delete "> <input type="submit" value=" Delete ">
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
......
...@@ -29,13 +29,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -29,13 +29,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<dtml-var manage_page_header> <dtml-var manage_page_header>
<dtml-var manage_tabs> <dtml-var manage_tabs>
<form action="addSubscriptionsForm"> <form action="manage_addSubscriptionForm">
<input type="submit" name="addSubscription:method" value="Add a Subscription"> <input type="submit" name="addSubscription:method" value="Add a Subscription">
</form> </form>
<dtml-in getSubscriptionList> <dtml-in getSubscriptionList>
<h3>Subscription <dtml-var sequence-index></br></h3> <h3>Subscription <dtml-var sequence-index></br></h3>
<form action="editSubscriptions" method="POST"> <form action="manage_editSubscription" method="POST">
<table cellspacing="0" cellpadding="2" border="0"> <table cellspacing="0" cellpadding="2" border="0">
<tr> <tr>
<td align="left" valign="top"> <td align="left" valign="top">
...@@ -114,12 +114,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -114,12 +114,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
<input type="submit" value=" LastSync "> <input type="submit" value=" LastSync ">
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
</form> </form>
<form action="ResetSubscriptions" method="POST"> <form action="manage_resetSubscription" method="POST">
<td align="left" valign="top"> <td align="left" valign="top">
<input type="submit" value=" Reset "> <input type="submit" value=" Reset ">
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
</form> </form>
<form action="deleteSubscriptions" method="POST"> <form action="manage_deleteSubscription" method="POST">
<td align="left" valign="top"> <td align="left" valign="top">
<input type="submit" value=" Delete "> <input type="submit" value=" Delete ">
<input type="hidden" name="id" value="<dtml-var getId>" > <input type="hidden" name="id" value="<dtml-var getId>" >
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment