Conversation Bug: Copy page via sitemap does not generate new Conversation block/object

Permalink 0 0 Browser Info Environment
When you duplicate a page that has a Conversation block (by dragging a page to a new location in the sitemap and selecting "Copy"), no new Conversation block is created, instead the Conversation block on the duplicated page has the same block ID as the original Conversation on the original page.

To Replicate:

1. Add a Conversation block to a page.
2. Post a unique comment so you can identify the block
3. Using the sitemap, drag the page to another location and select "Copy".
4. View the new page.
5. The Conversation block on the new page will already have your "unique comment" from step 2.

If you review the database, no new Conversations have been created, and both blocks on both pages share the same block ID.

Status: New
benloh replied on at Permalink Reply
A slight revision:

I misunderstood how Block IDs work. So perhaps this is more of a general functionality question than a bug report per se.

As I understand it, duplicating a page will duplicate any blocks, in essence displaying the same block on two separate pages. As soon as you edit a block that block gets a new Block ID with the new version, but just on that specific page. So you can safely edit the block on the cloned page without affecting the block on the original page.

With Conversations, it makes sense that when you edit a Conversation block you don't want the Conversation ID to change, otherwise you'd lose your existing messages whenever you edited the block.

The problem is that when you first clone the page, the Conversation ID is cloned as well, so you end up with the same Conversation on both pages. This makes sense if you're aliasing a page, but doesn't really make sense when you're copying a page in order to slightly change the content.

Our use model is we have a series of e-learning lessons that we want to duplicate and slightly modify for a different audience. So we use the sitemap drag and copy mechanism to quickly copy the whole set of lessons (can be as high as 80 lessons in all). We expect the Conversation block to be created as unique blocks on the cloned copies, not aliases to the original conversation. That was how things worked with Concrete

The workaround is to delete and recreate the Conversation block on each page, but when you're cloning 80 pages, that adds a lot of extra work.

I'd welcome any suggestions/workarounds/hacks to fix.

concrete5 Environment Information

# concrete5 Version
Core Version - 8.4.3
Version Installed - 8.4.3
Database Version - 20180716000000

# concrete5 Packages
Login Return (1.0), Migration Tool (0.9.0), NeatNGSX (1.0.0), Parent Link (0.0.1), S3 Storage (3.0.3), Set Study Group (0.0.1), Vimeo Video (1.0.2)

# concrete5 Overrides
blocks/hello_world/add.php, blocks/hello_world/icon.png, blocks/hello_world/controller.php, blocks/hello_world/db.xml, blocks/hello_world/view.php, blocks/hello_world/edit.php, blocks/hello_world/form.php, blocks/hello_world, blocks/facilitator/controller.php, blocks/facilitator/view.php, blocks/facilitator/README.txt, blocks/facilitator, blocks/survey/view.php, blocks/survey, elements/conversation/, elements/conversation/count_header.php, elements/conversation/display.php, elements/conversation/, elements/conversation/message.php, elements/conversation, single_pages/dump.php, single_pages/ngsx_data_dump.php, tools/conversations/, tools/conversations/view_ajax.php, tools/conversations/, tools/conversations/add_message.php, tools/conversations, src/Conversation/Message/, src/Conversation/Message/FilteredMessageList.php, src/Conversation/Message/, src/Conversation/Message/FilteredThreadedList.php, src/Conversation/Message, src/Conversation

# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software

# Server API

# PHP Version

# PHP Extensions
cgi-fcgi, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, hash, iconv, intl, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, soap, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - -1
max_input_vars - 1000
memory_limit - 128M
post_max_size - 100M
upload_max_filesize - 100M
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - <i>no value</i>
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 10000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

Browser User-Agent String

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0